/// <summary> /// 初始化网络频道基类的新实例。 /// </summary> /// <param name="name">网络频道名称。</param> /// <param name="networkChannelHelper">网络频道辅助器。</param> public NetworkChannelBase(string name, INetworkChannelHelper networkChannelHelper) { m_Name = name ?? string.Empty; m_SendPacketPool = new Queue <Packet>(); m_ReceivePacketPool = new EventPool <Packet>(EventPoolMode.Default); m_NetworkChannelHelper = networkChannelHelper; m_AddressFamily = AddressFamily.Unknown; m_ResetHeartBeatElapseSecondsWhenReceivePacket = false; m_HeartBeatInterval = DefaultHeartBeatInterval; m_Socket = null; m_SendState = new SendState(); m_ReceiveState = new ReceiveState(); m_HeartBeatState = new HeartBeatState(); m_SentPacketCount = 0; m_ReceivedPacketCount = 0; m_Active = false; m_Disposed = false; NetworkChannelConnected = null; NetworkChannelClosed = null; NetworkChannelMissHeartBeat = null; NetworkChannelError = null; NetworkChannelCustomError = null; networkChannelHelper.Initialize(this); }
private void Unconfigured() { Receive <ConfigureUpdate>(msg => { Context.LogMessageDebug(msg); _state = new HeartBeatState(msg.UpdatePeriod, msg.FactoryUpdatePeriod, DateTimeProvider.Now(), ImmutableDictionary <UpdateType, ImmutableHashSet <IActorRef> > .Empty); Become(Configured); }); }
/// <summary> /// 初始化网络频道的新实例。 /// </summary> /// <param name="name">网络频道名称。</param> /// <param name="networkChannelHelper">网络频道辅助器。</param> public NetworkChannel(string name) { m_Name = name ?? string.Empty; m_SendPacketPool = new Queue <Protocol>(); m_ReceivePacketPool = new Queue <Protocol>(); m_NetworkType = NetworkType.Unknown; m_ResetHeartBeatElapseSecondsWhenReceivePacket = false; m_HeartBeatInterval = DefaultHeartBeatInterval; m_Socket = null; m_Helper = new NetworkChannelHelper(); m_SendState = new SendState(); m_ReceiveState = new ReceiveState(); m_HeartBeatState = new HeartBeatState(); m_SentPacketCount = 0; m_ReceivedPacketCount = 0; m_Active = false; m_Disposed = false; }
/// <summary> /// 初始化网络频道的新实例。 /// </summary> /// <param name="name">网络频道名称。</param> /// <param name="networkHelper">网络辅助器。</param> public NetworkChannel(string name, INetworkHelper networkHelper) { m_Name = name ?? string.Empty; m_NetworkHelper = networkHelper; m_NetworkType = NetworkType.Unknown; m_MaxPacketLength = DefaultMaxPacketLength; m_ResetHeartBeatElapseSecondsWhenReceivePacket = false; m_HeartBeatInterval = DefaultHeartBeatInterval; m_Socket = null; m_ReceiveState = null; m_HeartBeatState = new HeartBeatState(); m_Active = false; m_Disposed = false; NetworkChannelConnected = null; NetworkChannelClosed = null; NetworkChannelSended = null; NetworkChannelReceived = null; NetworkChannelMissHeartBeat = null; NetworkChannelError = null; NetworkChannelCustomError = null; }
private void UpdateFactories(DateTime now) { var diff = now - _state.LastFactoryUpdate; if (diff > _state.FactoryUpdatePeriod) { int remainder; var noPeriods = Math.DivRem((int)diff.TotalMilliseconds, (int)_state.FactoryUpdatePeriod.TotalMilliseconds, out remainder); _state = new HeartBeatState(_state.UpdatePeriod, _state.FactoryUpdatePeriod, now - TimeSpan.FromMilliseconds(remainder), _state.Registrees); if (_state.Registrees.ContainsKey(UpdateType.Factory)) { foreach (var actorRef in _state.Registrees[UpdateType.Factory]) { for (int i = 0; i < noPeriods; i++) { actorRef.Tell(new FactoryTick()); } } } } }
public ConfigurationResult(HeartBeatState state) { State = state; }