//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / TRS
//
//File: managementclient.h
//
//Version: $Revision: 1.2 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/10/06 13:23:33 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Harri Sunila
//
//Description:
//      trsManagementClient is a wrapper class for RouteServer IDL-interface.
//      trsManagementClient allows user to modify the routing database.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __TRS_MANAGEMENTCLIENT_H__
#define __TRS_MANAGEMENTCLIENT_H__

#include <OB/CORBA.h>
#include <typeinfo>
#include "node.h"
#include "link.h"
#include "trs.h"
#include "pf/storage.h"
#include <list>

class trsManagementClient
{
    public:
        trsManagementClient(const string &networkPrefix_);
        virtual ~trsManagementClient(void);

        void registerNode(const trsNode &node_);
        void unregisterNode(const trsNode &node_);
        void addLinks(const trsNode &node_,
                      const trsLinkList &additionalLinks_);
        void removeLinks(const trsNode &node_,
                         const trsLinkList &removableLinks_);
        void updateLinks(const trsNode &node_,
                         const trsLinkList &updatedLinks_);

    private:
        void transformNode(const trsNode &from_,
                           trs_Node &to_);
        void transformLinks(const trsLinkList &from_,
                                 trs_LinkList &to_);
        void transformParameters(pfStorage &from_,
                                 trs_ParameterList &to_);

        trs_RouteServer_var getRouteServer(void);
        
        string _networkPrefix;
        trs_RouteServer_var _routeServer;
};

#endif // __TRS_MANAGEMENTCLIENT_H__
