/// <summary>
        /// States the handle.
        /// State는 두개뿐이니 일단은 이렇게.
        /// 만약 더 추가 될게 있으면 State패턴으로 변경
        /// </summary>
        /// <param name="state">The state.</param>
        public void SwitchStateHandle(TCPCommon.NETWORK_STATE state)
        {
            if (mTCPState == state)
            {
                return;
            }

            mTCPState = state;
            switch (mTCPState)
            {
            case TCPCommon.NETWORK_STATE.CONNECT:
            {
                mNetworkState = new NetworkConnectedState(mClientSession);
            }
            break;

            case TCPCommon.NETWORK_STATE.DISCONNECT:
            {
                mNetworkState = new NetworkDisconnectedState(mIp, mPort, mProtocolResolver, mClientSession);
            }
            break;

            case TCPCommon.NETWORK_STATE.NONE:
            {
                mNetworkState = new NetworkNoneState();
            }
            break;

            default:
                return;
            }

            mNetworkState.Enter(this);
        }
        public RouteNetworkEventHandler(ILoggerFactory loggerFactory, INetworkState networkState)
        {
            if (null == loggerFactory)
            {
                throw new ArgumentNullException("loggerFactory is null");
            }

            _logger = loggerFactory.CreateLogger <RouteNetworkEventHandler>();

            _networkState = networkState;
        }
Example #3
0
        public static XElement ToXElement(this INetworkState state, string nodeName = "HomeAutomationNetwork")
        {
            var result = new XElement(nodeName);

            if (!String.IsNullOrWhiteSpace(state.Address))
            {
                result.Add(new XAttribute("Address", state.Address));
            }

            if (!String.IsNullOrWhiteSpace(state.Name))
            {
                result.Add(new XAttribute("Name", state.Name));
            }

            foreach (var device in state.DeviceStates)
            {
                result.Add(device.ToXElement());
            }

            return(result);
        }
Example #4
0
 /// <summary>
 /// Update the state of the conversation.
 /// </summary>
 /// <param name="id"></param>
 public void SetState(NetworkStateId id)
 {
     _state = _container.GetNetworkState(id);
 }
Example #5
0
 public NetworkStateContext(NetworkStateContainer container, IBspDisconnecter disconnecter)
 {
     _container    = container;
     _disconnecter = disconnecter;
     _state        = container.GetNetworkState(NetworkStateId.NotConnected);
 }