protected override void OnStart() { userName = GetType().Name; PacketStream stream; ConnectorInfo info; stream = _agent.Connect("127.0.0.1", Port.Database); stream.Write(new ConnectorInfo(GetType().Name)); _messenger.Register("Database", stream); Console.WriteLine("Database connected."); _agent.Bind("127.0.0.1", (Port)Enum.Parse(typeof(Port), GetType().Name), 1); stream = _agent.Listen(); info = (ConnectorInfo)stream.Read().body; _messenger.Register(info.name, stream); Console.WriteLine(info.name + " connected."); foreach (var key in _messenger.Keys) { StartCoroutine(Dispatcher(key)); } _messenger.Start(); }
protected override void OnStart() { _messenger = new Messenger(_handler); Action listenner = () => { _agent.Bind("127.0.0.1", Port.Database, 1); var stream = _agent.Listen(); var info = (ConnectorInfo)stream.Read().body; _messenger.Register(info.name, stream); Console.WriteLine(info.name + " connected."); }; listenner(); //Login listenner(); //Town listenner(); //Forest listenner(); //Mine listenner(); //Boss foreach (var key in _messenger.Keys) { var dispatcher = Task.Run(() => { while (stopped == false) { _messenger.Dispatch(key); } }); _dispatchers.Add(key, dispatcher); } _messenger.Start(); }
protected override void OnStart() { _messenger = new Messenger(_handler); PacketStream stream; ConnectorInfo info; stream = _agent.Connect("127.0.0.1", Port.Database); stream.Write(new ConnectorInfo("Login")); _messenger.Register("Database", stream); Console.WriteLine("Database connected."); //Listen Proxy _agent.Bind("127.0.0.1", Port.Login, 1); stream = _agent.Listen(); info = (ConnectorInfo)stream.Read().body; _messenger.Register(info.name, stream); Console.WriteLine(info.name + " connected."); foreach (var key in _messenger.Keys) { var dispatcher = Task.Run(() => { while (stopped == false) { _messenger.Dispatch(key); } }); _dispatchers.Add(key, dispatcher); } _messenger.Start(); }
protected override void OnStart() { _messenger = new Messenger(this); _confirmMessenger = new Messenger(this); Action <Port> connector = (Port port) => { var stream = _agent.Connect("127.0.0.1", port); stream.Write(new ConnectorInfo("Proxy")); _messenger.Register(port.ToString(), stream); Console.WriteLine(port.ToString() + " connected."); _worldByUser.Add(port.ToString(), port.ToString()); _serverKeys.Add(port.ToString()); _rpcBufferByWorld.Add(port.ToString(), new List <RPC>()); }; connector(Port.Login); connector(Port.Town); connector(Port.Forest); connector(Port.Mine); connector(Port.Boss); foreach (var key in _messenger.Keys) { var dispatcher = Task.Run(() => { while (stopped == false) { _messenger.Dispatch(key); } }); _dispatchers.Add(key, dispatcher); } _accepter = Task.Run(() => { _agent.Bind("0.0.0.0", Port.Proxy, 4); while (stopped == false) { if (_agent.HasConnectReq()) { string stringID = _currentConfirmId.ToString(); int ID = _currentConfirmId; lock (_lock) { _confirmMessenger.Register(stringID, _agent.Listen()); _confirmMessenger.Send(stringID, new ConfirmID(ID)); } _currentConfirmId++; Console.WriteLine("Client connected."); } } }); _confirm = Task.Run(() => { while (stopped == false) { lock (_lock) { foreach (var confirmID in _confirmMessenger.Keys) { _confirmMessenger.Dispatch(confirmID); } } } }); _client = Task.Run(() => { while (stopped == false) { lock (_lock) { foreach (var key in _messenger.Keys) { if (_serverKeys.Contains(key) == false) { _messenger.Dispatch(key); } } } } }); _messenger.Start(); _confirmMessenger.Start(); }