00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __FIREVISION_FVUTILS_NET_FUSE_SERVER_CLIENT_THREAD_H_
00025 #define __FIREVISION_FVUTILS_NET_FUSE_SERVER_CLIENT_THREAD_H_
00026
00027 #include <core/threading/thread.h>
00028
00029 #include <map>
00030 #include <string>
00031
00032 namespace fawkes {
00033 class StreamSocket;
00034 }
00035 namespace firevision {
00036 #if 0
00037 }
00038 #endif
00039
00040 class FuseServer;
00041 class FuseNetworkMessageQueue;
00042 class FuseNetworkMessage;
00043 class SharedMemoryImageBuffer;
00044 class SharedMemoryLookupTable;
00045 class JpegImageCompressor;
00046
00047 class FuseServerClientThread : public fawkes::Thread
00048 {
00049 public:
00050 FuseServerClientThread(FuseServer *fuse_server,
00051 fawkes::StreamSocket *s);
00052 virtual ~FuseServerClientThread();
00053
00054 void recv();
00055 void send();
00056 virtual void loop();
00057
00058 void process_greeting_message(FuseNetworkMessage *m);
00059 void process_getimage_message(FuseNetworkMessage *m);
00060 void process_getimageinfo_message(FuseNetworkMessage *m);
00061 void process_getimagelist_message(FuseNetworkMessage *m);
00062 void process_getlut_message(FuseNetworkMessage *m);
00063 void process_setlut_message(FuseNetworkMessage *m);
00064 void process_getlutlist_message(FuseNetworkMessage *m);
00065
00066 private:
00067 void process_inbound();
00068 SharedMemoryImageBuffer * get_shmimgbuf(const char *id);
00069
00070 FuseServer *__fuse_server;
00071 fawkes::StreamSocket *__socket;
00072
00073 FuseNetworkMessageQueue *__outbound_queue;
00074 FuseNetworkMessageQueue *__inbound_queue;
00075
00076 JpegImageCompressor *__jpeg_compressor;
00077
00078 std::map< std::string, SharedMemoryImageBuffer * > __buffers;
00079 std::map< std::string, SharedMemoryImageBuffer * >::iterator __bit;
00080
00081 std::map< std::string, SharedMemoryLookupTable * > __luts;
00082 std::map< std::string, SharedMemoryLookupTable * >::iterator __lit;
00083
00084 bool __alive;
00085 };
00086
00087 }
00088
00089 #endif