commandCache.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef EQNET_COMMANDCACHE_H
00019 #define EQNET_COMMANDCACHE_H
00020
00021 #include <eq/net/types.h>
00022
00023 #include <eq/base/base.h>
00024 #include <eq/base/thread.h>
00025
00026 #include <vector>
00027
00028 namespace eq
00029 {
00030 namespace net
00031 {
00032 class Command;
00033
00040 class CommandCache
00041 {
00042 public:
00043 CommandCache();
00044 ~CommandCache();
00045
00047 Command& alloc( NodePtr node, NodePtr localNode, const uint64_t size );
00048
00050 void flush();
00051
00052 private:
00053 enum Cache
00054 {
00055 CACHE_SMALL,
00056 CACHE_BIG,
00057 CACHE_ALL
00058 };
00059
00061 CommandVector _caches[ CACHE_ALL ];
00063 size_t _positions[ CACHE_ALL ];
00064
00065 CHECK_THREAD_DECLARE( _thread );
00066 };
00067 }
00068 }
00069
00070 #endif //EQNET_COMMANDCACHE_H