• Version 4.4.3
Show / Hide Table of Contents

IMessage Sample

Source code


using System;
using System.IO;
using System.Reflection;
using System.Text;
using OnixS.SimpleBinaryEncoding.CodeGenerator;
using OnixS.SimpleBinaryEncoding.Templates;

namespace OnixS.SimpleBinaryEncoding.IMessageSample
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("IMessage API sample.");

            try
            {
                TemplateLibrary.LicenseStore = "../../../../../license|.";
                TemplateLibrary library = TemplateLibrary.Parse(File.ReadAllText(@"../../../../templates/ilinkbinary.xml"));

                Generator generator = new();
                Assembly assembly = generator.GenerateAssembly<CmeILinkHeader>(library, "OnixS.SimpleBinaryEncoding.Sample");
                IDecoder decoder = (IDecoder)Activator.CreateInstance(assembly.GetType("OnixS.SimpleBinaryEncoding.Sample.Decoder", true));
                IEncoder encoder = (IEncoder)Activator.CreateInstance(assembly.GetType("OnixS.SimpleBinaryEncoding.Sample.Encoder", true));

                var buffer = new MemoryPointer(new byte[65536]);

                {
                    IMessage negotiate = encoder.Wrap(500, buffer);

                    negotiate.SetString(Tag.HMACSignature, "HMAC")
                             .SetString(Tag.AccessKeyID, "AccessKey")
                             .SetUnsignedInteger(Tag.UUID, 1)
                             .SetUnsignedLong(Tag.RequestTimestamp, (ulong)(DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1).Ticks) * 1000000 / TimeSpan.TicksPerMillisecond)
                             .SetString(Tag.Session, "ABC")
                             .SetString(Tag.Firm, "ABCDE");

                    WriteToConsole("Encoded message", negotiate);
                }

                {
                    IMessage negotiate = decoder.Wrap(buffer);

                    WriteToConsole("Decoded message", negotiate);
                }

            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex.ToString());
            }
        }

        private static void WriteToConsole(string prefix, IMessage negotiate)
        {
            Console.WriteLine(@$"
                    {prefix}:

                    {negotiate}

                    hmacSignature={negotiate.GetString(Tag.HMACSignature)},
                    accessKeyID={negotiate.GetString(Tag.AccessKeyID)},
                    UUID={negotiate.GetUnsignedLong(Tag.UUID)},
                    requestTimestamp={negotiate.GetUnsignedLong(Tag.RequestTimestamp)},
                    session={negotiate.GetString(Tag.Session)},
                    firm={negotiate.GetString(Tag.Firm)}

                    Memory region: {Encoding.Default.GetString(negotiate.Buffer[..negotiate.MessageLength])}
                  ");
        }
    }
}
In this article
Back to top Copyright © Onix Solutions.
Generated by DocFX