aboutsummaryrefslogtreecommitdiff
path: root/src/itoserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/itoserver.h')
-rw-r--r--src/itoserver.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/itoserver.h b/src/itoserver.h
index f11960c..09ed1cd 100644
--- a/src/itoserver.h
+++ b/src/itoserver.h
@@ -17,6 +17,9 @@
17#include "bu/itoqueue.h" 17#include "bu/itoqueue.h"
18#include "bu/set.h" 18#include "bu/set.h"
19 19
20#include "bu/clientlink.h"
21#include "bu/clientlinkfactory.h"
22
20namespace Bu 23namespace Bu
21{ 24{
22 class ServerSocket; 25 class ServerSocket;
@@ -47,6 +50,7 @@ namespace Bu
47 class ItoServer : public Ito 50 class ItoServer : public Ito
48 { 51 {
49 friend class ItoClient; 52 friend class ItoClient;
53 friend class SrvClientLinkFactory;
50 public: 54 public:
51 ItoServer(); 55 ItoServer();
52 virtual ~ItoServer(); 56 virtual ~ItoServer();
@@ -65,8 +69,10 @@ namespace Bu
65 virtual void *run(); 69 virtual void *run();
66 70
67 private: 71 private:
72 class SrvClientLink;
68 class ItoClient : public Ito 73 class ItoClient : public Ito
69 { 74 {
75 friend class Bu::ItoServer::SrvClientLink;
70 public: 76 public:
71 ItoClient( ItoServer &rSrv, int nSocket, int nPort, 77 ItoClient( ItoServer &rSrv, int nSocket, int nPort,
72 int nTimeoutSec, int nTimeoutUSec ); 78 int nTimeoutSec, int nTimeoutUSec );
@@ -74,6 +80,9 @@ namespace Bu
74 80
75 virtual void *run(); 81 virtual void *run();
76 82
83 typedef ItoQueue<Bu::FString *> StringQueue;
84 StringQueue qMsg;
85
77 private: 86 private:
78 ItoServer &rSrv; 87 ItoServer &rSrv;
79 Client *pClient; 88 Client *pClient;
@@ -82,6 +91,31 @@ namespace Bu
82 int iPort; 91 int iPort;
83 int nTimeoutSec; 92 int nTimeoutSec;
84 int nTimeoutUSec; 93 int nTimeoutUSec;
94 ItoMutex imProto;
95 };
96
97 class SrvClientLink : public Bu::ClientLink
98 {
99 public:
100 SrvClientLink( ItoClient *pClient );
101 virtual ~SrvClientLink();
102
103 virtual void sendMsg( const Bu::FString &sMsg );
104
105 private:
106 ItoClient *pClient;
107 };
108
109 class SrvClientLinkFactory : public Bu::ClientLinkFactory
110 {
111 public:
112 SrvClientLinkFactory( ItoServer &rSrv );
113 virtual ~SrvClientLinkFactory();
114
115 virtual Bu::ClientLink *createLink( Bu::Client *pClient );
116
117 private:
118 ItoServer &rSrv;
85 }; 119 };
86 120
87 int nTimeoutSec; 121 int nTimeoutSec;