//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / OVOPS++
//
//File: mtptest.h
//
//Version: $Revision: 1.5 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/11/16 13:37:20 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Timo Pärnänen
//
//Description:
//      Header file for classes of test MTP3 protocol
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#ifndef __MTPTEST_H__
#define __MTPTEST_H__

#include <typeinfo>
#include <string>
#include "pf/types.h"
#include "pf/protocol.h"
#include "pf/messenge.h"

#include "iface/mtpif/mtpupprimitives.h"
#include "mgmt/mgmtdelegationbase.h"

//----------------------------------------------------------------------

class mtpTestUpAdapter : public pfProtocol,
                         public mgmtDelegationBase
{
    public:
        mtpTestUpAdapter(string &pointCode_,
                         pfBoolean acknowledge_ = 0);
        void sendAcknowledge(pfUlong DPC_, pfUlong OPC_);
        pfUlong incCounter(void);

        virtual string receiveGet(const string &name_);
        virtual void receiveSet(const string &name_, const string &value_);
        virtual void receiveExecute(mgmtCommand &command_);

    private:
        pfBoolean _acknowledge;
	pfUlong _counter;
};

//----------------------------------------------------------------------

class mtpTestUpAdapterState : public pfState,
                              public mtpUpInputs
{
    public:
        static mtpTestUpAdapterState *instance(void);

        // input methods
        virtual void mtpTRANSFERindAct(mtpTRANSFERind *messenger_,
                                       pfProtocol *protocol_);

        virtual void mtpPAUSEindAct(
            mtpPAUSEind *, pfProtocol *) {}
        virtual void mtpRESUMEindAct(
            mtpRESUMEind *, pfProtocol *) {}
        virtual void mtpSTATUSindAct(
            mtpSTATUSind *, pfProtocol *) {}

    protected:
        mtpTestUpAdapterState(void);
        virtual ~mtpTestUpAdapterState(void);

    private:
        static mtpTestUpAdapterState *_only;
};

#endif // __MTPTEST_H__
