<html> <head> <title>OgreResourceBackgroundQueue.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link type="text/css" rel="stylesheet" href="style.css"> </head> <body> <!-- Generated by Doxygen 1.3.6 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div> <h1>OgreResourceBackgroundQueue.h</h1><a href="OgreResourceBackgroundQueue_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span> 00002 <span class="comment">-----------------------------------------------------------------------------</span> 00003 <span class="comment">This source file is part of OGRE</span> 00004 <span class="comment"> (Object-oriented Graphics Rendering Engine)</span> 00005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span> 00006 <span class="comment"></span> 00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span> 00008 <span class="comment">Also see acknowledgements in Readme.html</span> 00009 <span class="comment"></span> 00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span> 00011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span> 00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span> 00013 <span class="comment">version.</span> 00014 <span class="comment"></span> 00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span> 00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span> 00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span> 00018 <span class="comment"></span> 00019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span> 00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span> 00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span> 00022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span> 00023 <span class="comment">-----------------------------------------------------------------------------</span> 00024 <span class="comment">*/</span> 00025 <span class="preprocessor">#ifndef __ResourceBackgroundQueue_H__</span> 00026 <span class="preprocessor"></span><span class="preprocessor">#define __ResourceBackgroundQueue_H__</span> 00027 <span class="preprocessor"></span> 00028 00029 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span> 00030 <span class="preprocessor">#include "<a class="code" href="OgreCommon_8h.html">OgreCommon.h</a>"</span> 00031 <span class="preprocessor">#include "<a class="code" href="OgreSingleton_8h.html">OgreSingleton.h</a>"</span> 00032 00033 <span class="preprocessor">#if OGRE_THREAD_SUPPORT</span> 00034 <span class="preprocessor"></span><span class="preprocessor"># include <boost/thread/thread.hpp></span> 00035 <span class="preprocessor"># include <boost/thread/condition.hpp></span> 00036 <span class="preprocessor">#endif</span> 00037 <span class="preprocessor"></span> 00038 <span class="keyword">namespace </span>Ogre { 00039 <a name="l00041"></a><a class="code" href="namespaceOgre.html#a487">00041</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a>; 00042 <a name="l00055"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueueListener.html">00055</a> <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a13">_OgreExport</a> ResourceBackgroundQueueListener 00056 { 00057 <span class="keyword">public</span>: 00062 <span class="keyword">virtual</span> <span class="keywordtype">void</span> operationCompleted(<a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a> ticket) = 0; 00063 }; 00064 <a name="l00090"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueue.html">00090</a> <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> ResourceBackgroundQueue : <span class="keyword">public</span> <a class="code" href="classOgre_1_1Singleton.html">Singleton</a><ResourceBackgroundQueue> 00091 { 00092 <span class="keyword">protected</span>: <a name="l00094"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuex7">00094</a> <span class="keyword">enum</span> RequestType 00095 { 00096 RT_INITIALISE_GROUP, 00097 RT_INITIALISE_ALL_GROUPS, 00098 RT_LOAD_GROUP, 00099 RT_LOAD_RESOURCE, 00100 RT_SHUTDOWN 00101 }; <a name="l00103"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html">00103</a> <span class="keyword">struct </span><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html">Request</a> 00104 { <a name="l00105"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto0">00105</a> <a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a> ticketID; <a name="l00106"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto1">00106</a> RequestType type; <a name="l00107"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto2">00107</a> <a class="code" href="namespaceOgre.html#a426">String</a> resourceName; <a name="l00108"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto3">00108</a> <a class="code" href="namespaceOgre.html#a426">String</a> resourceType; <a name="l00109"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto4">00109</a> <a class="code" href="namespaceOgre.html#a426">String</a> groupName; <a name="l00110"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto5">00110</a> <span class="keywordtype">bool</span> isManual; <a name="l00111"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto6">00111</a> <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader; <a name="l00112"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto7">00112</a> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a>* loadParams; <a name="l00113"></a><a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html#Ogre_1_1ResourceBackgroundQueue_1_1Requesto8">00113</a> ResourceBackgroundQueueListener* listener; 00114 }; <a name="l00115"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuex0">00115</a> <span class="keyword">typedef</span> std::list<Request> <a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuex0">RequestQueue</a>; <a name="l00116"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuex1">00116</a> <span class="keyword">typedef</span> std::map<BackgroundProcessTicket, Request*> <a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuex1">RequestTicketMap</a>; 00117 <a name="l00119"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuep0">00119</a> <a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuex0">RequestQueue</a> mRequestQueue; 00120 <a name="l00122"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuep1">00122</a> <a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuex1">RequestTicketMap</a> mRequestTicketMap; 00123 <a name="l00125"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuep2">00125</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> mNextTicketID; 00126 00127 <span class="preprocessor">#if OGRE_THREAD_SUPPORT</span> 00128 <span class="preprocessor"></span> 00129 boost::thread* mThread; 00131 boost::condition mCondition; 00133 <span class="keyword">static</span> <span class="keywordtype">void</span> threadFunc(<span class="keywordtype">void</span>); 00135 <a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a> addRequest(<a class="code" href="structOgre_1_1ResourceBackgroundQueue_1_1Request.html">Request</a>& req); 00136 <span class="preprocessor">#else</span> 00137 <span class="preprocessor"></span> <a name="l00138"></a><a class="code" href="classOgre_1_1ResourceBackgroundQueue.html#Ogre_1_1ResourceBackgroundQueuep3">00138</a> <span class="keywordtype">void</span>* mThread; 00139 <span class="preprocessor">#endif</span> 00140 <span class="preprocessor"></span> 00142 <a class="code" href="OgrePrerequisites_8h.html#a11">OGRE_AUTO_MUTEX</a> 00143 00144 <span class="keyword">public</span>: 00145 ResourceBackgroundQueue(); 00146 <span class="keyword">virtual</span> ~ResourceBackgroundQueue(); 00147 00149 <span class="keyword">virtual</span> <span class="keywordtype">void</span> initialise(<span class="keywordtype">void</span>); 00150 00152 <span class="keyword">virtual</span> <span class="keywordtype">void</span> shutdown(<span class="keywordtype">void</span>); 00153 00162 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a> initialiseResourceGroup( 00163 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, ResourceBackgroundQueueListener* listener = 0); 00164 00173 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a> initialiseAllResourceGroups( 00174 ResourceBackgroundQueueListener* listener = 0); 00182 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a> loadResourceGroup(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, 00183 ResourceBackgroundQueueListener* listener = 0); 00184 00185 00201 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a> load( 00202 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& resType, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, 00203 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& group, <span class="keywordtype">bool</span> isManual = <span class="keyword">false</span>, 00204 <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader = 0, 00205 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a>* loadParams = 0, 00206 ResourceBackgroundQueueListener* listener = 0); 00207 00216 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isProcessComplete(<a class="code" href="namespaceOgre.html#a487">BackgroundProcessTicket</a> ticket); 00217 00233 <span class="keyword">static</span> ResourceBackgroundQueue& getSingleton(<span class="keywordtype">void</span>); 00249 <span class="keyword">static</span> ResourceBackgroundQueue* getSingletonPtr(<span class="keywordtype">void</span>); 00250 00251 00252 }; 00253 00254 00255 } 00256 00257 <span class="preprocessor">#endif</span> 00258 <span class="preprocessor"></span> </pre></div><p> Copyright © 2000-2005 by The OGRE Team<br /> Last modified Wed Feb 23 00:19:12 2005 </p> </body> </html>