private static List <byte> SendActivateGatherFrame() { var list = new List <byte>(); list.AddRange(_frameBuilder.Build(0)); list.AddRange(_frameBuilder.Build(1)); list.AddRange(_frameBuilder.Build(2)); list.AddRange(_frameBuilder.Build(3)); list.AddRange(_frameBuilder.Build(4)); return(list); }
private void SendActivateGatherFrame() { var list = new List <byte>(); list.AddRange(_frameBuilder.Build(0)); list.AddRange(_frameBuilder.Build(1)); list.AddRange(_frameBuilder.Build(2)); list.AddRange(_frameBuilder.Build(3)); list.AddRange(_frameBuilder.Build(4)); _bitkyTcpServer.SendDelayed(list.ToArray(), 200); }
// No need for these to be public! public void SendSubscribeRequest(string channel) { FrameBuilder blder = new FrameBuilder(); blder.WriteString(channel); socket.Send(blder.Build(FrameType.Subscribe)); }
public async Task <PostResult> PostMessage(string topic, byte[] data, QoS qos) { FrameBuilder bld = new FrameBuilder(); bld.WriteByte((byte)(qos == QoS.BestEffort ? 0x00 : 0x01)); // ToDo: Generate Frame Number to receive ACK. currentPacketId++; bld.WriteArray(BitConverter.GetBytes(currentPacketId)); bld.WriteString(topic); bld.WriteMultiByte(data.Length); bld.WriteArray(data); if (qos == QoS.GuaranteedDelivery) { if (!syncSendInProcess.WaitOne(3000)) { return(PostResult.DispatchError); } waitForPacketId = currentPacketId; } socket.Send(bld.Build(FrameType.ChannelEvent)); if (qos == QoS.GuaranteedDelivery) { var replyReceived = waitQosEvent.WaitOne(3000); syncSendInProcess.ReleaseMutex(); return(replyReceived ? PostResult.Delivered : PostResult.DeliveryError); } return(PostResult.Dispatched); }
public void SendPublishReply(UInt32 messageId, PublishStatus status) { FrameBuilder bld = new FrameBuilder(); bld.WriteArray(BitConverter.GetBytes(messageId)); bld.WriteByte((byte)status); socket.Send(bld.Build(FrameType.PubReply)); }
public virtual void SendUnsubReply(string channel) { FrameBuilder theBuilder = new FrameBuilder(); theBuilder.WriteString(channel); socket.Send(theBuilder.Build(FrameType.UnsubReply)); }
public virtual void SendConnectionReply(ConnectionAttemptStatus status) { FrameBuilder theBuilder = new FrameBuilder(); theBuilder.WriteByte((byte)status); socket.Send(theBuilder.Build(FrameType.ConReply)); }
public virtual void SendSubscribeReply(string channel, SubscribeStatus status) { FrameBuilder theBuilder = new FrameBuilder(); theBuilder.WriteString(channel); theBuilder.WriteByte((byte)status); socket.Send(theBuilder.Build(FrameType.SubReply)); }
public void Subscribe_SendsSubscriptionRequest() { FrameBuilder blder = new FrameBuilder(); blder.WriteString("Fnord"); var theFrame = blder.Build(FrameType.Subscribe); client.SendSubscribeRequest("Fnord"); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(theFrame))).MustHaveHappened(); }
private void UpdateColors(object?sender, DreamScreenClient.DeviceColorEventArgs e) { var colors = e.Colors; var frame = _builder.Build(colors); Log.Debug("Update: DS"); _splitter.Update(frame).ConfigureAwait(false); frame.Dispose(); _cs.Counter.Tick("Dreamscreen"); }
public void SendConnectReply_ConRefused_SendsConnectionReply() { FrameBuilder bld = new FrameBuilder(); bld.WriteByte((byte)ConnectionAttemptStatus.Refused); var expectedFrame = bld.Build(FrameType.ConReply); p.SendConnectionReply(ConnectionAttemptStatus.Refused); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(expectedFrame))).MustHaveHappened(); }
public void SendPublishReply_SendsMessageToPeer() { FrameBuilder bld = new FrameBuilder(); bld.WriteArray(BitConverter.GetBytes((UInt32)112233)); bld.WriteByte((byte)PublishStatus.Ack); var expected = bld.Build(FrameType.PubReply); p.SendPublishReply(112233, PublishStatus.Ack); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(expected))).MustHaveHappened(); }
public FireBallAnimation(Coord pt1, Coord pt2, Color color, string symbol = "*") { var line = new Line(pt1, pt2); var fB = new FrameBuilder(); foreach (Coord pt in line) { fB.Clear(); fB.AddFrameItem(symbol, color, pt); AddFrame(fB.Build()); } }
public void SendSubscribeReply_SendsSubscribeReply() { FrameBuilder bld = new FrameBuilder(); bld.WriteString("Test"); bld.WriteByte((byte)SubscribeStatus.Success); var expectedFrame = bld.Build(FrameType.SubReply); p.SendSubscribeReply("Test", SubscribeStatus.Success); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(expectedFrame))).MustHaveHappened(); }
private async Task FlashSector(object o, DynamicEventArgs dynamicEventArgs) { var sector = dynamicEventArgs.Arg0; // When building center, we only need the v and h sectors. var dims = new[] { _systemData.VSectors, _systemData.VSectors, _systemData.HSectors, _systemData.HSectors }; var builder = new FrameBuilder(dims, true, _systemData.UseCenter); var col = Color.FromArgb(255, 255, 0, 0); var emptyColors = ColorUtil.EmptyColors(_systemData.LedCount); var emptySectors = ColorUtil.EmptyColors(_systemData.SectorCount); emptySectors[sector - 1] = col; var tMat = builder.Build(emptySectors); foreach (var dev in _sDevices) { if (dev.Enable) { dev.Testing = true; } } _splitter.DoSend = false; await _splitter.Update(tMat); var colors = _splitter.GetColors().ToArray(); var sectors = _splitter.GetSectors().ToArray(); await SendColors(colors, sectors, 0, true); await Task.Delay(500); await SendColors(emptyColors, emptySectors, 0, true); await Task.Delay(500); await SendColors(colors, sectors, 0, true); await Task.Delay(1000); await SendColors(emptyColors, emptySectors, 0, true); foreach (var dev in _sDevices) { if (dev.Enable) { dev.Testing = false; } } _splitter.DoSend = true; }
public void Publish_SendsPublishframe() { FrameBuilder blder = new FrameBuilder(); blder.WriteByte((byte)QoS.BestEffort); blder.WriteArray(new byte[] { 0x00, 0x00, 0x00, 0x00 }); blder.WriteString("What a great channel!"); blder.WriteString("This is my data!"); var theFrame = blder.Build(FrameType.Publish); client.PostMessage("What a great channel!", Encoding.UTF8.GetBytes("This is my data!"), QoS.BestEffort); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(theFrame))).MustHaveHappened(); }
public Task <PostResult> PostMessage(string topic, byte[] data, QoS qos) { FrameBuilder blder = new FrameBuilder(); blder.WriteByte((byte)qos); // Empty packet id for now! blder.WriteArray(new byte[] { 0x00, 0x00, 0x00, 0x00 }); blder.WriteString(topic); blder.WriteMultiByte(data.Length); blder.WriteArray(data); var theFrame = blder.Build(FrameType.Publish); socket.Send(theFrame); return(new Task <PostResult>(() => PostResult.Dispatched)); }
public void PostMessage_QosGuaranteedDelivery_Fails_If_No_Reply_Arrives() { FrameBuilder bld = new FrameBuilder(); bld.WriteByte(0x01); // Reply Flag bld.WriteArray(new byte[] { 0x01, 0x00, 0x00, 0x00 }); bld.WriteString("Fnord"); bld.WriteString("I am a payload"); var expected = bld.Build(FrameType.ChannelEvent); var result = p.PostMessage("Fnord", Encoding.UTF8.GetBytes("I am a payload"), QoS.GuaranteedDelivery); result.Wait(); Assert.Equal(PostResult.DeliveryError, result.Result); }
public void CanExtract_FrameBuilderOutput() { FrameBuilder blder = new FrameBuilder(); blder.WriteByte(0x44); //Protocol Version 1 // empty client id for now blder.WriteArray(new byte[16]); blder.WriteMultiByte(0); // no secdata blder.WriteMultiByte(0); // no lastwill channel blder.WriteMultiByte(0); // no lastwill data var theFrame = blder.Build(FrameType.Connect); FrameExtractor fex = new FrameExtractor(); Assert.True(fex.TryExtract(theFrame, 23).success == FrameExtractor.ResultState.Ok); }
public void PostMessage_QosGuaranteedDelivery_SetsReplyRequestBit() { FrameBuilder bld = new FrameBuilder(); bld.WriteByte(0x01); // Reply Flag bld.WriteArray(new byte[] { 0x01, 0x00, 0x00, 0x00 }); bld.WriteString("Fnord"); bld.WriteString("I am a payload"); var expected = bld.Build(FrameType.ChannelEvent); var result = p.PostMessage("Fnord", Encoding.UTF8.GetBytes("I am a payload"), QoS.GuaranteedDelivery); result.Wait(); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(expected))).MustHaveHappened(); }
public void PostMessage_SendsMessageToPeer() { FrameBuilder bld = new FrameBuilder(); bld.WriteByte(0x00); // No Flags! bld.WriteArray(new byte[] { 0x01, 0x00, 0x00, 0x00 }); bld.WriteString("Fnord"); bld.WriteString("I am a payload"); var expected = bld.Build(FrameType.ChannelEvent); var result = p.PostMessage("Fnord", Encoding.UTF8.GetBytes("I am a payload"), QoS.BestEffort); result.Wait(); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(expected))).MustHaveHappened(); }
public void Connect_SendsConnectionRequest() { FrameBuilder blder = new FrameBuilder(); blder.WriteByte(1); //Protocol Version 1 // empty client id for now blder.WriteArray(new byte[16]); blder.WriteMultiByte(0); // no secdata blder.WriteMultiByte(0); // no lastwill channel blder.WriteMultiByte(0); // no lastwill data var theFrame = blder.Build(FrameType.Connect); client.Connect(); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(theFrame))).MustHaveHappened(); }
public void Build_CreatesFrame() { builder.WriteArray(new byte[] { 0xAA, 0xBB }); var frame = builder.Build(FrameType.Disconnect); var expectedFrame = new byte[] { 0x02, 0x03, 0x0E, 0xAA, 0xBB, 0x03 }; Assert.True(expectedFrame.SequenceEqual(frame)); }
public void Connect() { FrameBuilder builder = new FrameBuilder(); // Build connection request. FrameBuilder blder = new FrameBuilder(); blder.WriteByte(1); // empty client id for now blder.WriteArray(new byte[16]); blder.WriteMultiByte(0); // no secdata blder.WriteMultiByte(0); // no lastwill channel blder.WriteMultiByte(0); // no lastwill data var theFrame = blder.Build(FrameType.Connect); socket.Send(theFrame); }
public void ChannelEvent_Calls_EventCallback() { string chan = string.Empty; byte[] data = null; client.OnMessageReceived += (x, y) => { chan = x; data = y; }; FrameBuilder blder = new FrameBuilder(); blder.WriteByte(0x00); blder.WriteArray(new byte[] { 0x00, 0x00, 0x12, 0x13 }); // Message ID = 0x12 0x13 blder.WriteString("YetAnotherChannel"); blder.WriteString("TestData"); var theFrame = blder.Build(FrameType.ChannelEvent); client.DataReceivedDelegate(theFrame, theFrame.Length); Assert.Equal(chan, "YetAnotherChannel"); Assert.Equal("TestData", Encoding.UTF8.GetString(data)); }
public void ChannelEvent_SendsReply_If_Replybit_Is_Set() { FrameBuilder blder = new FrameBuilder(); blder.WriteByte(0x01); blder.WriteArray(new byte[] { 0x00, 0x00, 0x12, 0x13 }); // Message ID = 0x12 0x13 blder.WriteString("What a great channel!"); blder.WriteString("This is my data!"); var theFrame = blder.Build(FrameType.ChannelEvent); client.DataReceivedDelegate(theFrame, theFrame.Length); FrameBuilder replyBuilder = new FrameBuilder(); replyBuilder.WriteArray(new byte[] { 0x00, 0x00, 0x12, 0x13 }); replyBuilder.WriteByte(0x00); var replBuffer = replyBuilder.Build(FrameType.EventAck); A.CallTo(() => socket.Send(A <byte[]> .That.IsSameSequenceAs(replBuffer))).MustHaveHappened(); }
private void DispatchChannelEvent(Frame f) { var flagByte = f.payload[0]; var messageId = new byte[4]; Array.Copy(f.payload, 1, messageId, 0, 4); // var clientId = ... var channel = Util.ExtractByteArray(f.payload, 5); var payload = Util.ExtractByteArray(f.payload, 5 + channel.numBytesUsed); OnMessageReceived(System.Text.Encoding.UTF8.GetString(channel.data), payload.data); if ((flagByte & 0x01) != 0x00) { FrameBuilder builder = new FrameBuilder(); builder.WriteArray(messageId); builder.WriteByte((byte)ChannelEventResult.Ok); socket.Send(builder.Build(FrameType.EventAck)); } }
public GlowingAnimation(Atom atomToGlow, Color[] colors = null, int framePerColors = 7) { if(colors == null) { colors = new Color[] { Color.Yellow, Color.Blue, }; } var symbol = atomToGlow.Symbol; var pt = atomToGlow.Position; var fB = new FrameBuilder(); foreach (Color color in colors) { fB.Clear(); fB.AddFrameItem(symbol, color, pt); AddFrame(fB.Build()); } }
public GlowingAnimation(Atom atomToGlow, Color[] colors = null, int framePerColors = 7) { if (colors == null) { colors = new Color[] { Color.Yellow, Color.Blue, }; } var symbol = atomToGlow.Symbol; var pt = atomToGlow.Position; var fB = new FrameBuilder(); foreach (Color color in colors) { fB.Clear(); fB.AddFrameItem(symbol, color, pt); AddFrame(fB.Build()); } }
public BlobsAnimation(List <Coord> centers, int maxRadius, Color color, string symbol = "*") { var fB = new FrameBuilder(); for (int r = 2; r < Math.Max(3, maxRadius); r++) { var circles = centers.Select(c => new SimpleCircle(c, r)); fB.Clear(); foreach (var circle in circles) { foreach (Coord pt in circle) { fB.AddFrameItem(symbol, color, pt); } } AddFrame(fB.Build()); } }
public BlobsAnimation( List<Coord> centers, int maxRadius, Color color, string symbol = "*") { var fB = new FrameBuilder(); for (int r = 2; r < Math.Max(3, maxRadius); r++) { var circles = centers.Select(c => new SimpleCircle(c, r)); fB.Clear(); foreach (var circle in circles) { foreach (Coord pt in circle) { fB.AddFrameItem(symbol, color, pt); } } AddFrame(fB.Build()); } }