\hypertarget{class_ogre_1_1_default_work_queue_base}{}\section{Ogre\+:\+:Default\+Work\+Queue\+Base Class Reference}
\label{class_ogre_1_1_default_work_queue_base}\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}


Base for a general purpose request / response style background work queue.  




{\ttfamily \#include $<$Ogre\+Work\+Queue.\+h$>$}



Inheritance diagram for Ogre\+:\+:Default\+Work\+Queue\+Base\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=242pt]{class_ogre_1_1_default_work_queue_base__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
typedef unsigned long long int \hyperlink{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}{Request\+ID}
\begin{DoxyCompactList}\small\item\em Numeric identifier for a request. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_ogre_1_1_default_work_queue_base_ad8c782f13059f74607be6c01df9d10be}{Default\+Work\+Queue\+Base} (const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \&name=\hyperlink{group___general_gad842a4b416bd2f3245d2b44826a0aedc}{B\+L\+A\+N\+K\+S\+T\+R\+I\+NG})
\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
virtual \hyperlink{class_ogre_1_1_default_work_queue_base_a2e286e7a9a4d6b0818127510e98f0cc4}{$\sim$\+Default\+Work\+Queue\+Base} ()
\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_af981193d550a56ea146f7b3f544f1013}{\+\_\+process\+Next\+Request} ()
\begin{DoxyCompactList}\small\item\em Process the next request on the queue. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a4318c5efdb38bce717e93d848e84cece}{\+\_\+thread\+Main} ()=0
\begin{DoxyCompactList}\small\item\em Main function for each thread spawned. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a0c50d7ab19de75a3e378ba46aa8fbf9c}{abort\+All\+Requests} ()
\begin{DoxyCompactList}\small\item\em Abort all previously issued requests. \end{DoxyCompactList}\item 
virtual bool \hyperlink{class_ogre_1_1_default_work_queue_base_a388ad6e7277319953b9a9982fa2cf4d2}{abort\+Pending\+Request} (\hyperlink{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}{Request\+ID} id)
\begin{DoxyCompactList}\small\item\em Abort request if it is not being processed currently. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_ac79ce136b644d7b44b55f4e6ec2542a2}{abort\+Pending\+Requests\+By\+Channel} (\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} channel)
\begin{DoxyCompactList}\small\item\em Abort all previously issued requests in a given channel. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a634fdd65c89267fc6aeca8e8f6cf5446}{abort\+Request} (\hyperlink{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}{Request\+ID} id)
\begin{DoxyCompactList}\small\item\em Abort a previously issued request. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_ae8cf46d021a09310d1ab96aa1a2c0d08}{abort\+Requests\+By\+Channel} (\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} channel)
\begin{DoxyCompactList}\small\item\em Abort all previously issued requests in a given channel. \end{DoxyCompactList}\item 
virtual \hyperlink{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}{Request\+ID} \hyperlink{class_ogre_1_1_default_work_queue_base_aca9fadb9513b1c44286aeb857615a18f}{add\+Request} (\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} channel, \hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} request\+Type, const \hyperlink{class_ogre_1_1_any}{Any} \&r\+Data, \hyperlink{namespace_ogre_a119732ea9d1e88bbddc47b4ac0fa21cb}{uint8} retry\+Count=0, bool force\+Synchronous=false, bool idle\+Thread=false)
\begin{DoxyCompactList}\small\item\em Add a new request to the queue. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a7fc21f1afa5edb2a919f8ba2febfb1a3}{add\+Request\+Handler} (\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} channel, \hyperlink{class_ogre_1_1_work_queue_1_1_request_handler}{Request\+Handler} $\ast$rh)
\begin{DoxyCompactList}\small\item\em Add a request handler instance to the queue. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a9e338627cd72591048b9de5a5f4f9770}{add\+Response\+Handler} (\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} channel, \hyperlink{class_ogre_1_1_work_queue_1_1_response_handler}{Response\+Handler} $\ast$rh)
\begin{DoxyCompactList}\small\item\em Add a response handler instance to the queue. \end{DoxyCompactList}\item 
virtual \hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} \hyperlink{class_ogre_1_1_work_queue_a9a550b2e870c3cf2fb7dc6732ceed3e5}{get\+Channel} (const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \&channel\+Name)
\begin{DoxyCompactList}\small\item\em Get a channel ID for a given channel name. \end{DoxyCompactList}\item 
const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \& \hyperlink{class_ogre_1_1_default_work_queue_base_a21e659d67e6c2512c78e0fcb987d6d3c}{get\+Name} () const
\begin{DoxyCompactList}\small\item\em Get the name of the work queue. \end{DoxyCompactList}\item 
virtual bool \hyperlink{class_ogre_1_1_default_work_queue_base_ab49caa9d2a8b18cfb2e9beccd41bdd22}{get\+Requests\+Accepted} () const
\begin{DoxyCompactList}\small\item\em Returns whether requests are being accepted right now. \end{DoxyCompactList}\item 
virtual unsigned long \hyperlink{class_ogre_1_1_default_work_queue_base_a92bfbc2f99623e8df8dd2d611afda1ae}{get\+Response\+Processing\+Time\+Limit} () const
\begin{DoxyCompactList}\small\item\em Get the time limit imposed on the processing of responses in a single frame, in milliseconds (0 indicates no limit). \end{DoxyCompactList}\item 
virtual bool \hyperlink{class_ogre_1_1_default_work_queue_base_abc3c6f7c29d30bb833a94c516560016c}{get\+Workers\+Can\+Access\+Render\+System} () const
\begin{DoxyCompactList}\small\item\em Get whether worker threads will be allowed to access render system resources. \end{DoxyCompactList}\item 
virtual size\+\_\+t \hyperlink{class_ogre_1_1_default_work_queue_base_ac0573403767b65a85dc8b13279fc3375}{get\+Worker\+Thread\+Count} () const
\begin{DoxyCompactList}\small\item\em Get the number of worker threads that this queue will start when \hyperlink{class_ogre_1_1_work_queue_ad6d7aeeb4b1e4e8eed931cb17d63add3}{startup()} is called. \end{DoxyCompactList}\item 
virtual bool \hyperlink{class_ogre_1_1_default_work_queue_base_aa8530de81120f7820964029b8de88972}{is\+Paused} () const
\begin{DoxyCompactList}\small\item\em Return whether the queue is paused ie not sending more work to workers. \end{DoxyCompactList}\item 
virtual bool \hyperlink{class_ogre_1_1_default_work_queue_base_a1654469715e0e622018a07bb7d82e998}{is\+Shutting\+Down} () const
\begin{DoxyCompactList}\small\item\em Returns whether the queue is trying to shut down. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a09a2d91f22689b5aad7967cfb799c63e}{process\+Responses} ()
\begin{DoxyCompactList}\small\item\em Process the responses in the queue. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a1f0847f5d8a4f9e4703a390acacfaa84}{remove\+Request\+Handler} (\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} channel, \hyperlink{class_ogre_1_1_work_queue_1_1_request_handler}{Request\+Handler} $\ast$rh)
\begin{DoxyCompactList}\small\item\em Remove a request handler. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_ad8b1cec781199a65accf0024acc2c18a}{remove\+Response\+Handler} (\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} channel, \hyperlink{class_ogre_1_1_work_queue_1_1_response_handler}{Response\+Handler} $\ast$rh)
\begin{DoxyCompactList}\small\item\em Remove a Response handler. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a7f471c07b8f0fdd002d6c299750a1578}{set\+Paused} (bool pause)
\begin{DoxyCompactList}\small\item\em Set whether to pause further processing of any requests. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a291e7c92efb374ec208c680375edd2ce}{set\+Requests\+Accepted} (bool accept)
\begin{DoxyCompactList}\small\item\em Set whether to accept new requests or not. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a7b7a4119647b82187af2341d96f51e3b}{set\+Response\+Processing\+Time\+Limit} (unsigned long ms)
\begin{DoxyCompactList}\small\item\em Set the time limit imposed on the processing of responses in a single frame, in milliseconds (0 indicates no limit). \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a59458ab8807c99c478fe0a62c750c31d}{set\+Workers\+Can\+Access\+Render\+System} (bool access)
\begin{DoxyCompactList}\small\item\em Set whether worker threads will be allowed to access render system resources. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_default_work_queue_base_a7edecae3229cfb6616774688070eeffa}{set\+Worker\+Thread\+Count} (size\+\_\+t c)
\begin{DoxyCompactList}\small\item\em Set the number of worker threads that this queue will start when \hyperlink{class_ogre_1_1_work_queue_ad6d7aeeb4b1e4e8eed931cb17d63add3}{startup()} is called (default 1). \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_work_queue_a42d64d8891849878e3d1afb66fa0ce19}{shutdown} ()=0
\begin{DoxyCompactList}\small\item\em Shut down the queue. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_work_queue_ad6d7aeeb4b1e4e8eed931cb17d63add3}{startup} (bool force\+Restart=true)=0
\begin{DoxyCompactList}\small\item\em Start up the queue with the options that have been set. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Base for a general purpose request / response style background work queue. 

\subsection{Member Typedef Documentation}
\mbox{\Hypertarget{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}\label{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!Request\+ID@{Request\+ID}}
\index{Request\+ID@{Request\+ID}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{Request\+ID}{RequestID}}
{\footnotesize\ttfamily typedef unsigned long long int \hyperlink{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}{Ogre\+::\+Work\+Queue\+::\+Request\+ID}\hspace{0.3cm}{\ttfamily [inherited]}}



Numeric identifier for a request. 



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_ad8c782f13059f74607be6c01df9d10be}\label{class_ogre_1_1_default_work_queue_base_ad8c782f13059f74607be6c01df9d10be}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!Default\+Work\+Queue\+Base@{Default\+Work\+Queue\+Base}}
\index{Default\+Work\+Queue\+Base@{Default\+Work\+Queue\+Base}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{Default\+Work\+Queue\+Base()}{DefaultWorkQueueBase()}}
{\footnotesize\ttfamily Ogre\+::\+Default\+Work\+Queue\+Base\+::\+Default\+Work\+Queue\+Base (\begin{DoxyParamCaption}\item[{const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \&}]{name = {\ttfamily \hyperlink{group___general_gad842a4b416bd2f3245d2b44826a0aedc}{B\+L\+A\+N\+K\+S\+T\+R\+I\+NG}} }\end{DoxyParamCaption})}



Constructor. 

Call \hyperlink{class_ogre_1_1_work_queue_ad6d7aeeb4b1e4e8eed931cb17d63add3}{startup()} to initialise. 
\begin{DoxyParams}{Parameters}
{\em name} & Optional name, just helps to identify logging output \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a2e286e7a9a4d6b0818127510e98f0cc4}\label{class_ogre_1_1_default_work_queue_base_a2e286e7a9a4d6b0818127510e98f0cc4}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!````~Default\+Work\+Queue\+Base@{$\sim$\+Default\+Work\+Queue\+Base}}
\index{````~Default\+Work\+Queue\+Base@{$\sim$\+Default\+Work\+Queue\+Base}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{$\sim$\+Default\+Work\+Queue\+Base()}{~DefaultWorkQueueBase()}}
{\footnotesize\ttfamily virtual Ogre\+::\+Default\+Work\+Queue\+Base\+::$\sim$\+Default\+Work\+Queue\+Base (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



\subsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a21e659d67e6c2512c78e0fcb987d6d3c}\label{class_ogre_1_1_default_work_queue_base_a21e659d67e6c2512c78e0fcb987d6d3c}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!get\+Name@{get\+Name}}
\index{get\+Name@{get\+Name}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{get\+Name()}{getName()}}
{\footnotesize\ttfamily const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String}\& Ogre\+::\+Default\+Work\+Queue\+Base\+::get\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}



Get the name of the work queue. 

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_ac0573403767b65a85dc8b13279fc3375}\label{class_ogre_1_1_default_work_queue_base_ac0573403767b65a85dc8b13279fc3375}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!get\+Worker\+Thread\+Count@{get\+Worker\+Thread\+Count}}
\index{get\+Worker\+Thread\+Count@{get\+Worker\+Thread\+Count}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{get\+Worker\+Thread\+Count()}{getWorkerThreadCount()}}
{\footnotesize\ttfamily virtual size\+\_\+t Ogre\+::\+Default\+Work\+Queue\+Base\+::get\+Worker\+Thread\+Count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Get the number of worker threads that this queue will start when \hyperlink{class_ogre_1_1_work_queue_ad6d7aeeb4b1e4e8eed931cb17d63add3}{startup()} is called. 

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a7edecae3229cfb6616774688070eeffa}\label{class_ogre_1_1_default_work_queue_base_a7edecae3229cfb6616774688070eeffa}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!set\+Worker\+Thread\+Count@{set\+Worker\+Thread\+Count}}
\index{set\+Worker\+Thread\+Count@{set\+Worker\+Thread\+Count}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{set\+Worker\+Thread\+Count()}{setWorkerThreadCount()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::set\+Worker\+Thread\+Count (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{c }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Set the number of worker threads that this queue will start when \hyperlink{class_ogre_1_1_work_queue_ad6d7aeeb4b1e4e8eed931cb17d63add3}{startup()} is called (default 1). 

Calling this will have no effect unless the queue is shut down and restarted. \mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_abc3c6f7c29d30bb833a94c516560016c}\label{class_ogre_1_1_default_work_queue_base_abc3c6f7c29d30bb833a94c516560016c}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!get\+Workers\+Can\+Access\+Render\+System@{get\+Workers\+Can\+Access\+Render\+System}}
\index{get\+Workers\+Can\+Access\+Render\+System@{get\+Workers\+Can\+Access\+Render\+System}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{get\+Workers\+Can\+Access\+Render\+System()}{getWorkersCanAccessRenderSystem()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+Default\+Work\+Queue\+Base\+::get\+Workers\+Can\+Access\+Render\+System (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Get whether worker threads will be allowed to access render system resources. 

Accessing render system resources from a separate thread can require that a context is maintained for that thread. Also, it requires that the render system is running in threadsafe mode, which only happens when O\+G\+R\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+S\+U\+P\+P\+O\+RT=1. This option defaults to false, which means that threads can not use G\+PU resources, and the render system can work in non-\/threadsafe mode, which is more efficient. \mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a59458ab8807c99c478fe0a62c750c31d}\label{class_ogre_1_1_default_work_queue_base_a59458ab8807c99c478fe0a62c750c31d}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!set\+Workers\+Can\+Access\+Render\+System@{set\+Workers\+Can\+Access\+Render\+System}}
\index{set\+Workers\+Can\+Access\+Render\+System@{set\+Workers\+Can\+Access\+Render\+System}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{set\+Workers\+Can\+Access\+Render\+System()}{setWorkersCanAccessRenderSystem()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::set\+Workers\+Can\+Access\+Render\+System (\begin{DoxyParamCaption}\item[{bool}]{access }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Set whether worker threads will be allowed to access render system resources. 

Accessing render system resources from a separate thread can require that a context is maintained for that thread. Also, it requires that the render system is running in threadsafe mode, which only happens when O\+G\+R\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+S\+U\+P\+P\+O\+RT=1. This option defaults to false, which means that threads can not use G\+PU resources, and the render system can work in non-\/threadsafe mode, which is more efficient. Calling this will have no effect unless the queue is shut down and restarted. \mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_af981193d550a56ea146f7b3f544f1013}\label{class_ogre_1_1_default_work_queue_base_af981193d550a56ea146f7b3f544f1013}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!\+\_\+process\+Next\+Request@{\+\_\+process\+Next\+Request}}
\index{\+\_\+process\+Next\+Request@{\+\_\+process\+Next\+Request}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{\+\_\+process\+Next\+Request()}{\_processNextRequest()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::\+\_\+process\+Next\+Request (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Process the next request on the queue. 

\begin{DoxyRemark}{Remarks}
This method is public, but only intended for advanced users to call. The only reason you would call this, is if you were using your own thread to drive the worker processing. The thread calling this method will be the thread used to call the Request\+Handler. 
\end{DoxyRemark}
\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a4318c5efdb38bce717e93d848e84cece}\label{class_ogre_1_1_default_work_queue_base_a4318c5efdb38bce717e93d848e84cece}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!\+\_\+thread\+Main@{\+\_\+thread\+Main}}
\index{\+\_\+thread\+Main@{\+\_\+thread\+Main}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{\+\_\+thread\+Main()}{\_threadMain()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::\+\_\+thread\+Main (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Main function for each thread spawned. 



Implemented in \hyperlink{class_ogre_1_1_default_work_queue_a087a56b1cd59c19193e8012a8dbcd3b3}{Ogre\+::\+Default\+Work\+Queue}, and \hyperlink{class_ogre_1_1_default_work_queue_a087a56b1cd59c19193e8012a8dbcd3b3}{Ogre\+::\+Default\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a1654469715e0e622018a07bb7d82e998}\label{class_ogre_1_1_default_work_queue_base_a1654469715e0e622018a07bb7d82e998}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!is\+Shutting\+Down@{is\+Shutting\+Down}}
\index{is\+Shutting\+Down@{is\+Shutting\+Down}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{is\+Shutting\+Down()}{isShuttingDown()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+Default\+Work\+Queue\+Base\+::is\+Shutting\+Down (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Returns whether the queue is trying to shut down. 

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a7fc21f1afa5edb2a919f8ba2febfb1a3}\label{class_ogre_1_1_default_work_queue_base_a7fc21f1afa5edb2a919f8ba2febfb1a3}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!add\+Request\+Handler@{add\+Request\+Handler}}
\index{add\+Request\+Handler@{add\+Request\+Handler}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{add\+Request\+Handler()}{addRequestHandler()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::add\+Request\+Handler (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{channel,  }\item[{\hyperlink{class_ogre_1_1_work_queue_1_1_request_handler}{Request\+Handler} $\ast$}]{rh }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Add a request handler instance to the queue. 

\begin{DoxyRemark}{Remarks}
Every queue must have at least one request handler instance for each channel in which requests are raised. If you add more than one handler per channel, then you must implement can\+Handle\+Request differently in each if you wish them to respond to different requests. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em channel} & The channel for requests you want to handle \\
\hline
{\em rh} & Your handler \\
\hline
\end{DoxyParams}


Implements \hyperlink{class_ogre_1_1_work_queue_aa0687acbbe081ba2a3ae3c3bdbfca6ff}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a1f0847f5d8a4f9e4703a390acacfaa84}\label{class_ogre_1_1_default_work_queue_base_a1f0847f5d8a4f9e4703a390acacfaa84}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!remove\+Request\+Handler@{remove\+Request\+Handler}}
\index{remove\+Request\+Handler@{remove\+Request\+Handler}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{remove\+Request\+Handler()}{removeRequestHandler()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::remove\+Request\+Handler (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{channel,  }\item[{\hyperlink{class_ogre_1_1_work_queue_1_1_request_handler}{Request\+Handler} $\ast$}]{rh }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Remove a request handler. 



Implements \hyperlink{class_ogre_1_1_work_queue_aae885bf0b8988f2353659d896bfa6b78}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a9e338627cd72591048b9de5a5f4f9770}\label{class_ogre_1_1_default_work_queue_base_a9e338627cd72591048b9de5a5f4f9770}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!add\+Response\+Handler@{add\+Response\+Handler}}
\index{add\+Response\+Handler@{add\+Response\+Handler}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{add\+Response\+Handler()}{addResponseHandler()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::add\+Response\+Handler (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{channel,  }\item[{\hyperlink{class_ogre_1_1_work_queue_1_1_response_handler}{Response\+Handler} $\ast$}]{rh }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Add a response handler instance to the queue. 

\begin{DoxyRemark}{Remarks}
Every queue must have at least one response handler instance for each channel in which requests are raised. If you add more than one, then you must implement can\+Handle\+Response differently in each if you wish them to respond to different responses. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em channel} & The channel for responses you want to handle \\
\hline
{\em rh} & Your handler \\
\hline
\end{DoxyParams}


Implements \hyperlink{class_ogre_1_1_work_queue_ac7a22c908d9859d29c22fc8b73a7c735}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_ad8b1cec781199a65accf0024acc2c18a}\label{class_ogre_1_1_default_work_queue_base_ad8b1cec781199a65accf0024acc2c18a}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!remove\+Response\+Handler@{remove\+Response\+Handler}}
\index{remove\+Response\+Handler@{remove\+Response\+Handler}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{remove\+Response\+Handler()}{removeResponseHandler()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::remove\+Response\+Handler (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{channel,  }\item[{\hyperlink{class_ogre_1_1_work_queue_1_1_response_handler}{Response\+Handler} $\ast$}]{rh }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Remove a Response handler. 



Implements \hyperlink{class_ogre_1_1_work_queue_ab8160c231f7f7706030432c3c585e589}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_aca9fadb9513b1c44286aeb857615a18f}\label{class_ogre_1_1_default_work_queue_base_aca9fadb9513b1c44286aeb857615a18f}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!add\+Request@{add\+Request}}
\index{add\+Request@{add\+Request}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{add\+Request()}{addRequest()}}
{\footnotesize\ttfamily virtual \hyperlink{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}{Request\+ID} Ogre\+::\+Default\+Work\+Queue\+Base\+::add\+Request (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{channel,  }\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{request\+Type,  }\item[{const \hyperlink{class_ogre_1_1_any}{Any} \&}]{r\+Data,  }\item[{\hyperlink{namespace_ogre_a119732ea9d1e88bbddc47b4ac0fa21cb}{uint8}}]{retry\+Count = {\ttfamily 0},  }\item[{bool}]{force\+Synchronous = {\ttfamily false},  }\item[{bool}]{idle\+Thread = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Add a new request to the queue. 


\begin{DoxyParams}{Parameters}
{\em channel} & The channel this request will go into = 0; the channel is the top-\/level categorisation of the request \\
\hline
{\em request\+Type} & An identifier that\textquotesingle{}s unique within this queue which identifies the type of the request (user decides the actual value) \\
\hline
{\em r\+Data} & The data required by the request process. \\
\hline
{\em retry\+Count} & The number of times the request should be retried if it fails. \\
\hline
{\em force\+Synchronous} & Forces the request to be processed immediately even if threading is enabled. \\
\hline
{\em idle\+Thread} & Request should be processed on the idle thread. Idle requests will be processed on a single worker thread. You should use this in the following situations\+:
\begin{DoxyEnumerate}
\item If a request handler can\textquotesingle{}t process multiple requests in parallel.
\item If you add lot of requests, but you want to keep the game fast.
\item If you have lot of more important threads. (example\+: physics). 
\end{DoxyEnumerate}\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The ID of the request that has been added 
\end{DoxyReturn}


Implements \hyperlink{class_ogre_1_1_work_queue_ac8abc5abf22d01f0fd86efb43f5f0d39}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a634fdd65c89267fc6aeca8e8f6cf5446}\label{class_ogre_1_1_default_work_queue_base_a634fdd65c89267fc6aeca8e8f6cf5446}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!abort\+Request@{abort\+Request}}
\index{abort\+Request@{abort\+Request}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{abort\+Request()}{abortRequest()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::abort\+Request (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}{Request\+ID}}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Abort a previously issued request. 

If the request is still waiting to be processed, it will be removed from the queue. 
\begin{DoxyParams}{Parameters}
{\em id} & The ID of the previously issued request. \\
\hline
\end{DoxyParams}


Implements \hyperlink{class_ogre_1_1_work_queue_a5c3f58ddc03546ba2a5c510cbca0aae6}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a388ad6e7277319953b9a9982fa2cf4d2}\label{class_ogre_1_1_default_work_queue_base_a388ad6e7277319953b9a9982fa2cf4d2}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!abort\+Pending\+Request@{abort\+Pending\+Request}}
\index{abort\+Pending\+Request@{abort\+Pending\+Request}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{abort\+Pending\+Request()}{abortPendingRequest()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+Default\+Work\+Queue\+Base\+::abort\+Pending\+Request (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_work_queue_a1908257e726af6caa80f1a6cd5682d76}{Request\+ID}}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Abort request if it is not being processed currently. 


\begin{DoxyParams}{Parameters}
{\em id} & The ID of the previously issued request.\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em true} & If request was aborted successfully. \\
\hline
{\em false} & If request is already being processed so it can not be aborted. \\
\hline
\end{DoxyRetVals}


Implements \hyperlink{class_ogre_1_1_work_queue_a96f12a032fddb17f2fc6a0f519c5d479}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_ae8cf46d021a09310d1ab96aa1a2c0d08}\label{class_ogre_1_1_default_work_queue_base_ae8cf46d021a09310d1ab96aa1a2c0d08}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!abort\+Requests\+By\+Channel@{abort\+Requests\+By\+Channel}}
\index{abort\+Requests\+By\+Channel@{abort\+Requests\+By\+Channel}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{abort\+Requests\+By\+Channel()}{abortRequestsByChannel()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::abort\+Requests\+By\+Channel (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{channel }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Abort all previously issued requests in a given channel. 

\hyperlink{class_ogre_1_1_any}{Any} requests still waiting to be processed of the given channel, will be removed from the queue. Requests which are processed, but response handler is not called will also be removed. 
\begin{DoxyParams}{Parameters}
{\em channel} & The type of request to be aborted \\
\hline
\end{DoxyParams}


Implements \hyperlink{class_ogre_1_1_work_queue_ac885db05201bde87b65c27e1b7cf8af4}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_ac79ce136b644d7b44b55f4e6ec2542a2}\label{class_ogre_1_1_default_work_queue_base_ac79ce136b644d7b44b55f4e6ec2542a2}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!abort\+Pending\+Requests\+By\+Channel@{abort\+Pending\+Requests\+By\+Channel}}
\index{abort\+Pending\+Requests\+By\+Channel@{abort\+Pending\+Requests\+By\+Channel}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{abort\+Pending\+Requests\+By\+Channel()}{abortPendingRequestsByChannel()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::abort\+Pending\+Requests\+By\+Channel (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{channel }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Abort all previously issued requests in a given channel. 

\hyperlink{class_ogre_1_1_any}{Any} requests still waiting to be processed of the given channel, will be removed from the queue. It will not remove requests, where the request handler is already called. 
\begin{DoxyParams}{Parameters}
{\em channel} & The type of request to be aborted \\
\hline
\end{DoxyParams}


Implements \hyperlink{class_ogre_1_1_work_queue_afe710c55a31c661f738abb2cc5c7303e}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a0c50d7ab19de75a3e378ba46aa8fbf9c}\label{class_ogre_1_1_default_work_queue_base_a0c50d7ab19de75a3e378ba46aa8fbf9c}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!abort\+All\+Requests@{abort\+All\+Requests}}
\index{abort\+All\+Requests@{abort\+All\+Requests}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{abort\+All\+Requests()}{abortAllRequests()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::abort\+All\+Requests (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Abort all previously issued requests. 

\hyperlink{class_ogre_1_1_any}{Any} requests still waiting to be processed will be removed from the queue. \hyperlink{class_ogre_1_1_any}{Any} requests that are being processed will still complete. 

Implements \hyperlink{class_ogre_1_1_work_queue_aae92816d648918690f76f6fe14f125c0}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a7f471c07b8f0fdd002d6c299750a1578}\label{class_ogre_1_1_default_work_queue_base_a7f471c07b8f0fdd002d6c299750a1578}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!set\+Paused@{set\+Paused}}
\index{set\+Paused@{set\+Paused}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{set\+Paused()}{setPaused()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::set\+Paused (\begin{DoxyParamCaption}\item[{bool}]{pause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Set whether to pause further processing of any requests. 

If true, any further requests will simply be queued and not processed until set\+Paused(false) is called. \hyperlink{class_ogre_1_1_any}{Any} requests which are in the process of being worked on already will still continue. 

Implements \hyperlink{class_ogre_1_1_work_queue_a414eb873108df39549cc79d8246994d3}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_aa8530de81120f7820964029b8de88972}\label{class_ogre_1_1_default_work_queue_base_aa8530de81120f7820964029b8de88972}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!is\+Paused@{is\+Paused}}
\index{is\+Paused@{is\+Paused}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{is\+Paused()}{isPaused()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+Default\+Work\+Queue\+Base\+::is\+Paused (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Return whether the queue is paused ie not sending more work to workers. 



Implements \hyperlink{class_ogre_1_1_work_queue_a79a71d8b70010d28043a2fef2c3e2cf8}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a291e7c92efb374ec208c680375edd2ce}\label{class_ogre_1_1_default_work_queue_base_a291e7c92efb374ec208c680375edd2ce}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!set\+Requests\+Accepted@{set\+Requests\+Accepted}}
\index{set\+Requests\+Accepted@{set\+Requests\+Accepted}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{set\+Requests\+Accepted()}{setRequestsAccepted()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::set\+Requests\+Accepted (\begin{DoxyParamCaption}\item[{bool}]{accept }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Set whether to accept new requests or not. 

If true, requests are added to the queue as usual. If false, requests are silently ignored until set\+Requests\+Accepted(true) is called. 

Implements \hyperlink{class_ogre_1_1_work_queue_a1fd22283445612a4d0e020917f1582b9}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_ab49caa9d2a8b18cfb2e9beccd41bdd22}\label{class_ogre_1_1_default_work_queue_base_ab49caa9d2a8b18cfb2e9beccd41bdd22}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!get\+Requests\+Accepted@{get\+Requests\+Accepted}}
\index{get\+Requests\+Accepted@{get\+Requests\+Accepted}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{get\+Requests\+Accepted()}{getRequestsAccepted()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+Default\+Work\+Queue\+Base\+::get\+Requests\+Accepted (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Returns whether requests are being accepted right now. 



Implements \hyperlink{class_ogre_1_1_work_queue_abc8685f2e0f4921468f8cf7cb5f2b2b3}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a09a2d91f22689b5aad7967cfb799c63e}\label{class_ogre_1_1_default_work_queue_base_a09a2d91f22689b5aad7967cfb799c63e}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!process\+Responses@{process\+Responses}}
\index{process\+Responses@{process\+Responses}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{process\+Responses()}{processResponses()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::process\+Responses (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Process the responses in the queue. 

\begin{DoxyRemark}{Remarks}
This method is public, and must be called from the main render thread to \textquotesingle{}pump\textquotesingle{} responses through the system. The method will usually try to clear all responses before returning = 0; however, you can specify a time limit on the response processing to limit the impact of spikes in demand by calling set\+Response\+Processing\+Time\+Limit. 
\end{DoxyRemark}


Implements \hyperlink{class_ogre_1_1_work_queue_aa4c64bf597bd87860dc297f0ac7af463}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a92bfbc2f99623e8df8dd2d611afda1ae}\label{class_ogre_1_1_default_work_queue_base_a92bfbc2f99623e8df8dd2d611afda1ae}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!get\+Response\+Processing\+Time\+Limit@{get\+Response\+Processing\+Time\+Limit}}
\index{get\+Response\+Processing\+Time\+Limit@{get\+Response\+Processing\+Time\+Limit}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{get\+Response\+Processing\+Time\+Limit()}{getResponseProcessingTimeLimit()}}
{\footnotesize\ttfamily virtual unsigned long Ogre\+::\+Default\+Work\+Queue\+Base\+::get\+Response\+Processing\+Time\+Limit (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Get the time limit imposed on the processing of responses in a single frame, in milliseconds (0 indicates no limit). 



Implements \hyperlink{class_ogre_1_1_work_queue_a9b605e17372e8a45eab9471955979d4a}{Ogre\+::\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_default_work_queue_base_a7b7a4119647b82187af2341d96f51e3b}\label{class_ogre_1_1_default_work_queue_base_a7b7a4119647b82187af2341d96f51e3b}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!set\+Response\+Processing\+Time\+Limit@{set\+Response\+Processing\+Time\+Limit}}
\index{set\+Response\+Processing\+Time\+Limit@{set\+Response\+Processing\+Time\+Limit}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{set\+Response\+Processing\+Time\+Limit()}{setResponseProcessingTimeLimit()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Default\+Work\+Queue\+Base\+::set\+Response\+Processing\+Time\+Limit (\begin{DoxyParamCaption}\item[{unsigned long}]{ms }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Set the time limit imposed on the processing of responses in a single frame, in milliseconds (0 indicates no limit). 

This sets the maximum time that will be spent in \hyperlink{class_ogre_1_1_default_work_queue_base_a09a2d91f22689b5aad7967cfb799c63e}{process\+Responses()} in a single frame. The default is 8ms. 

Implements \hyperlink{class_ogre_1_1_work_queue_a9b631e09dcaafb4a341eff307f00feca}{Ogre\+::\+Work\+Queue}.



References Ogre\+::\+Work\+Queue\+::\+Request\+Handler\+::can\+Handle\+Request(), Ogre\+::\+Work\+Queue\+::\+Request\+Handler\+::handle\+Request(), O\+G\+R\+E\+\_\+\+W\+Q\+\_\+\+L\+O\+C\+K\+\_\+\+R\+W\+\_\+\+M\+U\+T\+E\+X\+\_\+\+R\+E\+AD, O\+G\+R\+E\+\_\+\+W\+Q\+\_\+\+L\+O\+C\+K\+\_\+\+R\+W\+\_\+\+M\+U\+T\+E\+X\+\_\+\+W\+R\+I\+TE, O\+G\+R\+E\+\_\+\+W\+Q\+\_\+\+M\+U\+T\+EX, and O\+G\+R\+E\+\_\+\+W\+Q\+\_\+\+R\+W\+\_\+\+M\+U\+T\+EX.

\mbox{\Hypertarget{class_ogre_1_1_work_queue_ad6d7aeeb4b1e4e8eed931cb17d63add3}\label{class_ogre_1_1_work_queue_ad6d7aeeb4b1e4e8eed931cb17d63add3}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!startup@{startup}}
\index{startup@{startup}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{startup()}{startup()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Work\+Queue\+::startup (\begin{DoxyParamCaption}\item[{bool}]{force\+Restart = {\ttfamily true} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}, {\ttfamily [inherited]}}



Start up the queue with the options that have been set. 


\begin{DoxyParams}{Parameters}
{\em force\+Restart} & If the queue is already running, whether to shut it down and restart. \\
\hline
\end{DoxyParams}


Implemented in \hyperlink{class_ogre_1_1_default_work_queue_a1a0f33724027da3501c0c8b8182480cf}{Ogre\+::\+Default\+Work\+Queue}, and \hyperlink{class_ogre_1_1_default_work_queue_a1a0f33724027da3501c0c8b8182480cf}{Ogre\+::\+Default\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_work_queue_a42d64d8891849878e3d1afb66fa0ce19}\label{class_ogre_1_1_work_queue_a42d64d8891849878e3d1afb66fa0ce19}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!shutdown@{shutdown}}
\index{shutdown@{shutdown}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{shutdown()}{shutdown()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Work\+Queue\+::shutdown (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}, {\ttfamily [inherited]}}



Shut down the queue. 



Implemented in \hyperlink{class_ogre_1_1_default_work_queue_a74aec1a66a9d5a5639a62ed33747eb76}{Ogre\+::\+Default\+Work\+Queue}, and \hyperlink{class_ogre_1_1_default_work_queue_a74aec1a66a9d5a5639a62ed33747eb76}{Ogre\+::\+Default\+Work\+Queue}.

\mbox{\Hypertarget{class_ogre_1_1_work_queue_a9a550b2e870c3cf2fb7dc6732ceed3e5}\label{class_ogre_1_1_work_queue_a9a550b2e870c3cf2fb7dc6732ceed3e5}} 
\index{Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}!get\+Channel@{get\+Channel}}
\index{get\+Channel@{get\+Channel}!Ogre\+::\+Default\+Work\+Queue\+Base@{Ogre\+::\+Default\+Work\+Queue\+Base}}
\subsubsection{\texorpdfstring{get\+Channel()}{getChannel()}}
{\footnotesize\ttfamily virtual \hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} Ogre\+::\+Work\+Queue\+::get\+Channel (\begin{DoxyParamCaption}\item[{const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \&}]{channel\+Name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [inherited]}}



Get a channel ID for a given channel name. 

\begin{DoxyRemark}{Remarks}
Channels are assigned on a first-\/come, first-\/served basis and are not persistent across application instances. This method allows applications to not worry about channel clashes through manually assigned channel numbers. 
\end{DoxyRemark}


The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
\hyperlink{_ogre_work_queue_8h}{Ogre\+Work\+Queue.\+h}\end{DoxyCompactItemize}
