M2Mqtt : aggiunto il supporto per il tracing nel client MQTT

La libreria M2Mqtt è giunta alla versione 3.4.0.0 con un’utile funzionalità come il tracing in modalità di debugging.

Il progetto ha la nuova classe Trace che espone il membro statico TraceListener il quale è dichiarato attraverso il seguente delegate :

// delegate for writing trace
public delegate void WriteTrace(string format, params object[] args);

In questo modo, è possibile scegliere la propria modalità di tracing assegnando a questo delegate un metodo con la medesima firma. Inoltre, è possibile stabilire il livello di tracing attraverso l’impostazione del membro statico TraceLevel sulla base dei seguenti possibili valori dell’enumerativo :

/// <summary>
/// Tracing levels
/// </summary>
public enum TraceLevel
{
 Error = 0x01,
 Warning = 0x02,
 Information = 0x04,
 Verbose = 0x0F,
 Frame = 0x10
}

Un semplice esempio applicativo di uso del tracing potrebbe essere il seguente :

Trace.TraceLevel = MqttUtility.TraceLevel.Verbose | MqttUtility.TraceLevel.Frame;
Trace.TraceListener = (f, a) => System.Diagnostics.Trace.WriteLine(System.String.Format(f, a));

In questo caso, attraverso una lambda expression, tutti i messaggi di trace vengono scritti sulla finestra di output di Visual Studio.

SEND CONNECT(protocolName:MQIsdp,protocolVersion:3,clientId:testId,willFlag:False,willRetain:False,willQosLevel:2,willTopic:,willMessage:,cleanSession:False,keepAlivePeriod:60)
RECV CONNACK(returnCode:0)
SEND SUBSCRIBE(messageId:1,topics:[/foo/#,/foo/+/baz],qosLevels:0202)
RECV SUBACK(messageId:1,grantedQosLevels:0202)
RECV PUBLISH(messageId:1,topic:/foo,message:48656C6C6F)
SEND PUBREC(messageId:1)
RECV PUBREL(messageId:1)
SEND PUBCOMP(messageId:1)
Hello
SEND PUBLISH(messageId:2,topic:/thank,message:5468616E6B20596F7520212031)
RECV PUBREC(messageId:2)
SEND PUBREL(messageId:2)
RECV PUBCOMP(messageId:2)

La nuova versione è disponibile sul CodePlex, Nuget e nella Microsoft Code Gallery. Ad essa va aggiunto anche l’aggiornamento della M2Mqtt4CE per l’immagine di Windows Embedded Compact 2013 !

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s