module js_to_cpp;

// This struct encompasses all of the basic types, so that they
// may be sent from C++ to JS and back for validation.
struct EchoArgs {
  int64 si64;
  int32 si32;
  int16 si16;
  int8 si8;
  uint64 ui64;
  uint32 ui32;
  uint16 ui16;
  uint8 ui8;
  float float_val;
  float float_inf;
  float float_nan;
  double double_val;
  double double_inf;
  double double_nan;
  string? name;
  array<string>? string_array;
  handle<message_pipe>? message_handle;
  handle<data_pipe_consumer>? data_handle;
};

struct EchoArgsList {
  EchoArgsList? next;
  EchoArgs? item;
};

// Note: For messages which control test flow, pick numbers that are unlikely
// to be hit as a result of our deliberate corruption of response messages.
interface CppSide {
  // Sent for all tests to notify that the JS side is now ready.
  StartTest@88888888();

  // Indicates end for echo, bit-flip, and back-pointer tests.
  TestFinished@99999999();

  // Responses from specific tests.
  PingResponse();
  EchoResponse(EchoArgsList list);
  BitFlipResponse(EchoArgsList arg);
  BackPointerResponse(EchoArgsList arg);
};

interface JsSide {
  SetCppSide(CppSide cpp);

  Ping();
  Echo(int32 numIterations, EchoArgs arg);
  BitFlip(EchoArgs arg);
  BackPointer(EchoArgs arg);
};
