Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
 internal OperationCompletedEventArgs(ClientConst.OperationResult result, ClientConst.ErrorCode errorCode)
 {
     this.result    = result;
     this.errorCode = errorCode;
 }
Ejemplo n.º 3
0
 public FinishedState(ClientConst.OperationResult result, ClientConst.ErrorCode errorCode)
 {
     Result    = result;
     ErrorCode = errorCode;
 }
Ejemplo n.º 4
0
 public EndConnectionState(ClientConst.OperationResult operationResult, ClientConst.ErrorCode errorCode)
 {
     this.operationResult = operationResult;
     this.errorCode       = errorCode;
 }