ThroughputI.h


// **********************************************************************
//
// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
//
// **********************************************************************

#ifndef THROUGHPUT_I_H
#define THROUGHPUT_I_H

#include <Throughput.h>

class ThroughputI : public Demo::Throughput
{
public:

    ThroughputI();

    virtual bool needsWarmup(const Ice::Current&);
    virtual void startWarmup(const Ice::Current&);
    virtual void endWarmup(const Ice::Current&);
    
    virtual void sendByteSeq(const std::pair<const Ice::Byte*, const Ice::Byte*>&, const Ice::Current&);
    virtual void recvByteSeq_async(const Demo::AMD_Throughput_recvByteSeqPtr&, const Ice::Current&);
    virtual void echoByteSeq_async(const Demo::AMD_Throughput_echoByteSeqPtr&,
                                   const std::pair<const Ice::Byte*, const Ice::Byte*>&, const Ice::Current&);
   
    virtual void sendStringSeq(const std::vector<Util::string_view>&, const Ice::Current&);
    virtual void recvStringSeq_async(const Demo::AMD_Throughput_recvStringSeqPtr&, const Ice::Current&);
    virtual void echoStringSeq_async(const Demo::AMD_Throughput_echoStringSeqPtr&, 
                                     const std::vector<Util::string_view>&, const Ice::Current&);
    
    virtual void sendStructSeq(const Demo::StringDoubleSeq&, const Ice::Current&);
    virtual Demo::StringDoubleSeq recvStructSeq(const Ice::Current&);
    virtual Demo::StringDoubleSeq echoStructSeq(const Demo::StringDoubleSeq&, const Ice::Current&);
    virtual void sendFixedSeq(const Demo::FixedSeq&, const Ice::Current&);
    virtual Demo::FixedSeq recvFixedSeq(const Ice::Current&);
    virtual Demo::FixedSeq echoFixedSeq(const Demo::FixedSeq&, const Ice::Current&);
    virtual void shutdown(const Ice::Current& c);

    virtual void v(const Ice::Current&) {}

    virtual void b1(Ice::Byte,const Ice::Current&) {}
    virtual void b2(Ice::Byte,Ice::Byte,const Ice::Current&) {}
    virtual void b4(Ice::Byte,Ice::Byte,Ice::Byte,Ice::Byte,const Ice::Current&) {}
    virtual void b8(Ice::Byte,Ice::Byte,Ice::Byte,Ice::Byte,Ice::Byte,Ice::Byte,Ice::Byte,Ice::Byte,const Ice::Current&) {}

    virtual void s1(Ice::Short,const Ice::Current&) {}
    virtual void s2(Ice::Short,Ice::Short,const Ice::Current&) {}
    virtual void s4(Ice::Short,Ice::Short,Ice::Short,Ice::Short,const Ice::Current&) {}
    virtual void s8(Ice::Short,Ice::Short,Ice::Short,Ice::Short,Ice::Short,Ice::Short,Ice::Short,Ice::Short,const Ice::Current&) {}

    virtual void i1(Ice::Int,const Ice::Current&) {}
    virtual void i2(Ice::Int,Ice::Int,const Ice::Current&) {}
    virtual void i4(Ice::Int,Ice::Int,Ice::Int,Ice::Int,const Ice::Current&) {}
    virtual void i8(Ice::Int,Ice::Int,Ice::Int,Ice::Int,Ice::Int,Ice::Int,Ice::Int,Ice::Int,const Ice::Current&) {}

    virtual void l1(Ice::Long,const Ice::Current&) {}
    virtual void l2(Ice::Long,Ice::Long,const Ice::Current&) {}
    virtual void l4(Ice::Long,Ice::Long,Ice::Long,Ice::Long,const Ice::Current&) {}
    virtual void l8(Ice::Long,Ice::Long,Ice::Long,Ice::Long,Ice::Long,Ice::Long,Ice::Long,Ice::Long,const Ice::Current&) {}

    virtual void f1(Ice::Float,const Ice::Current&) {}
    virtual void f2(Ice::Float,Ice::Float,const Ice::Current&) {}
    virtual void f4(Ice::Float,Ice::Float,Ice::Float,Ice::Float,const Ice::Current&) {}
    virtual void f8(Ice::Float,Ice::Float,Ice::Float,Ice::Float,Ice::Float,Ice::Float,Ice::Float,Ice::Float,const Ice::Current&) {}

    virtual void d1(Ice::Double,const Ice::Current&) {}
    virtual void d2(Ice::Double,Ice::Double,const Ice::Current&) {}
    virtual void d4(Ice::Double,Ice::Double,Ice::Double,Ice::Double,const Ice::Current&) {}
    virtual void d8(Ice::Double,Ice::Double,Ice::Double,Ice::Double,Ice::Double,Ice::Double,Ice::Double,Ice::Double,const Ice::Current&) {}

    virtual int inc(int i,const Ice::Current&) { return i+1; }

private:

    Demo::ByteSeq _byteSeq;
    Demo::StringSeq _stringSeq;
    std::vector<Util::string_view> _stringViewSeq;
    Demo::StringDoubleSeq _structSeq;
    Demo::FixedSeq _fixedSeq;

    bool _warmup;
};

#endif