public void StartServer() { TcpServerChannel tcpServerChannel = new TcpServerChannel("TcpServerChannel", 9988); IActivator activator1 = new OneTimeActivator("Activator1"); byte[] command1Bytes = new byte[] { 0x01, 0x16 }; activator1.AddCommand(new ByteArrayCommand("command1", tcpServerChannel, command1Bytes)); SingleFormatterByteArrayInterpreter interpreter = new SingleFormatterByteArrayInterpreter("Interpreter"); interpreter.SetHeaders(new byte[] { 0x55, 0xAA }); interpreter.SetTailers(new byte[] { 0xAA, 0x55 }); ByteArrayFormatter formatter = new ByteArrayFormatter("Formatter1"); formatter.AddItem(new ByteArrayStringItem("NodeName", 1, 6, Encoding.ASCII)); formatter.AddItem(new ByteArrayInt32Item("NodeId", 0)); formatter.AddItem(new ByteArrayInt16Item("Temperature", 2)); formatter.AddItem(new ByteArrayDoubleItem("Longitude", 3)); formatter.AddItem(new ByteArrayByteItem("Reserved", 4)); interpreter.AddFormatter(formatter); tcpServerChannel.Connected += activator1.SendToTarget; ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", tcpServerChannel, interpreter, Program.ShowEnvelop); baa.Setup(); }
private void ReadCallback(IAsyncResult ar) { Console.WriteLine("Message Socket: Start"); try { Parallel.Invoke(() => { var buffer = (byte[])ar.AsyncState; var rec = _s.EndReceive(ar); if (rec != 0) { var message = ByteArrayFormatter.DeserializeMessage(buffer, rec); Console.WriteLine("Message Socket: " + message); Received(message); } else { _connected = false; Close(); return; } _s.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReadCallback, buffer); }); } catch (AggregateException ex) { Console.WriteLine(ex.StackTrace); } }
public void StartServer() { TcpServerChannel channelTcpServer = new TcpServerChannel("TcpServerChannel", 9988); SingleFormatterByteArrayInterpreter interpreter = new SingleFormatterByteArrayInterpreter("Interpreter"); interpreter.SetTailers(new byte[] { 0xAA, 0x55 }); interpreter.SetHeaders(new byte[] { 0x55, 0xAA }); ByteArrayFormatter formatter = new ByteArrayFormatter("Formatter1"); ByteArrayCompositeValueItem byteArrayCompositeValueItem = new ByteArrayCompositeValueItem("ByteArrayCompositeValueItem1"); byteArrayCompositeValueItem.AddItem(new ByteArrayStringItem("NodeName", 1, 6, Encoding.ASCII)); byteArrayCompositeValueItem.AddItem(new ByteArrayInt32Item("NodeId", 0)); byteArrayCompositeValueItem.AddItem(new ByteArrayInt16Item("Temperature", 2)); byteArrayCompositeValueItem.AddItem(new ByteArrayDoubleItem("Longitude", 3)); byteArrayCompositeValueItem.AddItem(new ByteArrayByteItem("Reserved", 4)); ByteArrayLoopItem byteArrayLoopItem = new ByteArrayLoopItem("byteArrayLoopItem1", 1, byteArrayCompositeValueItem); formatter.AddItem(new ByteArrayInt32Item("Type", 0)); formatter.AddItem(byteArrayLoopItem); interpreter.AddFormatter(formatter); ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", channelTcpServer, interpreter, Program.ShowEnvelop); baa.Setup(); }
public void StartServer() { TcpServerChannel tcpServerChannel = new TcpServerChannel("TcpServerChannel", 9988); SingleFormatterByteArrayInterpreter interpreter = new SingleFormatterByteArrayInterpreter("Interpreter"); interpreter.SetHeaders(new byte[] { 0x55, 0xAA }); interpreter.SetTailers(new byte[] { 0xAA, 0x55 }); ByteArrayFormatter formatter = new ByteArrayFormatter("Formatter1"); formatter.AddItem(new ByteArrayStringItem("NodeName", 1, 6, Encoding.ASCII)); formatter.AddItem(new ByteArrayInt32Item("NodeId", 0)); formatter.AddItem(new ByteArrayInt16Item("Temperature", 2)); formatter.AddItem(new ByteArrayDoubleItem("Longitude", 3)); ByteArrayByteItem babi = new ByteArrayByteItem("Flags", 4); babi.AddBitItem("Flag1", 1); babi.AddBitItem("Flag2", 3); babi.AddBitItem("Flag3", 4); formatter.AddItem(babi); interpreter.AddFormatter(formatter); ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", tcpServerChannel, interpreter, Program.ShowEnvelop); baa.Setup(); }
public async Task Given_ByteArrayFormatter_When_Deserialize_IsCaller_WithValid_Stream_Then_Return_ByteArray() { var sut = new ByteArrayFormatter(); var testExpectation = File.ReadAllBytes("Resources/test-image.png"); var testEntry = BuildMemoryStream(testExpectation); var testResult = await sut.Deserialize <byte[]>(testEntry).ConfigureAwait(false); testResult.Should().BeEquivalentTo(testExpectation); }
/// <summary> /// Construct a new UdpBroadcastStrategy instance. /// </summary> /// <param name="networkInterface"> /// The network interface from which to broadcast. /// </param> /// <param name="ipAddress">The IP address from which to broadcast.</param> /// <param name="useLoopback"> /// Use only the loopback device for broadcasting. /// </param> /// <param name="formatter">The formatter to use to format the payloads.</param> /// <param name="port">The UDP port to broadcast to.</param> public UdpBroadcastStrategy(string networkInterface, string ipAddress, bool useLoopback, ByteArrayFormatter formatter, int port = DefaultPort) { PreferredFormatter = formatter; NetworkInterface = networkInterface; IPAddress = ipAddress; UseLoopback = useLoopback; Port = port; CheckConfiguration(); }
public void Send(string data) { Parallel.Invoke(() => { try { var dataReceived = ByteArrayFormatter.Format(data); _s.BeginSend(dataReceived, 0, dataReceived.Length, SocketFlags.None, SendCallback, dataReceived); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } }); }
public void StartServer() { TcpServerChannel channelTcpServer = new TcpServerChannel("TcpServerChannel", 9988); MultipleFormatterByteArrayInterpreter interpreter = new MultipleFormatterByteArrayInterpreter("Interpreter"); interpreter.SetTailers(new byte[] { 0xAA, 0x55 }); interpreter.SetHeaders(new byte[] { 0x55, 0xAA }); ///////////////////////////////////////////////////////////////////////////////////////// ByteArrayFormatter formatter_F1 = new ByteArrayFormatter("Formatter1", 1); ByteArrayCompositeValueItem byteArrayCompositeValueItem_F1 = new ByteArrayCompositeValueItem("F1_ByteArrayCompositeValueItem1"); byteArrayCompositeValueItem_F1.AddItem(new ByteArrayStringItem("F1_NodeName", 1, 6, Encoding.ASCII)); byteArrayCompositeValueItem_F1.AddItem(new ByteArrayInt32Item("F1_NodeId", 0)); byteArrayCompositeValueItem_F1.AddItem(new ByteArrayInt16Item("F1_Temperature", 2)); byteArrayCompositeValueItem_F1.AddItem(new ByteArrayDoubleItem("F1_Longitude", 3)); byteArrayCompositeValueItem_F1.AddItem(new ByteArrayByteItem("F1_Reserved", 4)); ByteArrayLoopItem byteArrayLoopItem_F1 = new ByteArrayLoopItem("F1_byteArrayLoopItem1", 1, byteArrayCompositeValueItem_F1); formatter_F1.AddItem(new ByteArrayInt32Item("F1_Type", 0)); formatter_F1.AddItem(byteArrayLoopItem_F1); ///////////////////////////////////////////////////////////////////////////////////////// ByteArrayFormatter formatter_F2 = new ByteArrayFormatter("Formatter2", 2); formatter_F2.AddItem(new ByteArrayInt32Item("F2_Type", 0)); formatter_F2.AddItem(new ByteArrayStringItem("F2_NodeName", 2, 6, Encoding.ASCII)); formatter_F2.AddItem(new ByteArrayInt32Item("F2_NodeId", 1)); formatter_F2.AddItem(new ByteArrayInt16Item("F2_Temperature", 3)); formatter_F2.AddItem(new ByteArrayDoubleItem("F2_Longitude", 4)); formatter_F2.AddItem(new ByteArrayByteItem("F2_Reserved", 5)); /////////////////////////////////////////////////////////////////////////////////////////////// ByteArrayTypedFormatterFilter byteArrayTypedFormatterFilter = new ByteArrayTypedFormatterFilter("ByteArrayTypedFormatterFilter", 0); //the index we use 0 meaning the Type Id is the index[0] in the input buffer without header. interpreter.AddFormatter(formatter_F1); interpreter.AddFormatter(formatter_F2); interpreter.AddFormatterFilter(byteArrayTypedFormatterFilter); ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", channelTcpServer, interpreter, Program.ShowEnvelop); baa.Setup(); }
private object GetFormatter(XElement element) { string formatterType = GetAttribute(element, "Type"); string formatterName = GetAttribute(element, "Name"); IObjectWithName returnFormatter = null; if (formatterType == "ByteArrayFormatter") { ByteArrayFormatter formatter = null; if (element.Attribute("TypeId") != null && !string.IsNullOrEmpty(element.Attribute("TypeId").Value)) { formatter = new ByteArrayFormatter(formatterName, byte.Parse(element.Attribute("TypeId").Value)); } else { formatter = new ByteArrayFormatter(formatterName); } foreach (var itemElement in element.Elements("Item")) { formatter.AddItem(GetItem(itemElement)); } returnFormatter = formatter; } else if (formatterType == "StringFormatter") { StringFormatter formatter = new StringFormatter(formatterName); foreach (var itemElement in element.Elements("Item")) { formatter.AddItem(GetItem(itemElement)); } returnFormatter = formatter; } else { throw new UnknownElementException("Unkown formatter type:" + formatterType); } _adapterObjects[_currentAdapterName].Add(returnFormatter.Name, returnFormatter); return(returnFormatter); }
public void StartServer() { TcpServerChannel channelTcpServer = new TcpServerChannel("TcpServerChannel", 9988); SingleFormatterByteArrayInterpreter interpreter = new SingleFormatterByteArrayInterpreter("Interpreter"); ByteArrayFormatter formatter = new ByteArrayFormatter("Formatter1"); formatter.AddItem(new ByteArrayStringItem("NodeName", 1, 6, Encoding.ASCII)); formatter.AddItem(new ByteArrayInt32Item("NodeId", 0)); formatter.AddItem(new ByteArrayInt16Item("Temperature", 2)); formatter.AddItem(new ByteArrayDoubleItem("Longitude", 3)); formatter.AddItem(new ByteArrayByteItem("Reserved", 4)); interpreter.AddFormatter(formatter); ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", channelTcpServer, interpreter, Program.ShowEnvelop); baa.Setup(); }
public void StartServer() { TcpServerChannel channelTcpServer = new TcpServerChannel("TcpServerChannel", 9988); SingleFormatterByteArrayInterpreter interpreter = new SingleFormatterByteArrayInterpreter("Interpreter"); interpreter.SetTailers(new byte[] { 0xAA, 0x55 }); interpreter.SetHeaders(new byte[] { 0x55, 0xAA }); ByteArrayFormatter formatter = new ByteArrayFormatter("Formatter1"); formatter.AddItem(new ByteArrayStringItem("NodeName", 1, 6, Encoding.ASCII)); formatter.AddItem(new ByteArrayInt32Item("NodeId", 0)); formatter.AddItem(new CustomItem("CustomItem", 2, "test2")); formatter.AddItem(new ByteArrayByteItem("Reserved", 3)); interpreter.AddFormatter(formatter); ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", channelTcpServer, interpreter, Program.ShowEnvelop); baa.Setup(); }
protected override string GenerateNonNullSqlLiteral(object value) { switch (_guidFormat) { case MySqlGuidFormat.Char36: return($"'{value:D}'"); case MySqlGuidFormat.Char32: return($"'{value:N}'"); case MySqlGuidFormat.Binary16: case MySqlGuidFormat.TimeSwapBinary16: case MySqlGuidFormat.LittleEndianBinary16: return(ByteArrayFormatter.ToHex(GetBytesFromGuid(_guidFormat, (Guid)value))); case MySqlGuidFormat.None: case MySqlGuidFormat.Default: default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// Generates the SQL representation of a literal value. /// </summary> /// <param name="value">The literal value.</param> /// <returns> /// The generated string. /// </returns> protected override string GenerateNonNullSqlLiteral(object value) => ByteArrayFormatter.ToHex((byte[])value);
public IFormatter GetFormatter(Type type) { // // Do we already have an array or collection formatter? // IFormatter formatter; if (_formatterInstances.TryGetValue(type, out formatter)) { return(formatter); } // // Array? // if (type.IsArray) { var itemType = type.GetElementType(); if (itemType == typeof(byte)) { formatter = new ByteArrayFormatter(_serializer); _formatterInstances[type] = formatter; return(formatter); } if (itemType == typeof(int)) { formatter = new IntArrayFormatter(_serializer); _formatterInstances[type] = formatter; return(formatter); } var formatterType = typeof(ArrayFormatter <>).MakeGenericType(itemType); formatter = (IFormatter)Activator.CreateInstance(formatterType, _serializer); _formatterInstances[type] = formatter; return(formatter); } // // Collection? // // If it implements ICollection, we can serialize it! var closedCollection = ReflectionHelper.FindClosedType(type, typeof(ICollection <>)); // If the type really implements some kind of ICollection, we can create a CollectionFormatter for it if (closedCollection != null) { var itemType = closedCollection.GetGenericArguments()[0]; if (type.GetGenericTypeDefinition() == typeof(List <>)) { var listFormatterType = typeof(ListFormatter <>).MakeGenericType(itemType); formatter = (IFormatter)Activator.CreateInstance(listFormatterType, _serializer); _formatterInstances[type] = formatter; return(formatter); } if (type.GetGenericTypeDefinition() == typeof(Dictionary <,>)) { // itemType is KeyValuePair<,> so we need to deconstruct it var kvpTypes = itemType.GetGenericArguments(); var listFormatterType = typeof(DictionaryFormatter <,>).MakeGenericType(kvpTypes); formatter = (IFormatter)Activator.CreateInstance(listFormatterType, _serializer); _formatterInstances[type] = formatter; return(formatter); } var formatterType = typeof(CollectionFormatter <,>).MakeGenericType(type, itemType); formatter = (IFormatter)Activator.CreateInstance(formatterType, _serializer); _formatterInstances[type] = formatter; return(formatter); } return(null); }
private object GetFormatter(XElement element) { string formatterType = GetAttribute(element, "Type"); string formatterName = GetAttribute(element, "Name"); IObjectWithName returnFormatter = null; if (formatterType == "ByteArrayFormatter") { ByteArrayFormatter formatter = null; if (element.Attribute("TypeId") != null && !string.IsNullOrEmpty(element.Attribute("TypeId").Value)) { formatter = new ByteArrayFormatter(formatterName, byte.Parse(element.Attribute("TypeId").Value)); } else { formatter = new ByteArrayFormatter(formatterName); } foreach (var itemElement in element.Elements("Item")) { formatter.AddItem(GetItem(itemElement)); } returnFormatter = formatter; } else if (formatterType == "StringFormatter") { StringFormatter formatter = new StringFormatter(formatterName); foreach (var itemElement in element.Elements("Item")) { formatter.AddItem(GetItem(itemElement)); } returnFormatter = formatter; } else { throw new UnknownElementException("Unkown formatter type:" + formatterType); } _adapterObjects[_currentAdapterName].Add(returnFormatter.Name, returnFormatter); return returnFormatter; }
public void StartServer() { TcpServerChannel tcpServerChannel = new TcpServerChannel("TcpServerChannel", 9988); IntervalActivator activator1 = new IntervalActivator("Activator1", 5000); byte[] command1Bytes = new byte[] { 0x01, 0x16 }; activator1.AddCommand(new ByteArrayCommand("command1", tcpServerChannel, command1Bytes)); SingleFormatterByteArrayInterpreter interpreter = new SingleFormatterByteArrayInterpreter("Interpreter"); interpreter.SetHeaders(new byte[] { 0x55, 0xAA }); interpreter.SetTailers(new byte[] { 0xAA, 0x55 }); ByteArrayFormatter formatter = new ByteArrayFormatter("Formatter1"); formatter.AddItem(new ByteArrayStringItem("NodeName", 1, 6, Encoding.ASCII)); formatter.AddItem(new ByteArrayInt32Item("NodeId", 0)); formatter.AddItem(new ByteArrayInt16Item("Temperature", 2)); formatter.AddItem(new ByteArrayDoubleItem("Longitude", 3)); formatter.AddItem(new ByteArrayByteItem("Reserved", 4)); interpreter.AddFormatter(formatter); ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", tcpServerChannel, interpreter, Program.ShowEnvelop); baa.SetupFinished += activator1.StartProcess; baa.Setup(); }
/// <summary> /// Generates the SQL representation of a literal value. /// </summary> /// <param name="value">The literal value.</param> /// <returns> /// The generated string. /// </returns> protected sealed override string GenerateNonNullSqlLiteral([CanBeNull] object value) => ByteArrayFormatter.ToHex(((Guid)value).ToByteArray());