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; }
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) { }
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)); }
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; }