//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / ILMI
//
//File: ilmiagent.cpp
//
//Version: $Revision: 1.16 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/11 17:01:52 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Timo Pärnänen
//
//Description:
//      Main program for an ilmi agent.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#include <typeinfo>
#include <iostream.h>
#include <string>

#include "pf/types.h"
#include "pf/conduit.h"
#include "pf/system.h"
#include "pf/debug.h"
#include "pf/exception.h"

//#include "protocol/cpcs/cpcsuadapter.h"
//#include "protocol/cpcs/cpcsaadapter.h"

#include "ilmiprotocol.h"

void printUsage(char *name_)
{
    cerr << endl;
    cerr << "Usage: " << name_ << " <portNumber> <linkNumber>";
//    cerr << " [u] " << endl;
//    cerr << "- [u]  Agent works top of UDP (default is AAL5)" << endl;
    cerr << endl;
    exit(0);
}

//
// main function
//

int main(int argc, char *argv[])
{
    if (argc != 3)
    {
        printUsage(argv[0]);
    }
    
    try
    {
        string portNumber = argv[1];
        string linkNumber = argv[2];
        string orbFlag("-ORBconfig");
        string orbFile("orbacus.cfg");

        char *parameters[5];
        parameters[0] = argv[0];
        parameters[1] = (char *)portNumber.c_str();
        parameters[2] = (char *)linkNumber.c_str();
        parameters[3] = (char *)orbFlag.c_str();
        parameters[4] = (char *)orbFile.c_str();
        
        // Init scheduler
        pfSystem::init(5, parameters);

//        bool udp = false;

        pfConduit ilmiProxy = 
            ilmiProtocol::createProtocol(portNumber, linkNumber);

//        pfConduit cpcsProxy;
//
//        if (udp != false)
//        {
//            cout << "UDP (remote = IINES)" << endl;
//            string hostname("iines");
//            cpcsProxy = cpcsUDPAdapter::
//                createUDPConnection(hostname, 4444, 4444);
//        }
//        else
//        {
            cout << "ATM" << endl;
//        }

        
        // RUN SYSTEM !!!
        pfSystem::instance()->run();
    }
    catch (pfException &exception)
    {
        cerr << "Exception catched in main (exit)" << endl;
        exception.printInfo();
    }
    
    return 0;
}

