OLD | NEW |
| (Empty) |
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 #include <utility> | |
9 | |
10 #include "mojo/public/c/system/main.h" | |
11 #include "mojo/services/test_service/test_service_impl.h" | |
12 #include "mojo/services/test_service/test_time_service_impl.h" | |
13 #include "mojo/shell/public/cpp/application_runner.h" | |
14 #include "mojo/shell/public/cpp/connection.h" | |
15 | |
16 namespace mojo { | |
17 namespace test { | |
18 | |
19 TestServiceApplication::TestServiceApplication() | |
20 : ref_count_(0), connector_(nullptr) { | |
21 } | |
22 | |
23 TestServiceApplication::~TestServiceApplication() { | |
24 } | |
25 | |
26 void TestServiceApplication::Initialize(Connector* connector, | |
27 const std::string& url, | |
28 uint32_t id, uint32_t user_id) { | |
29 connector_ = connector; | |
30 } | |
31 | |
32 bool TestServiceApplication::AcceptConnection(Connection* connection) { | |
33 connection->AddInterface<TestService>(this); | |
34 connection->AddInterface<TestTimeService>(this); | |
35 return true; | |
36 } | |
37 | |
38 void TestServiceApplication::Create(Connection* connection, | |
39 InterfaceRequest<TestService> request) { | |
40 new TestServiceImpl(connector_, this, std::move(request)); | |
41 AddRef(); | |
42 } | |
43 | |
44 void TestServiceApplication::Create(Connection* connection, | |
45 InterfaceRequest<TestTimeService> request) { | |
46 new TestTimeServiceImpl(connector_, std::move(request)); | |
47 } | |
48 | |
49 void TestServiceApplication::AddRef() { | |
50 assert(ref_count_ >= 0); | |
51 ref_count_++; | |
52 } | |
53 | |
54 void TestServiceApplication::ReleaseRef() { | |
55 assert(ref_count_ > 0); | |
56 ref_count_--; | |
57 if (ref_count_ <= 0) | |
58 base::MessageLoop::current()->QuitWhenIdle(); | |
59 } | |
60 | |
61 } // namespace test | |
62 } // namespace mojo | |
63 | |
64 MojoResult MojoMain(MojoHandle shell_handle) { | |
65 mojo::ApplicationRunner runner(new mojo::test::TestServiceApplication); | |
66 return runner.Run(shell_handle); | |
67 } | |
OLD | NEW |