예제 #1
0
        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);
     }
 }
예제 #3
0
        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();
        }
예제 #4
0
        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();
        }
예제 #5
0
        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);
        }
예제 #6
0
        /// <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); }
     });
 }
예제 #8
0
        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();
        }
예제 #9
0
        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);
        }
예제 #10
0
        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();
        }
예제 #11
0
        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();
        }
예제 #12
0
        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();
            }
        }
예제 #14
0
 /// <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);
예제 #15
0
        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);
        }
예제 #16
0
        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;
        }
예제 #17
0
        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();
        }
예제 #18
0
        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();
        }
예제 #19
0
        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();
        }
예제 #20
0
 /// <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());
예제 #21
0
        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();
        }