Пример #1
0
 public StateObject(Socket workSocket, Stream buffer, byte[] bytes, RawMessageBuilder builder)
 {
     WorkSocket = workSocket;
     Buffer     = buffer;
     Bytes      = bytes;
     Builder    = builder;
 }
Пример #2
0
        public virtual void DispatchMessageFor(RawMessageBuilder builder)
        {
            if (!builder.HasContent)
            {
                return;
            }

            builder.PrepareContent().Sync();

            while (builder.IsCurrentMessageComplete())
            {
                try
                {
                    var message = builder.CurrentRawMessage();
                    Consumer?.Consume(message);
                }
                catch (Exception e)
                {
                    Logger.Error($"Cannot dispatch message for: '{Name}'", e);
                }

                builder.PrepareForNextMessage();

                if (builder.HasContent)
                {
                    builder.Sync();
                }
            }
        }
 public RawMessageBuilderTest()
 {
     _buffer  = new MemoryStream(1000);
     _builder = new RawMessageBuilder(1000);
     _node1   = Node.With(Id.Of(1), Name.Of("node1"), Host.Of("localhost"), 37371, 37372);
     _node2   = Node.With(Id.Of(2), Name.Of("node2"), Host.Of("localhost"), 37373, 37374);
     _join    = new Join(_node1);
     _leader  = new Leader(_node2.Id);
 }
Пример #4
0
        public override void Read(Socket channel, RawMessageBuilder builder)
        {
            var buffer = builder.WorkBuffer();
            var bytes  = new byte[buffer.Length];
            var state  = new StateObject(channel, buffer, bytes, builder);

            channel.BeginReceive(bytes, 0, bytes.Length, SocketFlags.None, ReceiveCallback, state);

            Dispatcher.DispatchMessageFor(builder);
        }
Пример #5
0
        public override RawMessage Pack()
        {
            var rawMessageBuilder = new RawMessageBuilder();

            rawMessageBuilder.Add(text, TextLength);
            var rawData = rawMessageBuilder.GetData();
            var message = new RawMessage(Id, rawData);

            return(message);
        }
Пример #6
0
        public override void Read(Socket channel, RawMessageBuilder builder)
        {
            _syncRead.Wait();
            var buffer = builder.WorkBuffer();
            var bytes  = new byte[buffer.Length];
            var state  = new StateObject(channel, buffer, bytes, builder);

            _logger.Debug($"SocketChannelSelectionReader receiving [{buffer.Length}]");
            channel.BeginReceive(bytes, 0, bytes.Length, SocketFlags.None, ReceiveCallback, state);
            Dispatcher.DispatchMessageFor(builder);
        }
        protected RawMessage Pack(byte id)
        {
            var rawMessageBuilder = new RawMessageBuilder();

            rawMessageBuilder.Add(firstNote);
            rawMessageBuilder.Add(velocity);
            rawMessageBuilder.Add(debouncingTime);
            rawMessageBuilder.Add(pedalPins, PinCount);
            var rawData = rawMessageBuilder.GetData();
            var message = new RawMessage(id, rawData);

            return(message);
        }
Пример #8
0
        public override RawMessage Pack()
        {
            var rawMessageBuilder = new RawMessageBuilder();

            rawMessageBuilder.Add(configurationOk);
            rawMessageBuilder.Add(pressedPedals);
            rawMessageBuilder.Add(playedNotes);
            rawMessageBuilder.Add(numberOfToggledPedals);
            rawMessageBuilder.Add(numberOfToggledNotes);
            rawMessageBuilder.Add(numberOfReceivedBytes);
            rawMessageBuilder.Add(numberOfDiscardedBytes);
            var rawData = rawMessageBuilder.GetData();
            var message = new RawMessage(Id, rawData);

            return(message);
        }
Пример #9
0
 public abstract void Read(Socket channel, RawMessageBuilder builder);