Throughput.ice


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

#pragma once

[["cpp:include:StringView.h"]]

module Demo
{

sequence<byte> ByteSeq;
const int ByteSeqSize = 500000;

sequence<string> StringSeq;
const int StringSeqSize = 50000;

struct StringDouble
{
    string s;
    double d;
};
sequence<StringDouble> StringDoubleSeq;
const int StringDoubleSeqSize = 50000;

struct Fixed
{
    int i;
    int j;
    double d;
};
sequence<Fixed> FixedSeq;
const int FixedSeqSize = 50000;

interface Throughput
{
    bool needsWarmup();
    void startWarmup();
    void endWarmup();

    void sendByteSeq(["cpp:array"] ByteSeq seq);
    ["amd", "cpp:array"] ByteSeq recvByteSeq();
    ["amd", "cpp:array"] ByteSeq echoByteSeq(["cpp:array"] ByteSeq seq);

    void sendStringSeq(["cpp:view-type:std::vector<Util::string_view>"] StringSeq seq);
    ["amd", "cpp:view-type:std::vector<Util::string_view>"] StringSeq recvStringSeq();
    ["amd", "cpp:view-type:std::vector<Util::string_view>"] StringSeq echoStringSeq(
        ["cpp:view-type:std::vector<Util::string_view>"] StringSeq seq);

    void sendStructSeq(StringDoubleSeq seq);
    StringDoubleSeq recvStructSeq();
    StringDoubleSeq echoStructSeq(StringDoubleSeq seq);

    void sendFixedSeq(FixedSeq seq);
    FixedSeq recvFixedSeq();
    FixedSeq echoFixedSeq(FixedSeq seq);

    void shutdown();

    void v();

    void b1(byte i0);
    void b2(byte i0,byte i1);
    void b4(byte i0,byte i1,byte i2, byte i3);
    void b8(byte i0,byte i1,byte i2, byte i3,byte i4,byte i5,byte i6, byte i7);

    void s1(short i0);
    void s2(short i0,short i1);
    void s4(short i0,short i1,short i2, short i3);
    void s8(short i0,short i1,short i2, short i3,short i4,short i5,short i6, short i7);

    void i1(int i0);
    void i2(int i0,int i1);
    void i4(int i0,int i1,int i2, int i3);
    void i8(int i0,int i1,int i2, int i3,int i4,int i5,int i6, int i7);

    void l1(long i0);
    void l2(long i0,long i1);
    void l4(long i0,long i1,long i2, long i3);
    void l8(long i0,long i1,long i2, long i3,long i4,long i5,long i6, long i7);

    void f1(float i0);
    void f2(float i0,float i1);
    void f4(float i0,float i1,float i2, float i3);
    void f8(float i0,float i1,float i2, float i3,float i4,float i5,float i6, float i7);

    void d1(double i0);
    void d2(double i0,double i1);
    void d4(double i0,double i1,double i2, double i3);
    void d8(double i0,double i1,double i2, double i3,double i4,double i5,double i6, double i7);

    int inc(int i);
};

};