//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project
//
//File: unilink.h
//
//Version: $Revision: 1.9 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/11/19 12:34:46 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//	Timo Pärnänen
//      Vesa-Matti Puro
//
//Description:
//
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History:
//
 
#ifndef __SAAL_UNILINK_H__
#define __SAAL_UNILINK_H__

#include "saallink.h"
#include "saal.h"

class usscfProtocol;

//
//Class: saalUNIlink
//

class saalUNIlink : public saalLink
{
    public:
        static  saalUNIlink *createATMUNIlink(
            pfId linkNumber_,
            int port_,
            int vpi_,
            int vci_,
            int bufferSize_ = SAAL_MAX_SDU_SIZE);
        
        static saalUNIlink *createUDPUNIlink(
            pfId linkNumber_,
            const string &hostname_,
            int localPort_,
            int remotePort_,
            int bufferSize_ = SAAL_MAX_SDU_SIZE);

        // Prototype
        static saalUNIlink *createPrototype(void);
        saalUNIlink *clonePrototype(pfId linkNumber_,
                                    int port_,
                                    int vpi_,
                                    int vci_);
        
        virtual ~saalUNIlink(void);
        
        virtual pfConduit getConduit(void);
        virtual void connectProtocols(void);
        
    protected:
        saalUNIlink(void);
        saalUNIlink(const saalUNIlink &other_);

        virtual void setLinkNumber(pfId linkNumber_);
        void setUNIprotocols(void);
        
    private:
        usscfProtocol *_usscf;

        // This proxy is there to ensure that the protocol
        // implementation won't get deleted automatically by the
        // proxy as long as this instance of saalUNIlink lives.
        pfConduit _usscfProxy;
};

#endif // __SAAL_UNILINK_H__


