OpenTTCN/Knowledge base/Creating Adapters with Adapter Framework/Netconf MainProgram.cs
From OpenTTCN
Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support |
Netconf_MainProgram.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenTTCN.Sdk;
using OpenTTCN.Sdk.Ports;
using OpenTTCN.Sdk.ChunkingModes;
using OpenTTCN.Adapter.Sdk;
namespace otnetconf
{
class Program
{
const string _programName = "OT-NETCONF Adapter";
const string _version = "0.2";
static void Main(string[] args)
{
Console.WriteLine(_programName + " " + _version + " Copyright 2012 OpenTTCN Ltd");
Console.WriteLine();
Console.WriteLine("Created with OpenTTCN SDK for C# " + StartHere.Version);
Console.WriteLine();
// simple command line parsing: netconf.exe server|client sessionName [portName portNumber]
if (!(args.Length == 2 || args.Length == 4)) {
Console.WriteLine("Invalid commandline, usage:\nnetconf.exe server|client sessionName [portName portNumber]");
Console.WriteLine();
return;
}
bool server = (args[0] == "server"); //otherwise assume "client"
string session = args[1];
string portName = "tsiPort";
int portNumber = 1111;
if (args.Length == 4) {
portName = args[2];
portNumber = int.Parse(args[3]);
}
Console.WriteLine(String.Format(
"Session {0}: Starting NETCONF {1} port '{2}'\nListening on 127.0.0.1:{3}",
session,
(server?"server":"client"),
portName,
portNumber));
Console.WriteLine();
// Initialize OpenTTCN SDK
StartHere.Initialize();
// Instantiate TCP Port
TcpPort myPort;
if (server)
{
myPort = new TcpPort(session, portName, "127.0.0.1", portNumber);
}
else
{
myPort = new TcpPort(session, portName);
myPort.ConnectAutomatically = true;
myPort.ConnectAddress = "127.0.0.1:" + portNumber.ToString(); // connect to HTTP server on localhost
}
// Obtain Codec Components
ICodecComponent ccHttp = StartHereCD.GetCodecComponent("http://www.openttcn.com/Codecs/2011/HTTP");
ICodecComponent ccXml = StartHereCD.GetCodecComponent("http://www.openttcn.com/Codecs/2011/XML");
// Configure XML Codec Component to use <?xml ... ?> header
ccXml.SetProperty("ENABLE-XML-DECLARATION", true);
// Connect the codecs together XML <-> HTTP <-> TCP
ccHttp.SetProperty("innerCodec", ccXml);
myPort.Codec.SetProperty("innerCodec", ccHttp);
// Set HTTP Chunking Mode as required by HTTP codec
myPort.setChunkingMode(new HttpChunkingMode());
Utils.WaitForKey("Press ENTER to exit...");
StartHere.UnregisterAllAdapters(session);
}
}
}
