public void ExactDoublePageSize_ShouldBeSame() { var ep = A.Fake <EndPoint>(); var buffer = new BMSByte(); var destructor = AbstractFactory.Get <INetworkTypeFactory>().GetNew <IMessageDestructor>(); var bufferInterpreter = AbstractFactory.Get <INetworkTypeFactory>().GetNew <IMessageBufferInterpreter>(); buffer.AugmentSize(destructor.MaxPageLength * 2); buffer.PointToEnd(); for (int i = 0; i < buffer.Size; i++) { buffer[i] = (byte)(i % byte.MaxValue); } var beforeBuffer = new BMSByte(); beforeBuffer.Clone(buffer); IPagenatedMessage pm = destructor.BreakdownMessage(buffer); IMessageConstructor constructor = null; for (int i = 0; i < pm.Pages.Count; i++) { BMSByte pageBuffer = GetPageSection(buffer, pm, i); constructor = bufferInterpreter.ReconstructPacketPage(pageBuffer, ep); } Assert.IsNotNull(constructor); Assert.IsTrue(constructor.MessageReconstructed); Assert.AreEqual(beforeBuffer.Size, constructor.MessageBuffer.Size); for (int i = 0; i < beforeBuffer.Size; i++) { Assert.AreEqual(beforeBuffer[i], constructor.MessageBuffer[i]); } }
public void PartialSinglePage_ShouldBeSame() { var buffer = new BMSByte(); var destructor = AbstractFactory.Get <INetworkTypeFactory>().GetNew <IMessageDestructor>(); var bufferInterpreter = AbstractFactory.Get <INetworkTypeFactory>().GetNew <IMessageBufferInterpreter>(); buffer.AugmentSize(destructor.MaxPageLength / 2); buffer.PointToEnd(); for (int i = 0; i < buffer.Size; i++) { buffer[i] = (byte)(i % byte.MaxValue); } var beforeBuffer = new BMSByte(); beforeBuffer.Clone(buffer); IPagenatedMessage pm = destructor.BreakdownMessage(buffer); IMessageConstructor constructor = bufferInterpreter.ReconstructPacketPage(pm.Buffer, A.Fake <EndPoint>()); Assert.IsTrue(constructor.MessageReconstructed); Assert.AreEqual(beforeBuffer.Size, constructor.MessageBuffer.Size); for (int i = 0; i < beforeBuffer.Size; i++) { Assert.AreEqual(beforeBuffer[i], constructor.MessageBuffer[i]); } }
private void ContinueProcessingExistingConstructor(BMSByte buffer, IMessageConstructor constructor, EndPoint sender) { constructor.ReconstructMessagePage(buffer, sender); if (constructor.MessageReconstructed) { _messageConstructors[sender].Remove(constructor); } }
public GetPropertyMessageHandler( IMessageConstructor messageConstructor, IClientLookup clientLookup, IObjectStorage objectStorage) { this.m_MessageConstructor = messageConstructor; this.m_ClientLookup = clientLookup; this.m_ObjectStorage = objectStorage; }
public DevicePingService(IDevicePingRepository devicePingRepository, ILoggingService loggingService, IMessageConstructor messageConstructor, IEnumerable <IRequestValidator <IServiceRequest> > validators, IRequestValidator <DevicePingLogRequest> pingValidator, ITransactions transactions, IMapper mapper) : base(null, mapper, loggingService) { _devicePingRepository = devicePingRepository; _messageConstructor = messageConstructor; _validators = validators; _pingValidator = pingValidator; }
public FetchMessageHandler( IObjectStorage lookup, IMessageConstructor messageConstructor, IClientLookup clientLookup, IObjectWithTypeSerializer objectWithTypeSerializer) { this.m_Lookup = lookup; this.m_MessageConstructor = messageConstructor; this.m_ClientLookup = clientLookup; this.m_ObjectWithTypeSerializer = objectWithTypeSerializer; }
/// <summary> /// Initializes a new instance of the <see cref="DefaultClientConnector"/> class. /// </summary> /// <param name="clientLookup"> /// The client lookup. /// </param> /// <param name="clientHandlerFactory"> /// The client handler factory. /// </param> /// <param name="messageConstructor"> /// The message constructor. /// </param> /// <param name="messageSideChannel"> /// The message side channel. /// </param> public DefaultClientConnector( IClientLookup clientLookup, IClientHandlerFactory clientHandlerFactory, IMessageConstructor messageConstructor, IMessageSideChannel messageSideChannel) { this.m_ClientLookup = clientLookup; this.m_ClientHandlerFactory = clientHandlerFactory; this.m_MessageConstructor = messageConstructor; this.m_MessageSideChannel = messageSideChannel; }
public InvokeMessageHandler( ILocalNode localNode, IObjectStorage objectStorage, IObjectWithTypeSerializer objectWithTypeSerializer, IMessageConstructor messageConstructor, IClientLookup clientLookup) { this.m_LocalNode = localNode; this.m_ObjectStorage = objectStorage; this.m_ObjectWithTypeSerializer = objectWithTypeSerializer; this.m_MessageConstructor = messageConstructor; this.m_ClientLookup = clientLookup; }
public DefaultObjectLookup( ILocalNode localNode, IObjectStorage objectStorage, IClientLookup clientLookup, IMessageConstructor messageConstructor, IMessageSideChannel messageSideChannel) { this.m_LocalNode = localNode; this.m_ObjectStorage = objectStorage; this.m_ClientLookup = clientLookup; this.m_MessageConstructor = messageConstructor; this.m_MessageSideChannel = messageSideChannel; }
public SetPropertyMessageHandler( ILocalNode localNode, IObjectStorage objectStorage, IObjectWithTypeSerializer objectWithTypeSerializer, IMessageConstructor messageConstructor, IClientLookup clientLookup) { this.m_LocalNode = localNode; this.m_ObjectStorage = objectStorage; this.m_ObjectWithTypeSerializer = objectWithTypeSerializer; this.m_MessageConstructor = messageConstructor; this.m_ClientLookup = clientLookup; }
protected DeviceConfigTemplateBase(IInjectConfig injectInfo, IDeviceConfigRepository deviceConfigRepository, IParameterAttributeCache parameterAttributeCache, IMapper mapper, ILoggingService loggingService, IEnumerable <IRequestValidator <IServiceRequest> > requestInvalidateValidators, IEnumerable <IRequestValidator <DeviceConfigRequestBase> > commonDeviceLevelValidators, IAssetDeviceRepository assetDeviceRepository, IMessageConstructor messageConstructor, IAckBypasser ackBypasser, IOptions <Configurations> configurations, IDeviceConfigSettingConfig settingsConfig, ITransactions transactions) : base(injectInfo, deviceConfigRepository, parameterAttributeCache, mapper, assetDeviceRepository, messageConstructor, ackBypasser, settingsConfig, configurations, transactions, loggingService) { _requestInvalidateValidators = requestInvalidateValidators; _commonDeviceLevelValidators = commonDeviceLevelValidators; _parameterAttributeCache = parameterAttributeCache; }
public DeviceConfigSwitchesService( IEnumerable <IRequestValidator <IServiceRequest> > requestInvalidateValidators, IEnumerable <IRequestValidator <DeviceConfigRequestBase> > commonDeviceLevelValidators, ISwitchesValidator switchesValidator, IInjectConfig injectConfig, IDeviceConfigRepository deviceConfigRepository, IParameterAttributeCache parameterAttributeCache, IMessageConstructor messageConstructor, IAckBypasser ackBypasser, IDeviceConfigSettingConfig settingsConfig, IAssetDeviceRepository assetDeviceRepository, IOptions <Configurations> configurations, IMapper mapper, ILoggingService loggingService, ITransactions transactions) : base(injectConfig, deviceConfigRepository, parameterAttributeCache, mapper, loggingService, requestInvalidateValidators, commonDeviceLevelValidators, assetDeviceRepository, messageConstructor, ackBypasser, configurations, settingsConfig, transactions) { _attributeToRequestMaps = injectConfig.ResolveKeyed <DeviceConfigAttributeToRequestMaps>("DeviceConfigAttributeToRequestMaps"); _requestToAttributeMaps = injectConfig.ResolveKeyed <DeviceConfigRequestToAttributeMaps>("DeviceConfigRequestToAttributeMaps"); _switchesValidtor = switchesValidator; _sendAllSwitchesDeviceFamilyLists = configurations.Value.AppSettings.DeviceConfigSendAllSwitchesDeviceFamilyLists.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); }
public void ExactTripplePageSizeInRandomOrder_ShouldBeSame() { var ep = A.Fake <EndPoint>(); var buffer = new BMSByte(); var destructor = AbstractFactory.Get <INetworkTypeFactory>().GetNew <IMessageDestructor>(); var bufferInterpreter = AbstractFactory.Get <INetworkTypeFactory>().GetNew <IMessageBufferInterpreter>(); buffer.AugmentSize(destructor.MaxPageLength * 3); buffer.PointToEnd(); for (int i = 0; i < buffer.Size; i++) { buffer[i] = (byte)(i % byte.MaxValue); } var beforeBuffer = new BMSByte(); beforeBuffer.Clone(buffer); IPagenatedMessage pm = destructor.BreakdownMessage(buffer); IMessageConstructor constructor = null; int[] indexes = new int[pm.Pages.Count]; for (int i = 0; i < indexes.Length; i++) { indexes[i] = i; } Random rnd = new Random(); indexes = indexes.OrderBy(x => rnd.Next()).ToArray(); for (int i = 0; i < indexes.Length; i++) { BMSByte pageBuffer = GetPageSection(buffer, pm, indexes[i]); constructor = bufferInterpreter.ReconstructPacketPage(pageBuffer, ep); } Assert.IsNotNull(constructor); Assert.IsTrue(constructor.MessageReconstructed); Assert.AreEqual(beforeBuffer.Size, constructor.MessageBuffer.Size); for (int i = 0; i < beforeBuffer.Size; i++) { Assert.AreEqual(beforeBuffer[i], constructor.MessageBuffer[i]); } }
// Note: This is called from the read thread without sync context public void ReceiveMessageBuffer(ISocket readingSocket, EndPoint messageSender, BMSByte buffer) { IMessageConstructor constructor = MessageBufferInterpreter.ReconstructPacketPage(buffer, messageSender); if (constructor.MessageReconstructed) { try { var m = (IMessage)ForgeMessageCodes.Instantiate(constructor.MessageBuffer.GetBasicType <int>()); ProcessMessageSignature(readingSocket, messageSender, constructor.MessageBuffer, m); if (m.Receipt != null) { if (_storedMessages.Exists(messageSender, m.Receipt)) { return; } _storedMessages.AddMessage(m, messageSender, _networkMediator.PlayerTimeout); } m.Deserialize(constructor.MessageBuffer); var interpreter = m.Interpreter; if (interpreter != null) { _synchronizationContext.Post(InterpretWithinContext, new SocketContainerSynchronizationReadData { Interpreter = interpreter, Sender = messageSender, Message = m }); } } catch (MessageCodeNotFoundException ex) { _networkMediator.EngineProxy.Logger.LogException(ex); } MessageBufferInterpreter.Release(constructor); } }
protected DeviceConfigRepositoryServiceBase(IInjectConfig injectInfo, IDeviceConfigRepository deviceConfigRepository, IParameterAttributeCache parameterAttributeCache, IMapper mapper, IAssetDeviceRepository assetDeviceRepository, IMessageConstructor messageConstructor, IAckBypasser ackBypasser, IDeviceConfigSettingConfig settingsConfig, IOptions <Configurations> configurations, ITransactions transactions, ILoggingService loggingService) : base(parameterAttributeCache, mapper, loggingService) { this._attributeMaps = injectInfo.ResolveKeyed <DeviceConfigAttributeToRequestMaps>("DeviceConfigAttributeToRequestMaps"); this._deviceConfigRepository = deviceConfigRepository; this._loggingService.CreateLogger(this.GetType()); this._messageConstructor = messageConstructor; this._ackBypasser = ackBypasser; this._settingsConfig = settingsConfig; this._assetDeviceRepository = assetDeviceRepository; this._deviceService = new MessageConstructorDeviceService(configurations); this._deviceTypeFamilyContainer = _deviceService.GetDeviceTypeFamily(); this._configurations = configurations; //this._assetDeviceConfigApiUrl = ConfigurationManager.AppSettings["PendingDeviceConfigApiUri"]; this._pendingClearOffDeviceTypes = _configurations.Value.AppSettings.ClearOffPendingValueForDeviceTypes.Split(',').ToList(); this._pendingClearOffDays = _configurations.Value.AppSettings.ClearOffPendingValueGreaterThanNoOfDays; this._transactions = transactions; }
public void RemovingAPlayer_ShouldRemoveBufferedMessages() { var ep = A.Fake <EndPoint>(); var player = A.Fake <INetPlayer>(); A.CallTo(() => player.EndPoint).Returns(ep); var buffer = new BMSByte(); var destructor = AbstractFactory.Get <INetworkTypeFactory>().GetNew <IMessageDestructor>(); var bufferInterpreter = AbstractFactory.Get <INetworkTypeFactory>().GetNew <IMessageBufferInterpreter>(); buffer.AugmentSize(destructor.MaxPageLength + destructor.MaxPageLength / 2); buffer.PointToEnd(); for (int i = 0; i < buffer.Size; i++) { buffer[i] = (byte)(i % byte.MaxValue); } var beforeBuffer = new BMSByte(); beforeBuffer.Clone(buffer); IPagenatedMessage pm = destructor.BreakdownMessage(buffer); IMessageConstructor constructor = null; for (int i = 0; i < pm.Pages.Count - 1; i++) { BMSByte pageBuffer = GetPageSection(buffer, pm, i); constructor = bufferInterpreter.ReconstructPacketPage(pageBuffer, ep); } bufferInterpreter.ClearBufferFor(player); Assert.IsNotNull(constructor); Assert.IsFalse(constructor.MessageReconstructed); BMSByte pbuf = GetPageSection(buffer, pm, pm.Pages.Count - 1); constructor = bufferInterpreter.ReconstructPacketPage(pbuf, ep); Assert.IsFalse(constructor.MessageReconstructed); }
public IMessageConstructor ReconstructPacketPage(BMSByte buffer, EndPoint sender) { int messageId = buffer.GetBasicType <int>(); IMessageConstructor constructor = null; if (_messageConstructors.TryGetValue(sender, out var constructors)) { foreach (var c in constructors) { if (c.Id == messageId) { constructor = c; ContinueProcessingExistingConstructor(buffer, constructor, sender); break; } } } if (constructor == null) { constructor = ProcessNewConstructor(buffer, messageId, sender); } return(constructor); }
/// <summary> /// Initializes a new instance of the <see cref="ConnectionPingMessageHandler"/> class. /// </summary> /// <param name="messageConstructor"> /// The message constructor. /// </param> /// <param name="clientLookup"> /// The client lookup. /// </param> public ConnectionPingMessageHandler(IMessageConstructor messageConstructor, IClientLookup clientLookup) { this.m_MessageConstructor = messageConstructor; this.m_ClientLookup = clientLookup; }
public DeviceConfigMaintenanceModeService(IInjectConfig injectConfig, IDeviceConfigRepository deviceConfigRepository, IEnumerable <IRequestValidator <DeviceConfigRequestBase> > deviceConfigRequestValidators, IEnumerable <IRequestValidator <IServiceRequest> > serviceRequestValidators, IEnumerable <IRequestValidator <DeviceConfigMaintenanceModeRequest> > MaintenanceModeValidators, IAssetDeviceRepository assetDeviceRepository, IOptions <Configurations> configurations, IParameterAttributeCache parameterAttributeCache, IMapper mapper, IMessageConstructor messageConstructor, IAckBypasser ackBypasser, IDeviceConfigSettingConfig settingsConfig, ITransactions transactions, ILoggingService loggingService) : base(injectConfig, deviceConfigRepository, parameterAttributeCache, mapper, assetDeviceRepository, messageConstructor, ackBypasser, settingsConfig, configurations, transactions, loggingService) { this._deviceConfigRequestValidators = deviceConfigRequestValidators; this._serviceRequestValidators = serviceRequestValidators; this._MaintenanceModeValidators = MaintenanceModeValidators; this._loggingService.CreateLogger(this.GetType()); }
public void Release(IMessageConstructor constructor) { _bufferPool.Release(constructor.MessageBuffer); }