00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ARCHON_X3D_PROXY_DISPOSER_H
00021 #define ARCHON_X3D_PROXY_DISPOSER_H
00022
00023 #include <archon/util/thread.H>
00024
00025 #include <archon/x3d/proxy/sai.H>
00026
00027 namespace Archon
00028 {
00029 namespace X3D
00030 {
00031 namespace Proxy
00032 {
00033 using namespace std;
00034 using namespace Utilities;
00035
00047 struct Disposer: Thread
00048 {
00049 Disposer(x3d::sai::Session_ptr);
00050 virtual ~Disposer();
00051
00052 void addContext(unsigned long id, unsigned long transCount);
00053 void addNode(unsigned long id, unsigned long transCount);
00054
00055 private:
00056 x3d::sai::Session_var session;
00057
00058 void main();
00059
00060 Mutex disposerMutex;
00061 Condition more;
00062
00063 struct Entry
00064 {
00065 unsigned long id;
00066 unsigned long transCount;
00067 Entry(unsigned long id, unsigned long transCount):
00068 id(id), transCount(transCount) {}
00069 };
00070
00071 vector<Entry> contexts;
00072 vector<Entry> nodes;
00073 };
00074 }
00075 }
00076 }
00077
00078 #endif // ARCHON_X3D_PROXY_DISPOSER_H