Home | History | Annotate | Download | only in test_service
      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 
     19 TestServiceApplication::TestServiceApplication() : ref_count_(0) {
     20 }
     21 
     22 TestServiceApplication::~TestServiceApplication() {
     23 }
     24 
     25 bool TestServiceApplication::ConfigureIncomingConnection(
     26     ApplicationConnection* connection) {
     27   connection->AddService<TestService>(this);
     28   connection->AddService<TestTimeService>(this);
     29   return true;
     30 }
     31 
     32 void TestServiceApplication::Create(ApplicationConnection* connection,
     33                                     InterfaceRequest<TestService> request) {
     34   BindToRequest(new TestServiceImpl(connection, this), &request);
     35 }
     36 
     37 void TestServiceApplication::Create(ApplicationConnection* connection,
     38                                     InterfaceRequest<TestTimeService> request) {
     39   BindToRequest(new TestTimeServiceImpl(connection), &request);
     40 }
     41 
     42 void TestServiceApplication::AddRef() {
     43   assert(ref_count_ >= 0);
     44   ref_count_++;
     45 }
     46 
     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 
     57 MojoResult MojoMain(MojoHandle shell_handle) {
     58   mojo::ApplicationRunner runner(new mojo::test::TestServiceApplication);
     59   return runner.Run(shell_handle);
     60 }
     61