public TcpBusServerSide(
            IPAddress hostIp,
            int commandPort,
            IEnumerable <Type> inboundDiscardingMessageTypes = null,
            QueuedHandlerDiscarding inboundDiscardingMessageQueuedHandler = null,
            IEnumerable <Type> inboundNondiscardingMessageTypes           = null,
            QueuedHandler inboundNondiscardingMessageQueuedHandler        = null,
            Dictionary <Type, IMessageSerializer> messageSerializers      = null)
            : base(
                hostIp,
                commandPort,
                inboundDiscardingMessageTypes,
                inboundDiscardingMessageQueuedHandler,
                inboundNondiscardingMessageTypes,
                inboundNondiscardingMessageQueuedHandler,
                messageSerializers)
        {
            Log.Debug($"Configuring TCP Listener at {CommandEndpoint.AddressFamily}, {CommandEndpoint}.");

            var listener = new TcpServerListener(CommandEndpoint);

            listener.StartListening(
                (endPoint, socket) =>
            {
                var connectionId = Guid.NewGuid();
                var conn         = TcpConnection.CreateAcceptedTcpConnection(connectionId, endPoint, socket, verbose: true);

                var framer = new LengthPrefixMessageFramer();
                framer.RegisterMessageArrivedCallback(TcpMessageArrived);

                Action <ITcpConnection, IEnumerable <ArraySegment <byte> > > callback = null;
                callback = (x, data) =>
                {
                    try
                    {
                        framer.UnFrameData(x.ConnectionId, data);
                    }
                    catch (PackageFramingException exc)
                    {
                        Log.ErrorException(exc, "LengthPrefixMessageFramer.UnFrameData() threw an exception:");
                        return;
                    }
                    x.ReceiveAsync(callback);
                };
                conn.ReceiveAsync(callback);
                AddConnection(conn);
            },
                "Standard");
            Log.Debug($"TCP Listener at {CommandEndpoint.AddressFamily}, {CommandEndpoint} successfully configured.");
            _commandPortListener = listener;
        }
Exemple #2
0
 protected TcpBus(
     IPAddress hostIp,
     int commandPort,
     IEnumerable <Type> inboundDiscardingMessageTypes = null,
     QueuedHandlerDiscarding inboundDiscardingMessageQueuedHandler = null,
     IEnumerable <Type> inboundNondiscardingMessageTypes           = null,
     QueuedHandler inboundNondiscardingMessageQueuedHandler        = null,
     Dictionary <Type, IMessageSerializer> messageSerializers      = null)
     : this(
         new IPEndPoint(hostIp, commandPort),
         inboundDiscardingMessageTypes,
         inboundDiscardingMessageQueuedHandler,
         inboundNondiscardingMessageTypes,
         inboundNondiscardingMessageQueuedHandler,
         messageSerializers)
 {
 }
Exemple #3
0
 public TcpBusClientSide(
     EndPoint endpoint,
     IEnumerable <Type> inboundDiscardingMessageTypes,
     QueuedHandlerDiscarding inboundDiscardingMessageHandler,
     IEnumerable <Type> inboundNondiscardingMessageTypes,
     QueuedHandler inboundNondiscardingMessageHandler,
     ITcpConnection tcpConnection = null,
     Dictionary <Type, IMessageSerializer> messageSerializers = null)
     : base(
         endpoint,
         inboundDiscardingMessageTypes,
         inboundDiscardingMessageHandler,
         inboundNondiscardingMessageTypes,
         inboundNondiscardingMessageHandler,
         messageSerializers)
 {
     AddConnection(tcpConnection ?? CreateTcpConnection(CommandEndpoint));
 }
Exemple #4
0
 protected TcpBus(
     EndPoint endpoint,
     IEnumerable <Type> inboundDiscardingMessageTypes = null,
     QueuedHandlerDiscarding inboundDiscardingMessageQueuedHandler = null,
     IEnumerable <Type> inboundNondiscardingMessageTypes           = null,
     QueuedHandler inboundNondiscardingMessageQueuedHandler        = null,
     Dictionary <Type, IMessageSerializer> messageSerializers      = null)
 {
     CommandEndpoint = endpoint;
     _inboundDiscardingMessageTypes            = inboundDiscardingMessageTypes?.ToArray() ?? new Type[0];
     _inboundDiscardingMessageQueuedHandler    = inboundDiscardingMessageQueuedHandler;
     _inboundNondiscardingMessageTypes         = inboundNondiscardingMessageTypes?.ToArray() ?? new Type[0];
     _inboundNondiscardingMessageQueuedHandler = inboundNondiscardingMessageQueuedHandler;
     MessageSerializers   = messageSerializers ?? new Dictionary <Type, IMessageSerializer>();
     Encoder              = new TcpMessageEncoder();
     _statsTimer          = new Timer(60000);    // getting the stats takes a while - only do it once a minute
     _statsTimer.Elapsed += StatsTimer_Elapsed;
     _statsTimer.Enabled  = true;
 }