Пример #1
0
 protected static void BaseCallStateChanged(int callId, ESessionState callState, string info)
 {
     if (CallStateChanged != null)
     {
         CallStateChanged(callId, callState, info);
     }
 }
Пример #2
0
 public override void Disconnect(ESessionState sessionState)
 {
     if (ClientSession.DisconnectState != ESessionState.None)
     {
         return;
     }
     ClientSession.DisconnectState = sessionState;
 }
Пример #3
0
        public virtual void Disconnect(ESessionState sessionState)
        {
            if (ClientSession.DisconnectState != ESessionState.None)
            {
                return;
            }

            ClientSession.DisconnectState = sessionState;
            ClientSession.Disconnect();
        }
Пример #4
0
        /// <summary>
        /// 서버와의 연결을 끊는다.
        /// </summary>
        public void Disconnect(ESessionState sessionState)
        {
            if (_clientSession.NetState == ENetState.Disconnected)
            {
                return;
            }

            _logger.Debug(string.Format("[NetClient] Disconnect. socketHandle: {0}, sessionState: {1}", _clientSession.Socket.Handle, sessionState));

            _clientSession.DisconnectState = sessionState;
            _clientSession.Disconnect();
        }
        private void OnCallStateChanged(int callId, ESessionState callState, string info)
        {
            if (callState == ESessionState.SESSION_STATE_INCOMING)
            {
                IStateMachine machine = this.Factory.createStateMachine();
                if (machine.IsNull && this.Config.CFBFlag)
                {
                    this.StackProxy.createCallProxy().serviceRequest(5, this.Config.CFBNumber);
                }
                else
                {
                    machine.Session = callId;
                    if (this.CallList.ContainsKey(callId))
                    {
                        this.CallList[callId].State.endCall();
                    }
                    else
                    {
                        this._calls.Add(callId, machine);
                    }
                }
            }
            else
            {
                IStateMachine machine2 = this.getCall(callId);
                if (!machine2.IsNull)
                {
                    switch (callState)
                    {
                    case ESessionState.SESSION_STATE_CALLING:
                    case ESessionState.SESSION_STATE_INCOMING:
                    case ESessionState.SESSION_STATE_CONFIRMED:
                        return;

                    case ESessionState.SESSION_STATE_EARLY:
                        machine2.State.onAlerting();
                        return;

                    case ESessionState.SESSION_STATE_CONNECTING:
                        machine2.State.onConnect();
                        return;

                    case ESessionState.SESSION_STATE_DISCONNECTED:
                        OnIncomingCall(0, machine2.CallingNumber, "Answer");
                        machine2.State.onReleased();

                        return;
                    }
                }
            }
        }
        public URLSelectorDropboxPage()
        {
            InitializeComponent();
            Messenger.Default.Register<SessionState>(this, (sessionState) =>
            {
                switch (sessionState.State)
                {
                    case ESessionState.Signingin:
                        if (!string.IsNullOrEmpty(sessionState.SigningInURL))
                        {
                            this.SwitchToSigningInStep2State(sessionState.SigningInURL);
                        }
                        else
                        {
                            this.sessionState = ESessionState.Signingin;
                        }
                        break;
                    case ESessionState.Connected:
                        this.SwitchToSignedInState();
                        break;
                    case ESessionState.NotConnected:
                    case ESessionState.Unknown:
                        this.SwitchToSignedoutState();
                        break;
                    default:
                        break;
                }
            });

            this.baseProgressOverlay = this.progressOverlay;
            this.baseProgressBarLabel = this.progressBarLabel;
            if (((DropboxViewModel)this.DataContext).RunningSession)
            {
                SwitchToSignedInState();
                if (((DropboxViewModel)this.DataContext).ChangingDirectory)
                {
                    this.progressBarLabel.Text = NewDownload.LoadingLabel;
                    this.progressOverlay.Show();
                }
            }
            else
            {
                SwitchToSignedoutState();
            }
        }
Пример #7
0
        public static void ProcessMessage(LunarSession session, LunarRequestInfo requestInfo)
        {
            EProtocolId id = (EProtocolId)requestInfo.ProtocolID;

            loger.Info($"中转{(EServerType)session.SessionType} 协议->{id} -> {session.SessionUuid} 。");
            var objMsg = ProtocolDump.Dump(id, requestInfo.Body);

            if (objMsg == null)
            {
                loger.Warn("错误协议!");
                return;
            }

            //登录服务器消息
            if (id > EProtocolId.L2E_GAME_START && id < EProtocolId.L2E_GAME_END)
            {
                //检测连接状态
                ESessionState SessionState = (ESessionState)session.SessionState;
                if (SessionState == ESessionState.Logined)
                {
                    loger.Warn($"已登陆收到登陆协议->  {id} -> {(int)id} 。");
                    return;
                }
                else
                {   //后期人多则会添加登录服务器获取人少的服
                    ((ProtocolMsgBase)objMsg).Shuttle = session.SessionID;
                    SendToLogin(objMsg);
                }
            }
            else if (id > EProtocolId.B2T_GM_START && id < EProtocolId.B2T_GM_END)
            {
                if (session.SessionType != (short)EServerType.后台工具)
                {
                    loger.Warn($"错误的GM协议->  {id} -> {(int)id} 。");
                    return;
                }
            }
            //游戏服消息
            else
            {
                ((ProtocolMsgBase)objMsg).Puid = session.SessionUuid;
                SendToGame(objMsg);
            }
        }
Пример #8
0
        private void ProcessData()
        {
            EGameState    gameState    = (EGameState)_data.MGameState;
            ESessionState sessionState = (ESessionState)_data.MSessionState;

            if (gameState != _lastGameState)
            {
                if (gameState == EGameState.GameFrontEnd)
                {
                    Reset();
                }
                _lastGameState = gameState;
            }

            if (gameState != EGameState.GameFrontEnd)
            {
                lock (_timingData)
                {
                    if (_timingData.RaceInfo.TrackLongName == null)
                    {
                        if (_data.MTrackLocation.Value != "")
                        {
                            _timingData.RaceInfo.TrackLongName  = _data.MTrackLocation.Value + " " + _data.MTrackVariation.Value;
                            _timingData.RaceInfo.TrackShortName = _data.MTrackLocation.Value;
                            _timingData.RaceInfo.TrackName      = _data.MTrackLocation.Value + " " + _data.MTrackVariation.Value;
                            _timingData.RaceInfo.TrackVariation = _data.MTrackVariation.Value;
                            _timingData.RaceInfo.TrackLength    = (int)_data.MTrackLength;

                            _timingData.RaceInfo.TrackTemperature   = _data.MTrackTemperature;
                            _timingData.RaceInfo.AmbientTemperature = _data.MAmbientTemperature;

                            _trackManager.LoadCurrentTrack(_timingData.RaceInfo.TrackName, _displayName);
                        }
                    }
                }

                lock (_telemetryData)
                {
                    _telemetryData.Car.InCar = true;

                    _telemetryData.Engine.RPM        = _data.MRpm;
                    _telemetryData.Car.Speed         = ConvertSpeedToMPH(_data.MSpeed);
                    _telemetryData.Car.Gear          = _data.MGear;
                    _telemetryData.Car.FuelRemaining = _data.MFuelLevel * _data.MFuelCapacity;
                    _telemetryData.Car.FuelCapacity  = _data.MFuelCapacity;

                    _telemetryData.Engine.WaterTemp = _data.MWaterTempCelsius;

                    _telemetryData.Timing.CurrentLapTime = _data.MCurrentTime;

                    if (_recording)
                    {
                        SetTrackname(_timingData.RaceInfo.TrackName);

                        for (int i = 0; i < _data.MNumParticipants; i++)
                        {
                            float lapDistance = _data.MParticipantInfo[i].mCurrentLapDistance;

                            if (_lastLapDistance[i] == -1 || (Math.Abs(_lastLapDistance[i] - lapDistance) > _recordingDelta))
                            {
                                AddTrackPoint(i, _data.MParticipantInfo[i].mCurrentLap, _data.MParticipantInfo[i].mWorldPosition);
                                _lastLapDistance[i] = lapDistance;
                            }
                        }
                    }

                    if (_trackManager.CurrentTrack != null)
                    {
                        _telemetryData.ResetPlayers();
                        for (int i = 0; i < _data.MNumParticipants; i++)
                        {
                            float x    = -_data.MParticipantInfo[i].mWorldPosition[0] + Math.Abs(_trackManager.CurrentTrack.TrackBounds.MaxGameX);
                            float y    = _data.MParticipantInfo[i].mWorldPosition[2] + Math.Abs(_trackManager.CurrentTrack.TrackBounds.MinGameY);
                            float z    = _data.MParticipantInfo[i].mWorldPosition[1] + Math.Abs(_trackManager.CurrentTrack.TrackBounds.MinGameZ);
                            bool  isMe = false;
                            if (i == _data.MViewedParticipantIndex)
                            {
                                isMe = true;
                            }
                            _telemetryData.AddPlayer(x, y, z, isMe);
                        }
                    }
                }
            }
            else
            {
                _telemetryData.Car.InCar = false;
            }
        }
Пример #9
0
    ////////////////////////////////////////////////////////////////////////////////////////
    /// <summary>
    /// 
    /// </summary>
    /// <param name="callId"></param>
    /// <param name="callState"></param>
    private void OnCallStateChanged(int callId, ESessionState callState, string info)
    {
      if (callState == ESessionState.SESSION_STATE_INCOMING)
      {
        IStateMachine incall = Factory.createStateMachine();
        // couldn't create new call instance (max calls?)
        if (incall.IsNull)
        {
          // check if CFB, activate redirection
          if (Config.CFBFlag == true)
          {
            // get stack proxy
            ICallProxyInterface proxy = StackProxy.createCallProxy();
            // assign callid to the proxy...
            //proxy.SessionId = callId;
            proxy.serviceRequest((int)EServiceCodes.SC_CFB, Config.CFBNumber);
            return;
          }
        }
        // save session parameters
        incall.Session = callId;

        // check if callID already exists!!!
        if (CallList.ContainsKey(callId))
        {
          // shouldn't be here
          // release the call
          CallList[callId].State.endCall();
          return;
        }
        // add call to call table
        _calls.Add(callId, incall);

        return;
      }

      IStateMachine call = getCall(callId);
      if (call.IsNull) return;

      switch (callState)
      {
        case ESessionState.SESSION_STATE_CALLING:
          //sm.getState().onCalling();
          break;
        case ESessionState.SESSION_STATE_EARLY:
          call.State.onAlerting();
          break;
        case ESessionState.SESSION_STATE_CONNECTING:
          call.State.onConnect();
          break;
        case ESessionState.SESSION_STATE_DISCONNECTED:
          call.State.onReleased();
          break;
      }
    }
Пример #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="callId"></param>
 /// <param name="callState"></param>
 /// <returns></returns>
 private static int onCallStateChanged(int callId, ESessionState callState)
 {
     BaseCallStateChanged(callId, callState, "");
     return(0);
 }
Пример #11
0
 protected static void BaseCallStateChanged(int callId, ESessionState callState, string info)
 {
   if (null != CallStateChanged) CallStateChanged(callId, callState, info);
 }
 private void SwitchToSigningInStep2State(string signinUrl)
 {
     this.sessionState = ESessionState.Signingin;
     this.step2InProgress = true;
     this.webBrowser.Visibility = Visibility.Visible;
     this.webBrowser.Navigate(new Uri(signinUrl, UriKind.RelativeOrAbsolute));
 }
Пример #13
0
 public static void OnCallStateChanged(int callId, ESessionState callState, string info)
 {
   BaseCallStateChanged(callId, callState, info);
 }
Пример #14
0
 public static void OnCallStateChanged(int callId, ESessionState callState, string info)
 {
     BaseCallStateChanged(callId, callState, info);
 }
Пример #15
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="callId"></param>
 /// <param name="callState"></param>
 /// <returns></returns>
 private static int onCallStateChanged(int callId, ESessionState callState)
 {
   ICallProxyInterface.BaseCallStateChanged(callId, callState, "");
   return 0;
 }
Пример #16
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="callId"></param>
 /// <param name="callState"></param>
 /// <returns></returns>
 private static int onCallStateChanged(int callId, ESessionState callState)
 {
     ICallProxyInterface.BaseCallStateChanged(callId, callState, "");
     return(0);
 }
Пример #17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="callId"></param>
        /// <param name="callState"></param>
        private void OnCallStateChanged(int callId, ESessionState callState, string info)
        {
            if (callState == ESessionState.SESSION_STATE_INCOMING)
            {
                IStateMachine incall = Factory.createStateMachine();
                // couldn't create new call instance (max calls?)
                if (incall.IsNull)
                {
                    // check if CFB, activate redirection
                    if (Config.CFBFlag == true)
                    {
                        // get stack proxy
                        ICallProxyInterface proxy = StackProxy.createCallProxy();
                        // assign callid to the proxy...
                        //proxy.SessionId = callId;
                        proxy.serviceRequest((int)EServiceCodes.SC_CFB, Config.CFBNumber);
                        return;
                    }
                }
                // save session parameters
                incall.Session = callId;

                // check if callID already exists!!!
                if (CallList.ContainsKey(callId))
                {
                    // shouldn't be here
                    // release the call
                    CallList[callId].State.endCall();
                    return;
                }
                // add call to call table
                _calls.Add(callId, incall);

                return;
            }

            IStateMachine call = this[callId];

            if (call.IsNull)
            {
                return;
            }

            switch (callState)
            {
            case ESessionState.SESSION_STATE_CALLING:
                //sm.getState().onCalling();
                break;

            case ESessionState.SESSION_STATE_EARLY:
                call.State.onAlerting();
                break;

            case ESessionState.SESSION_STATE_CONNECTING:
                call.State.onConnect();
                break;

            case ESessionState.SESSION_STATE_DISCONNECTED:
                call.State.onReleased();
                break;
            }
        }
 private void SwitchToSignedoutState()
 {
     this.sessionState = ESessionState.NotConnected;
     this.webBrowser.Visibility = Visibility.Collapsed;
     this.FileBrowserControl.Visibility = System.Windows.Visibility.Collapsed;
     this.SigninLabel.Visibility = System.Windows.Visibility.Visible;
     var buttons = (this.Resources["ApplicationBarResources"] as ApplicationBar).Buttons;
     this.ApplicationBar.Buttons.Clear();
     this.ApplicationBar.Buttons.Add(buttons[0]);
 }