Exemplo n.º 1
0
        private void HandleLoginCommand(LoginCommand loginCommand)
        {
            if (_connection.ConnectionState != ConnectionState.Initiated)
            {
                _connection.Reply("login badcommand");
                return;
            }

            if (_connectionRegistry.IsLoggedIn(loginCommand.DeviceId))
            {
                _connection.Reply("login badcommand");
                return;
            }

            if (
                !_deviceAuthenticator.Authenticate(new AuthenticationParameters(loginCommand.DeviceId,
                                                                                loginCommand.ApiKey)))
            {
                Logger.Error("Login unauthorized. Device: {0}", loginCommand.DeviceId);

                _connection.Reply("login unauthorized");
                return;
            }

            var numericDeviceId = _deviceOperations.Get(loginCommand.DeviceId).NumericId;

            _connectionRegistry.PromoteToLoggedInConnection(_connection, loginCommand.DeviceId, numericDeviceId);
            _connection.Reply("login ack");
            _connection.Heartbeat();
        }
Exemplo n.º 2
0
 public void RegisterInitiatedConnection(IPersistentConnection connection)
 {
     lock (_lock)
     {
         connection.ConnectionState = ConnectionState.Initiated;
         connection.Heartbeat();
         InitiatedConnections.Add(connection.ConnectionId, connection);
     }
 }
Exemplo n.º 3
0
        public void PromoteToLoggedInConnection(IPersistentConnection connection, string deviceId, long numericDeviceId)
        {
            if (deviceId == null)
            {
                throw new ArgumentNullException(nameof(deviceId));
            }

            lock (_lock)
            {
                InitiatedConnections.Remove(connection.ConnectionId);

                connection.DeviceId        = deviceId;
                connection.NumericDeviceId = numericDeviceId;
                connection.ConnectionState = ConnectionState.LoggedIn;
                connection.Heartbeat();
                LoggedInConnections.Add(connection.DeviceId, connection);
            }
        }