//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / SCCP protocol
//
//File: sccpprotocol.h
//
//Version: $Revision: 1.4 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/02/04 19:06:25 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Timo Pärnänen
//
//Description:
//      Define SCCP (Signalling Connection Control Part) protocol 
//      class using mediator pattern. Protocol includes all functional
//      blocks as attributes.
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#ifndef __SCCP_PROTOCOL_H__
#define __SCCP_PROTOCOL_H__

#include "pf/protocol.h"
#include "sccpmethodinterface.h"
#include "sccpblock_scrc.h"
#include "sccpblock_sclc.h"

class pfMessenger;
class ss7Configure;

//
//Class: sccpProtocol
//
//Pattern: Mediator
//
//Description:
//    See file description.
//

class sccpProtocol : public pfProtocol,
                     public sccpMethodInterface
{
    public:
        static pfConduit createProtocol(ss7Configure &configure_);
        virtual ~sccpProtocol(void);

        // neighboring levels. Note that these are asynchronous!
        virtual void toMTP(pfMessenger *messenger_);
        virtual void toSubSystem(pfMessenger *messenger_);
        
        // SCCP procedures (blocks)
        virtual void toSCRC(pfMessenger *messenger_);
        virtual void toSCLC(pfMessenger *messenger_);

    private:
        sccpProtocol(ss7Configure &configure_);

        // SCCP procedures (blocks)
        sccpBlockSCRC _SCRC; 
        sccpBlockSCLC _SCLC;
};

#endif // __SCCP_PROTOCOL_H__
