//---methods public ScsService(int tcpPort, int scsClientMaxCount = 8192) { _scsClientMaxCount = scsClientMaxCount; // Список по сути особен ну нужен, но используется // чтобы отделять клиентов, котоыре еще не прошли регистраци от тех кто уже прошел, // чтобы не пропускать не нужные событи вверх к основному приложению. _authenticatedUsers = new Dictionary <IScsServerClient, User>(); //Синхронная очередь клиентских msg для тех кто еще не прошел аутентификацию _msgReadersForAutentification = new MsgReadersCollection(); _msgReadersForAutentification.RegisterMsgReader <AuthenticationMessage>(AuthenticationMsgReader); _msgQueueForAutentification = new ConcurrentMsgQueue(_msgReadersForAutentification, _authenticatedUsers); _msgQueueForAutentification.ClientEventReaded += MsgQueue_ClientEventReaded; //Синхронная очередь клиентских msg _msgReaders = new MsgReadersCollection(); _msgQueue = new ConcurrentMsgQueue(_msgReaders, _authenticatedUsers); _msgQueue.ClientEventReaded += MsgQueue_ClientEventReaded; // Проходящите подключение клиенты _authenticationStates = new Dictionary <IScsServerClient, UserAuthenticationState>(); // Scs server(tcp слой) _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(tcpPort)); _server.ClientConnected += Server_ClientConnected; _server.ClientDisconnected += Server_ClientDisconnected; }
//---methods public ScsClient(string login, string ip, int tcpPort) { _login = login; //Синхронная очередь клиентских событий _eventQueue = new ConcurrentEventQueue(); _msgReaders = new MsgReadersCollection(); _msgReaders.RegisterMsgReader <AuthenticationSuccesMessage>(AuthenticationSuccessMsgReader); //Синхронная очередь msg с сервера _msgQueue = new ConcurrentMsgQueue(_msgReaders); _client = ScsClientFactory.CreateClient(new ScsTcpEndPoint(ip, tcpPort)); _client.Connected += Client_Connected; _client.Disconnected += Client_Disconnected; _msgQueue.AddMessenger(_client); }
public ConcurrentMsgQueue(MsgReadersCollection msgReaders) { _msgReaders = msgReaders; _lockObject = new object(); _msgQueue = new Queue <ReceivedMsg>(); }
//---methods public ConcurrentMsgQueue(MsgReadersCollection msgReaders, Dictionary <IScsServerClient, User> authenticatedUsers) { _authenticatedUsers = authenticatedUsers; _msgReaders = msgReaders; _entryQueue = new ConcurrentQueue <Entry>(); }