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);
};
