Beispiel #1
0
        public MessageRouter(ISerializedMessageHandler serializedMessageHandler,
                             ILogicalEndPoint logicalEndPoint,
                             IRouteManager routeManager,
                             ILogger <MessageRouter> logger = null)
        {
            if (serializedMessageHandler == null)
            {
                throw new ArgumentNullException(nameof(serializedMessageHandler));
            }

            if (logicalEndPoint == null)
            {
                throw new ArgumentNullException(nameof(logicalEndPoint));
            }

            if (routeManager == null)
            {
                throw new ArgumentNullException(nameof(routeManager));
            }

            _serializedMessageHandler = serializedMessageHandler;
            _logicalEndPoint          = logicalEndPoint;
            _routeManager             = routeManager;
            _logger = logger;

            _receiveProcess = new AsyncProcess(ReceiveProcedure, start: true);
            _disposeHelper  = new AsyncDisposeHelper(DisposeInternalAsync, AsyncDisposeHelperOptions.Synchronize);
        }
        public RemoteMessageRouter(ISerializedMessageHandler serializedMessageHandler,
                                   IRequestReplyClientEndPoint logicalEndPoint,
                                   IDateTimeProvider dateTimeProvider,
                                   ILogger <RemoteMessageRouter> logger = null)
        {
            if (serializedMessageHandler == null)
            {
                throw new ArgumentNullException(nameof(serializedMessageHandler));
            }

            if (logicalEndPoint == null)
            {
                throw new ArgumentNullException(nameof(logicalEndPoint));
            }

            if (dateTimeProvider == null)
            {
                throw new ArgumentNullException(nameof(dateTimeProvider));
            }

            _serializedMessageHandler = serializedMessageHandler;
            _logicalEndPoint          = logicalEndPoint;
            _dateTimeProvider         = dateTimeProvider;
            _logger = logger;

            _receiveProcess = new AsyncProcess(ReceiveProcess, start: true);
        }
Beispiel #3
0
        public IMessageRouter CreateMessageRouter(ISerializedMessageHandler serializedMessageHandler)
        {
            if (serializedMessageHandler == null)
            {
                throw new ArgumentNullException(nameof(serializedMessageHandler));
            }

            return(CreateMessageRouterInternal(_logicalEndPoint, serializedMessageHandler));
        }
Beispiel #4
0
        public IMessageRouter CreateMessageRouter(EndPointAddress endPoint, ISerializedMessageHandler serializedMessageHandler)
        {
            if (endPoint == default)
            {
                throw new ArgumentDefaultException(nameof(endPoint));
            }

            if (serializedMessageHandler == null)
            {
                throw new ArgumentNullException(nameof(serializedMessageHandler));
            }

            if (_logicalEndPoint.EndPoint == endPoint)
            {
                return(CreateMessageRouterInternal(_logicalEndPoint, serializedMessageHandler));
            }

            var logicalEndPoint = _endPointManager.CreateLogicalEndPoint(endPoint);

            return(CreateMessageRouterInternal(logicalEndPoint, serializedMessageHandler));
        }
Beispiel #5
0
        private IMessageRouter CreateMessageRouterInternal(ILogicalEndPoint endPoint, ISerializedMessageHandler serializedMessageHandler)
        {
            var logger     = _loggerFactory?.CreateLogger <MessageRouter>();
            var routeStore = _routeManagerFactory.CreateRouteManager();

            Assert(routeStore != null);

            return(new MessageRouter(serializedMessageHandler, endPoint, routeStore, logger));
        }