public StateObject(Socket workSocket, Stream buffer, byte[] bytes, RawMessageBuilder builder) { WorkSocket = workSocket; Buffer = buffer; Bytes = bytes; Builder = builder; }
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); }
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); }
public override RawMessage Pack() { var rawMessageBuilder = new RawMessageBuilder(); rawMessageBuilder.Add(text, TextLength); var rawData = rawMessageBuilder.GetData(); var message = new RawMessage(Id, rawData); return(message); }
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); }
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); }
public abstract void Read(Socket channel, RawMessageBuilder builder);