예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #3
0
        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);
        }
예제 #4
0
        public void SendMessage(string data)
        {
            var delimitedData = DelimitationProvider.Delimit(data);

            SendData(delimitedData);
        }