00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __JackSocketServerChannel__
00021 #define __JackSocketServerChannel__
00022
00023 #include "JackChannel.h"
00024 #include "JackSocket.h"
00025 #include "JackPlatformPlug.h"
00026 #include <poll.h>
00027 #include <map>
00028
00029 namespace Jack
00030 {
00031
00036 class JackSocketServerChannel : public JackRunnableInterface
00037 {
00038
00039 private:
00040
00041 JackServerSocket fRequestListenSocket;
00042 JackThread fThread;
00043 JackServer* fServer;
00044 pollfd* fPollTable;
00045 bool fRebuild;
00046 std::map<int, std::pair<int, JackClientSocket*> > fSocketTable;
00047
00048 bool HandleRequest(int fd);
00049 void BuildPoolTable();
00050
00051 void ClientCreate();
00052 void ClientAdd(int fd, char* name, int pid, int* shared_engine, int* shared_client, int* shared_graph, int* result);
00053 void ClientRemove(int fd, int refnum);
00054 void ClientKill(int fd);
00055
00056 public:
00057
00058 JackSocketServerChannel();
00059 ~JackSocketServerChannel();
00060
00061 int Open(const char* server_name, JackServer* server);
00062 void Close();
00063
00064
00065 bool Init();
00066 bool Execute();
00067 };
00068
00069 }
00070
00071 #endif
00072