// Copyright 2013 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.

module sample {

enum BarType {
  BAR_VERTICAL = 1,
  BAR_HORIZONTAL = 2,
  BAR_INVALID
};

struct Bar {
  uint8 alpha @0;
  uint8 beta @1;
  uint8 gamma @2;
  int32 type @3;
};

[RequiredFields=7]
struct Foo {
  string name @8;
  int32 x @0;
  int32 y @1;
  bool a @2;
  bool b @3;
  bool c @4;
  Bar bar @5;
  Bar[] extra_bars @7;
  uint8[] data @6;
  handle<message_pipe> source @9;
};

[Peer=ServiceClient]
interface Service {
  void Frobinate(Foo foo @0, bool baz @1, handle<message_pipe> port @2) @0;
};

[Peer=Service]
interface ServiceClient {
  void DidFrobinate(int32 result @0) @0;
};

}