Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #pragma once
00015
00020 #include "SharedPtr.h"
00021
00022 #include "Lockable.h"
00023 #include "MessageConnection.h"
00024 #include "NetworkServer.h"
00025 #include "Thread.h"
00026
00027 namespace kNet
00028 {
00029
00030 class NetworkWorkerThread
00031 {
00032 public:
00033 NetworkWorkerThread();
00034
00035 void AddConnection(Ptr(MessageConnection) connection);
00036 void RemoveConnection(Ptr(MessageConnection) connection);
00037
00038 void AddServer(Ptr(NetworkServer) server);
00039 void RemoveServer(Ptr(NetworkServer) server);
00040
00041 void StartThread();
00042 void StopThread();
00043
00044 int NumConnections() const;
00045 int NumServers() const;
00046
00047 Thread &ThreadObject() { return workThread; }
00048
00049 private:
00050 Lockable<std::vector<Ptr(MessageConnection)> > connections;
00051 Lockable<std::vector<Ptr(NetworkServer)> > servers;
00052
00053 Thread workThread;
00054
00056 void MainLoop();
00057 };
00058
00059 #ifdef WIN32
00060 DWORD WINAPI NetworkWorkerThreadMain(LPVOID lpParameter);
00061 #endif
00062
00063 }