//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / 
//
//File: testclient.h
//
//Version: $Revision: 1.2 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/09/25 11:34:05 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __TESTCLIENT_H__
#define __TESTCLIENT_H__

#include <typeinfo>
#include <string>
#include <list>

#include "pf/types.h"
#include "pf/protocol.h"
#include "pf/state.h"

#include "iface/mtpif/mtpupprimitives.h"

#include <OB/CORBA.h>
#include "bisupclient_skel.h"


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

class testClient : public pfProtocol,
                   public bisupClientInterface_skel
{
    public:
        testClient(void);
        virtual ~testClient(void);
        
        void start(CORBA_Long numberOfMessages);
        //void start(const msgSequence& msgList_);
        
        void sendNextFrame(void);
        void printFrame(pfFrame &frame_);
        
    private:
        pfUlong _count;
        pfUlong _counter;

        //list<unsigned short> _msgList;
};

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

class testClientState : public pfState,
                        public mtpUpInputs
{
    public:
        static testClientState *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:
        testClientState(void);
        virtual ~testClientState(void);
        
    private:
        static testClientState *_only;
};

#endif //__TESTCLIENT_H__
