OpenTTCN/Knowledge base/Creating Adapters with Adapter Framework/Netconf MainProgram.cs

From OpenTTCN

Jump to: navigation, search

  OpenTTCN DocZone

  Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support


Netconf_MainProgram.cs


Back to main article >>

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);
        }
    }
}
Views
Personal tools