.NET Connector Quick Start Guide (Turbo Dispatch mode)

Table of contents
No headers

 

This page is for those who already use the Turbo Dispatch protocol, and want a to use the built in TD parser.  See sending example here.

 

1.    Add the following .DLL files as a reference to your project.

turboExchange35.dll

protobuff-net.dll

 

2.    Add the following code decleration the the main static class that starts the program (Program.cs)

  TIP: click on "view plain"

static clsTurboMessageMill TurboMessage;
static public turboExchange.Network.clsTurboClient turboClient;

 

 3.    Add the following code in your Main() procedure

 

//Initialise TurboExchange Client
TurboMessage = new clsTurboMessageMill();
turboClient = new turboExchange.Network.clsTurboClient(TurboMessage);

//Set username & password
turboClient.Authentication.Username = "MyUsername";
turboClient.Authentication.PasswordString = "MyPassword";

//Start comms connection, with a 1 second delay (gives everything a chance to initialise)
turboClient.ConnectAsyc(turboExchange.Network.clsTurboClient.KeepAlive.Always,1000);

//Listen to comms events
turboClient.EventConnectionStatus += new turboExchange.Network.clsTurboClient.envStatus(turboClient_EventStatus);
turboClient.EventUnsentMessage += new turboExchange.Network.clsTurboClient.envUnsentMessage(turboClient_EventUnsentMessage);

}

static void turboClient_EventUnsentMessage(turboExchange.Messages.MessageWrapper wrap)
{

}

static void turboClient_EventStatus(turboExchange.Network.clsTurboClient.enumStatus eStatus)
{

}

 

4.    Before your application closes

 

turboClient.Close();

 

5.    Add the following class "clsTurboExchangeMill"

 

using System;
using System.Text;
using System.IO;
using ProtoBuf;
using turboExchange;
using turboExchange.Messages;


namespace turboExchangeExample
{
    class clsTurboMessageMill : turboExchange.ITurboClientMill
    {

        public turboExchange.Network.clsTurboClient Client { get; set; }

        /// <summary>
        /// Authentication accepted
        /// </summary>
        public void LoggedIn()
        {
        }


        /// <summary>
        /// Connection Logged out (connection thread may still be active)
        /// </summary>
        public void LoggedOut()
        {
        }

        public void ProcessMessage(MessageWrapper wrap)
        {    
            try
            {
                Console.WriteLine("RX message: {0}",wrap._messageType.ToString());

                //Turbo Exchange Recovery Data
                if ((int)wrap._messageType >= 1000 && (int)wrap._messageType < 2000)
                {
                    //Convert to TD format
                    String TDData = turboExchange.TurboDispatch.clsTDConverter.ProcessIncomingMessage(wrap);
                    Console.WriteLine(TDData);  //**Turbo Dispatch Data
                }
                else
                {
                    //Process other Turbo Exchange data (Example)
                    switch (wrap._messageType)
                    {
                        case MessageWrapper.MessageType.turboTurboData:
                            Console.WriteLine(Encoding.UTF8.GetString(wrap._payload));
                            break;
                        case MessageWrapper.MessageType.gpsTrackerMessage:
                            var gps = wrap._payload.DeserializeProtoBytes<turboExchange.Messages.GPS.TrackerMessage>();
                            Console.WriteLine(turboExchange.TurboDispatch.clsTDConverter.GPSMessage(gps));
                            break;
                        case MessageWrapper.MessageType.serverSMSStatus:
                            var SMSstatus = wrap._payload.DeserializeProtoBytes<turboExchange.Messages.networkServices.SMSMessageStatus>();
                            if (SMSstatus._statusMessageSpecified)
                                Console.WriteLine("TurboExchange SMS Server:\r\n" + SMSstatus._statusMessage);
                            break;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("ProcessMessage Error - " + ex.Message);
            }

        }

  

        /// <summary>
        /// Connection disconnected, may reconnect
        /// </summary>
        /// <param name="reason"></param>
        public void Disconnected(turboExchange.Messages.Authentication.Logout.LogoutReason reason)
        {
        }

        /// <summary>
        /// Triggered when the watchdog fires (~1 min or less)
        /// </summary>
        public void WatchdogTimer()
        {
        }

        /// <summary>
        /// Connection is closing (Forced - e.g. application shutdown)
        /// </summary>
        public void Close()
        {
        }
    }
}

 

To send a message see example.