OpenTTCN/Knowledge base/Creating SNMP BER Codec/Program.cs
From OpenTTCN
Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support |
Program.cs
using System;
using OpenTTCN.Sdk;
using Etsi.Ttcn3.Tci;
using Etsi.Ttcn3.Tri;
namespace ber_codec_adapter
{
class CD_impl : ITciCDProvided
{
private ICodecComponent _berDelegate;
public CD_impl()
{
_berDelegate = StartHereCD.GetCodecComponent("http://www.openttcn.com/Codecs/2011/BER");
}
public ITriMessage Encode(ITciValue value)
{
// Invoke BER encoder:
ITriMessage m = _berDelegate.Encode(value);
byte[] ber = m.EncodedMessage;
OutputHandler.WriteLine("=== Encoded BER ===\n" +
BitConverter.ToString(ber),
OutputHandler.TRACE_LEVEL_DEBUG);
return m;
}
public ITciValue Decode(ITriMessage message, ITciType decodingHypothesis)
{
// Indication that BER decoder is applicable:
return _berDelegate.Decode(message, decodingHypothesis);
}
}
class Program
{
public static string SessionName { get; set; }
static void Main(string[] args)
{
string sessionName = "snmp";
if (args.Length > 0) sessionName = args[0];
SessionName = sessionName;
Console.WriteLine("Session is " + sessionName);
try
{
StartHere.Initialize();
OutputHandler.MinTraceLevel = OutputHandler.TRACE_LEVEL_DEBUG;
StartHereCD.RegisterCodecImpl(new CD_impl());
StartHereCD.RegisterAsStandaloneCodec(sessionName);
StartHere.SelectSession(sessionName);
Console.WriteLine("Running as a standalone codec.");
Console.WriteLine("Press enter to exit.");
Console.ReadLine();
}
catch (SdkException e)
{
Console.WriteLine("ERROR: " + e.Message);
Console.WriteLine("Error detail: " + e.ToString());
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
