• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "mojo/services/test_service/test_service_application.h"
6 
7 #include <assert.h>
8 
9 #include "mojo/public/c/system/main.h"
10 #include "mojo/public/cpp/application/application_connection.h"
11 #include "mojo/public/cpp/application/application_runner.h"
12 #include "mojo/public/cpp/utility/run_loop.h"
13 #include "mojo/services/test_service/test_service_impl.h"
14 #include "mojo/services/test_service/test_time_service_impl.h"
15 
16 namespace mojo {
17 namespace test {
18 
TestServiceApplication()19 TestServiceApplication::TestServiceApplication() : ref_count_(0) {
20 }
21 
~TestServiceApplication()22 TestServiceApplication::~TestServiceApplication() {
23 }
24 
ConfigureIncomingConnection(ApplicationConnection * connection)25 bool TestServiceApplication::ConfigureIncomingConnection(
26     ApplicationConnection* connection) {
27   connection->AddService<TestService>(this);
28   connection->AddService<TestTimeService>(this);
29   return true;
30 }
31 
Create(ApplicationConnection * connection,InterfaceRequest<TestService> request)32 void TestServiceApplication::Create(ApplicationConnection* connection,
33                                     InterfaceRequest<TestService> request) {
34   BindToRequest(new TestServiceImpl(connection, this), &request);
35 }
36 
Create(ApplicationConnection * connection,InterfaceRequest<TestTimeService> request)37 void TestServiceApplication::Create(ApplicationConnection* connection,
38                                     InterfaceRequest<TestTimeService> request) {
39   BindToRequest(new TestTimeServiceImpl(connection), &request);
40 }
41 
AddRef()42 void TestServiceApplication::AddRef() {
43   assert(ref_count_ >= 0);
44   ref_count_++;
45 }
46 
ReleaseRef()47 void TestServiceApplication::ReleaseRef() {
48   assert(ref_count_ > 0);
49   ref_count_--;
50   if (ref_count_ <= 0)
51     RunLoop::current()->Quit();
52 }
53 
54 }  // namespace test
55 }  // namespace mojo
56 
MojoMain(MojoHandle shell_handle)57 MojoResult MojoMain(MojoHandle shell_handle) {
58   mojo::ApplicationRunner runner(new mojo::test::TestServiceApplication);
59   return runner.Run(shell_handle);
60 }
61