.NET Connector Quick Start Guide

Table of contents
No headers

 

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.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()
        {
        }

        //Incoming messages arrive here. Use Switch{Case:} to farm them out to specific procedures.
        public void ProcessMessage(turboExchange.Messages.MessageWrapper wrap)
        {
            try
            {
                Console.WriteLine("ProcessMessage: {0}" , wrap._messageType);
                switch (wrap._messageType)
                {
                    case MessageWrapper.MessageType.turboRecoveryJob:
                        ProcessRecoveryJob(wrap);
                        break;
                    case MessageWrapper.MessageType.turboRecoveryJobReply:
                    case MessageWrapper.MessageType.turboRecoveryClearDown:
                    case MessageWrapper.MessageType.turboInvoice:
                    case MessageWrapper.MessageType.turboInvoiceReply:
                    case MessageWrapper.MessageType.turboInvoiceRemittance:
                    case MessageWrapper.MessageType.turboTextMessage:
                    case MessageWrapper.MessageType.turboVehicleHire:

                    default:
                        Console.WriteLine("Unsupported Message Type");
                        break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("ProcessMessage Error - " + ex.Message);
            }

        }

        /// <summary>
        /// Example procedure to display Job Data
        /// </summary>
        /// <param name="wrap"></param>
        private void ProcessRecoveryJob(MessageWrapper wrap)
        {
            if (wrap._messageFormat == MessageWrapper.MessageFormat.ProtoMessage)
            {
                //Deserialise the Protobuffer message
                var recoveryJob = wrap._payload.DeserializeProtoBytes<turboExchange.Messages.turboMessage.RecoveryJob>();

                switch (recoveryJob._messageEvent)
                {
                    case turboExchange.Messages.turboMessage.RecoveryJob.MessageEvent.NewJob:
                        Console.WriteLine("New Recovery Job");
                        break;
                    case turboExchange.Messages.turboMessage.RecoveryJob.MessageEvent.JobUpdate:
                        Console.WriteLine("Recovery Job Update");
                        break;
                }

                Console.WriteLine(recoveryJob._jobNumber);
                if (recoveryJob._jobDateTimeSpecified) Console.WriteLine(recoveryJob._jobDateTime.ToDateTime());
                if (recoveryJob._agentReferenceSpecified) Console.WriteLine(recoveryJob._agentReference);
                if (recoveryJob._clientNameSpecified) Console.WriteLine(recoveryJob._clientName);
                if (recoveryJob._driverLocationSpecified) Console.WriteLine(recoveryJob._driverLocation);
                if (recoveryJob._faultDescriptionSpecified) Console.WriteLine(recoveryJob._faultDescription);

                if (recoveryJob._vehicle != null)
                {
                    if (recoveryJob._vehicle._makeSpecified) Console.WriteLine(recoveryJob._vehicle._make);
                    if (recoveryJob._vehicle._modelSpecified) Console.WriteLine(recoveryJob._vehicle._model);
                    if (recoveryJob._vehicle._registrationSpecified) Console.WriteLine(recoveryJob._vehicle._registration);
                    if (recoveryJob._vehicle._colourSpecified) Console.WriteLine(recoveryJob._vehicle._colour);
                    if (recoveryJob._vehicle._engineSpecified) Console.WriteLine(recoveryJob._vehicle._engine);
                    //.....etc ...etc
                }


                //Get Remarks
                foreach (turboExchange.Messages.turboMessage.RecoveryJob.timedTextField textField in recoveryJob._remarks)
                {
                    Console.WriteLine("{0} {1}",textField._dateTime.ToDateTime(), textField._text);
                }

                //Get Notes (typically only sent internally, and not shared with other organisations)
                foreach (turboExchange.Messages.turboMessage.RecoveryJob.timedTextField textField in recoveryJob._notes)
                {
                    Console.WriteLine("{0} {1}", textField._dateTime.ToDateTime(), textField._text);
                }

                //.....etc ...etc
            }
        }


        /// <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()
        {
        }
    }
}