// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

[DartPackage="_mojo_for_test_only"]
module test;

[ServiceName="test::PingPongService"]
interface PingPongService {
  // Register the client interface with the service.
  SetClient(PingPongClient client);

  // Typically calls PingPongClient::Pong(ping_value + 1)
  Ping(uint16 ping_value);

  // Ping the PingPongService at |url| |count| times and return true
  // after the final Pong() is received.
  PingTargetURL(string url, uint16 count) => (bool ok);

  // Ping the PingPongService |count| times and return true
  // after the final Pong() is received.
  PingTargetService(PingPongService service, uint16 count) => (bool ok);

  // Return a PingPongService
  GetPingPongService(PingPongService& service);

  // Return a PingPongService after some delay
  GetPingPongServiceDelayed(PingPongService& service);

  // Make it stop.
  Quit();
};

interface PingPongClient {
  Pong(uint16 pong_value);
};
