1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MOJO_SERVICES_TEST_SERVICE_TEST_SERVICE_APPLICATION_H_
6#define MOJO_SERVICES_TEST_SERVICE_TEST_SERVICE_APPLICATION_H_
7
8#include "mojo/public/cpp/application/application_delegate.h"
9#include "mojo/public/cpp/application/interface_factory.h"
10#include "mojo/public/cpp/system/macros.h"
11
12namespace mojo {
13class ApplicationConnection;
14
15namespace test {
16class TestService;
17class TestTimeService;
18
19class TestServiceApplication : public ApplicationDelegate,
20                               public InterfaceFactory<TestService>,
21                               public InterfaceFactory<TestTimeService> {
22 public:
23  TestServiceApplication();
24  virtual ~TestServiceApplication();
25
26  // ApplicationDelegate implementation.
27  virtual bool ConfigureIncomingConnection(ApplicationConnection* connection)
28      MOJO_OVERRIDE;
29
30  // InterfaceFactory<TestService> implementation.
31  virtual void Create(ApplicationConnection* connection,
32                      InterfaceRequest<TestService> request) MOJO_OVERRIDE;
33
34  // InterfaceFactory<TestTimeService> implementation.
35  virtual void Create(ApplicationConnection* connection,
36                      InterfaceRequest<TestTimeService> request) MOJO_OVERRIDE;
37
38  void AddRef();
39  void ReleaseRef();
40
41 private:
42  int ref_count_;
43
44  MOJO_DISALLOW_COPY_AND_ASSIGN(TestServiceApplication);
45};
46
47}  // namespace test
48}  // namespace mojo
49
50#endif  // MOJO_SERVICES_TEST_SERVICE_TEST_SERVICE_APPLICATION_H_
51