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); } }
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()); }
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(); }
public void AttachConnection(Connection connection, ConnectionArgs args) { var adapter = new PlayerIOConnectionAdapter(connection); try { this.SetConnection(adapter, args); this._adapter = adapter; } catch { adapter.Dispose(); throw; } }
// 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); }
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); } })); }
protected virtual Task Attach(ConnectionManager connectionManager, Connection connection, ConnectionArgs args, int?version) { connectionManager.AttachConnection(connection, args); return(TaskHelper.FromResult(true)); }