public RemoteSubscriber(ServerConnection connection) { _connection = connection; SubscribeReceived = _connection.ControlReceived.Where((cc) => cc.Control == ControlBytes.Subscribe).Select((cc) => cc.Data); UnsubscribeReceived = _connection.ControlReceived.Where((cc) => cc.Control == ControlBytes.Unsubscribe).Select((cc) => cc.Data); _messageSubject.Select(message => DelimitationProvider.Delimit(message)).Subscribe(_connection.SendData); }
public void DelimitationProviderTest() { var data = "TEST-MESSAGE"; var dataBytes = Encoding.ASCII.GetBytes(data); var delimitedData = DelimitationProvider.Delimit(data); var delimitedDataSegment = new ArraySegment <byte>(delimitedData); var unDelimitedData = DelimitationProvider.Undelimit(delimitedDataSegment)[0]; Assert.True(unDelimitedData.SequenceEqual(dataBytes)); }
public void SendControl(ControlBytes controlByte, string message = null) { if (message != null) { Log.Debug($"Sending control (byte = {controlByte}, message = {message})"); } else { Log.Debug($"Sending control (byte = {controlByte})"); } var bytesToSend = (message == null) ? DelimitationProvider.Delimit((byte)ControlBytes.Escape, (byte)(controlByte)) : DelimitationProvider.Delimit(message, (byte)ControlBytes.Escape, (byte)controlByte); SendData(bytesToSend); }
public void SendMessage(string data) { var delimitedData = DelimitationProvider.Delimit(data); SendData(delimitedData); }