Esempio n. 1
0
        public RpcClientServer(ITopologyLoader topologyLoader, TimeoutSettings defaultTimeout, ISettingsLoader settingsLoader, RpcComponentOverrides componentOverrides = null)
        {
            topology            = topologyLoader.Load();
            this.defaultTimeout = defaultTimeout;
            settings            = settingsLoader.LoadHostSettings();
            var componentContainer = new RpcClientServerComponentContainer(this, componentOverrides ?? new RpcComponentOverrides());

            logger = componentContainer.GetLogger();
            serviceImplementationContainer = componentContainer.GetServiceImplementationContainer();
            requestReceiver       = componentContainer.GetRequestReceiverContainer().GetReceiver(settings.EndPoint.Protocol);
            serviceProxyContainer = componentContainer.GetIServiceProxyContainer();
        }
Esempio n. 2
0
        public Client(IMessageConnection client, ISerializer serializer)
        {
            _report = ReportFactory.GetReporter(SystemGuidLoader.LoadOrCreateOrEmpty(), Guid.NewGuid(), "FuseProtocol");
            _client = client;
            var messagesOut = client.OutgoingMessages.Serialized(serializer);

            // TODO: Find a way to either log or do something about parse errors.
            var messagesIn = client.IncomingMessages.TryDeserialize(serializer,
                                                                    _report);

            messagesIn.Subscribe(a => { }, () => _connectionLost.OnNext(DateTime.Now));

            _requestSender     = new RequestSender(_report, messagesIn, messagesOut);
            _receiver          = new RequestReceiver(_report, messagesIn.OfType <IRequestMessage <UnresolvedMessagePayload> >(), messagesOut);
            _eventBroadcaster  = Observer.Create <IEventData>(e => messagesOut.OnNext(Event.Create(e)));
            _broadcastedEvents = messagesIn.OfType <IEventMessage <UnresolvedMessagePayload> >();
        }