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