//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1996 - 1999
//
//  File:       rpcrt.idl
//
//--------------------------------------------------------------------------

[
uuid(19bb5061-2e68-101b-b4d9-00000b65c782),
version(1.0)
]
interface RpcRuntimeScalePerf
{

//
// Test cases.
//

[v1_enum]
typedef enum {
       NULL_CALL,
       NI_CALL,
       BUFFER_CALL,
       MAYBE_CALL,
       BIND_CALL
       } TEST_TYPE;

const unsigned long TEST_MAX = 5;

//
// Client test case control functions follow
//

const unsigned long PERF_TOO_MANY_CLIENTS = 20001;
const unsigned long PERF_TESTS_DONE       = 20002;

	// blocking
error_status_t
     BeginTest([in] handle_t        Binding,
               [out] unsigned long *ClientId,
               [out] unsigned long *TestCase,
               [out] unsigned long *InSize,
               [out] unsigned long *OutSize
              );

//
// Test APis
//

[idempotent] unsigned long
NullCall(
         [in] handle_t Binding,
         [in] unsigned long ClientId
        );

[idempotent, maybe] void
MaybeCall(
          [in] handle_t Binding,
          [in] unsigned long ClientId
         );

unsigned long
NICall(
       [in] handle_t Binding,
       [in] unsigned long ClientId
      );

[idempotent] unsigned long
BufferCall(
           [in] handle_t Binding,
           [in] unsigned long ClientId,
           [in] long cRequest,
           [in, size_is(cRequest)] byte bRequest[],
           [in] long cReply,
           [out, size_is(cReply)] byte bReply[]
          );

// Input: RPC header + 12 bytes + in bytes of data
// Output: RPC header + 4 bytes + out bytes of data
const unsigned long IN_ADJUSTMENT = 20;
const unsigned long OUT_ADJUSTMENT = 12;

}

