Exemple #1
0
        private void OnReceive(object obj)
        {
            NetIncomingMessage message;

            while ((message = _server.ReadMessage()) != null)
            {
                try
                {
                    switch (message.MessageType)
                    {
                    case NetIncomingMessageType.ErrorMessage:
                    case NetIncomingMessageType.WarningMessage:
                        _logger.Write(new NetException(message.ReadString()));
                        break;

                    case NetIncomingMessageType.StatusChanged:
                        var status = (NetConnectionStatus)message.ReadByte();

                        if (status != NetConnectionStatus.Connected)
                        {
                            break;
                        }

                        var hailMessage = message.SenderConnection.RemoteHailMessage;
                        if (hailMessage == null)
                        {
                            continue;
                        }

                        var id          = AsyncPeer.ReadUserId(hailMessage);
                        var localPoint  = hailMessage.ReadIPEndPoint();
                        var publicPoint = message.SenderEndPoint;

                        lock (_syncObject)
                        {
                            _clientsEndPoints.Add(id, new ClientDescription(localPoint, publicPoint));

                            TryDoneAllRequest();
                        }
                        break;
                    }
                }
                catch (Exception e)
                {
                    _logger.Write(e);
                }
            }
        }
Exemple #2
0
    public static void Init(ClientInitializer initializer)
    {
      var user = new User(initializer.Nick, initializer.NickColor);

      if (Interlocked.CompareExchange(ref model, new ClientModel(user), null) != null)
        throw new InvalidOperationException("model already inited");

      Api = new ClientApi();
      Client = new AsyncClient(initializer.Nick);
      Peer = new AsyncPeer();

      Plugins = new ClientPluginManager(initializer.PluginsPath);
      Plugins.LoadPlugins(initializer.ExcludedPlugins);
    }
Exemple #3
0
        public static void Init(ClientInitializer initializer)
        {
            var user = new User(initializer.Nick, initializer.NickColor);

              if (Interlocked.CompareExchange(ref model, new ClientModel(user), null) != null)
            throw new InvalidOperationException("model already inited");

              // API установится автоматически при подключении к серверу (согласно версии на сервере)
              Client = new AsyncClient(initializer.Nick);
              Peer = new AsyncPeer();
              Plugins = new ClientPluginManager(initializer.PluginsPath);
              Plugins.LoadPlugins(initializer.ExcludedPlugins);
        }