Fawkes API  Fawkes Development Version
fuse_server_client_thread.h
1 
2 /***************************************************************************
3  * fuse_server_client_thread.h - client thread for FuseServer
4  *
5  * Created: Tue Nov 13 19:59:11 2007
6  * Copyright 2005-2007 Tim Niemueller [www.niemueller.de]
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef _FIREVISION_FVUTILS_NET_FUSE_SERVER_CLIENT_THREAD_H_
25 #define _FIREVISION_FVUTILS_NET_FUSE_SERVER_CLIENT_THREAD_H_
26 
27 #include <core/threading/thread.h>
28 
29 #include <map>
30 #include <string>
31 
32 namespace fawkes {
33 class StreamSocket;
34 }
35 namespace firevision {
36 
37 class FuseServer;
38 class FuseNetworkMessageQueue;
39 class FuseNetworkMessage;
40 class SharedMemoryImageBuffer;
41 class SharedMemoryLookupTable;
42 class JpegImageCompressor;
43 
45 {
46 public:
48  virtual ~FuseServerClientThread();
49 
50  void recv();
51  void send();
52  virtual void loop();
53 
61 
62 private:
63  void process_inbound();
64  SharedMemoryImageBuffer *get_shmimgbuf(const char *id);
65 
66  FuseServer * fuse_server_;
67  fawkes::StreamSocket *socket_;
68 
69  FuseNetworkMessageQueue *outbound_queue_;
70  FuseNetworkMessageQueue *inbound_queue_;
71 
72  JpegImageCompressor *jpeg_compressor_;
73 
74  std::map<std::string, SharedMemoryImageBuffer *> buffers_;
75  std::map<std::string, SharedMemoryImageBuffer *>::iterator bit_;
76 
77  std::map<std::string, SharedMemoryLookupTable *> luts_;
78  std::map<std::string, SharedMemoryLookupTable *>::iterator lit_;
79 
80  bool alive_;
81 };
82 
83 } // end namespace firevision
84 
85 #endif
firevision::FuseServerClientThread::recv
void recv()
Receive data.
Definition: fuse_server_client_thread.cpp:132
firevision::FuseNetworkMessageQueue
A LockQueue of FuseNetworkMessage to hold messages in inbound and outbound queues.
Definition: fuse_message_queue.h:38
firevision::FuseServer
FireVision FUSE protocol server.
Definition: fuse_server.h:44
firevision::JpegImageCompressor
Jpeg image compressor.
Definition: jpeg_compressor.h:32
firevision::FuseServerClientThread::process_getlutlist_message
void process_getlutlist_message(FuseNetworkMessage *m)
Process LUT list request message.
Definition: fuse_server_client_thread.cpp:385
firevision::FuseServerClientThread::send
void send()
Send all messages in outbound queue.
Definition: fuse_server_client_thread.cpp:115
firevision::FuseServerClientThread::process_setlut_message
void process_setlut_message(FuseNetworkMessage *m)
Process LUT setting.
Definition: fuse_server_client_thread.cpp:305
firevision::SharedMemoryImageBuffer
Shared memory image buffer.
Definition: shm_image.h:184
firevision::FuseServerClientThread::loop
virtual void loop()
Code to execute in the thread.
Definition: fuse_server_client_thread.cpp:441
firevision::FuseServerClientThread::~FuseServerClientThread
virtual ~FuseServerClientThread()
Destructor.
Definition: fuse_server_client_thread.cpp:82
firevision::FuseServerClientThread::process_greeting_message
void process_greeting_message(FuseNetworkMessage *m)
Process greeting message.
Definition: fuse_server_client_thread.cpp:147
firevision::FuseServerClientThread::process_getimageinfo_message
void process_getimageinfo_message(FuseNetworkMessage *m)
Process image info request message.
Definition: fuse_server_client_thread.cpp:240
fawkes
Fawkes library namespace.
firevision::FuseServerClientThread::process_getimage_message
void process_getimage_message(FuseNetworkMessage *m)
Process image request message.
Definition: fuse_server_client_thread.cpp:180
firevision::FuseServerClientThread
FUSE Server Client Thread.
Definition: fuse_server_client_thread.h:45
firevision::FuseServerClientThread::process_getlut_message
void process_getlut_message(FuseNetworkMessage *m)
Process LUT request message.
Definition: fuse_server_client_thread.cpp:272
fawkes::Thread
Thread class encapsulation of pthreads.
Definition: thread.h:46
firevision::FuseServerClientThread::FuseServerClientThread
FuseServerClientThread(FuseServer *fuse_server, fawkes::StreamSocket *s)
Constructor.
Definition: fuse_server_client_thread.cpp:62
fawkes::StreamSocket
TCP stream socket over IP.
Definition: stream.h:32
firevision::FuseNetworkMessage
FUSE Network Message.
Definition: fuse_message.h:40
firevision::FuseServerClientThread::process_getimagelist_message
void process_getimagelist_message(FuseNetworkMessage *m)
Process image list request message.
Definition: fuse_server_client_thread.cpp:358