internal override void Completed(MediatorContext mediatorContext, IClientContext clientContext, IPeerContext peerContext, OperationCompletedEventArgs oce) { ClientConst.OperationResult operationResult = oce.Result; if (operationResult == ClientConst.OperationResult.Successful) { Logger.GetLog().Info("接続が完了しました(接続数: " + peerContext.Connections + ")。"); mediatorContext.State = new ConnectedState(); } else if (operationResult == ClientConst.OperationResult.Restartable) { Logger.GetLog().Info("IPアドレスが変化しているため、再接続します。"); peerContext.DisconnectAll(); Logger.GetLog().Info("ピア接続をすべて切断しました(接続数: " + peerContext.Connections + ")"); mediatorContext.State = new DisconnectedState(); mediatorContext.Connect(); } else if (operationResult == ClientConst.OperationResult.Retryable) { // FIXME: 再試行すること。いまは放置プレイ Logger.GetLog().Info("接続に失敗しましたが、再試行可能なエラーです。"); mediatorContext.State = new DisconnectedState(); } else { throw new NotSupportedException(); } }
internal OperationCompletedEventArgs(ClientConst.OperationResult result, ClientConst.ErrorCode errorCode) { this.result = result; this.errorCode = errorCode; }
public FinishedState(ClientConst.OperationResult result, ClientConst.ErrorCode errorCode) { Result = result; ErrorCode = errorCode; }
public EndConnectionState(ClientConst.OperationResult operationResult, ClientConst.ErrorCode errorCode) { this.operationResult = operationResult; this.errorCode = errorCode; }