Esempio n. 1
0
        public void SetConnection(IConnection connection, ConnectionArgs args)
        {
            if (connection == null)
            {
                throw new ArgumentNullException(nameof(connection));
            }

            if (Interlocked.CompareExchange(ref this._connection, connection, null) != null)
            {
                throw new InvalidOperationException("A connection has already been established.");
            }

            this.ConnectUserId = args.ConnectUserId;
            this.RoomId        = args.RoomId;
            this.PlayerData    = args.PlayerData;
            this.Database      = args.Database;

            new ConnectEvent()
            .RaiseIn(this.BotBits);

            this.Connection.OnMessage    += this.Connection_OnMessage;
            this.Connection.OnDisconnect += this.Connection_OnDisconnect;
            if (!this.Connection.Connected)
            {
                this.HandleDisconnect(String.Empty);
            }
        }
Esempio n. 2
0
        public static Task <ConnectionArgs> GetConnectionArgsAsync(Client client)
        {
            var args      = new ConnectionArgs();
            var vaultTask = client.PayVault.RefreshAsync()
                            .Then(task => args.ShopData = new ShopData(client.PayVault.Items));

            var playerObjectTask = client.BigDB.LoadMyPlayerObjectAsync()
                                   .Then(task => args.PlayerObject = new PlayerObject(task.Result));

            return(vaultTask
                   .Then(t => playerObjectTask)
                   .Then(t => args)
                   .ToSafeTask());
        }
Esempio n. 3
0
        public static Task<ConnectionArgs> GetConnectionArgsAsync(Client client)
        {
            var args = new ConnectionArgs();
            var vaultTask = client.PayVault.RefreshAsync()
                .Then(task => args.ShopData = new ShopData(client.PayVault.Items));

             var playerObjectTask = client.BigDB.LoadMyPlayerObjectAsync()
                .Then(task => args.PlayerObject = new PlayerObject(task.Result));

            return vaultTask
                .Then(t => playerObjectTask)
                .Then(t => args)
                .ToSafeTask();
        }
Esempio n. 4
0
        public void AttachConnection(Connection connection, ConnectionArgs args)
        {
            var adapter = new PlayerIOConnectionAdapter(connection);

            try
            {
                this.SetConnection(adapter, args);
                this._adapter = adapter;
            }
            catch
            {
                adapter.Dispose();
                throw;
            }
        }
Esempio n. 5
0
 // This line is separated into a function to prevent uncessarily loading FutureProof into memory.
 private void FutureProofAttach(ConnectionManager connectionManager, Connection connection, ConnectionArgs args, int version)
 {
     connectionManager.AttachConnection(connection.FutureProof(PlayerIOServices.BotBitsVersion, version), args);
 }
Esempio n. 6
0
        protected override Task Attach(ConnectionManager connectionManager, Connection connection, ConnectionArgs args, int?version)
        {
            var versionLoader = version.HasValue
                ? TaskHelper.FromResult(version.Value)
                : this.Database.GetVersionConfigurationAsync()
                                .Then(task => task.Result.Version);

            return(versionLoader.Then(v =>
            {
                if (v.Result == PlayerIOServices.BotBitsVersion)
                {
                    base.Attach(connectionManager, connection, args, v.Result);
                }
                else
                {
                    this.FutureProofAttach(connectionManager, connection, args, v.Result);
                }
            }));
        }
Esempio n. 7
0
 protected virtual Task Attach(ConnectionManager connectionManager, Connection connection, ConnectionArgs args, int?version)
 {
     connectionManager.AttachConnection(connection, args);
     return(TaskHelper.FromResult(true));
 }