LCOV - code coverage report
Current view: directory - src/trusted/reverse_service - reverse_socket.cc (source / functions) Found Hit Coverage
Test: coverage.lcov Lines: 28 19 67.9 %
Date: 2012-02-16 Functions: 0 0 -

       1                 : /*
       2                 :  * Copyright (c) 2011 The Native Client Authors. All rights reserved.
       3                 :  * Use of this source code is governed by a BSD-style license that can be
       4                 :  * found in the LICENSE file.
       5                 :  */
       6                 : 
       7                 : #include "native_client/src/trusted/reverse_service/reverse_socket.h"
       8                 : 
       9                 : #include "native_client/src/include/nacl_scoped_ptr.h"
      10                 : #include "native_client/src/shared/platform/nacl_log.h"
      11                 : #include "native_client/src/trusted/desc/nacl_desc_wrapper.h"
      12                 : #include "native_client/src/trusted/nacl_base/nacl_refcount.h"
      13                 : #include "native_client/src/trusted/desc/nacl_desc_base.h"
      14                 : #include "native_client/src/trusted/simple_service/nacl_simple_rservice.h"
      15                 : 
      16                 : namespace nacl {
      17                 : 
      18               2 : ReverseSocket::~ReverseSocket() {
      19                 :   NaClLog(4, "~ReverseSocket, about to delete conn_cap_ 0x%"NACL_PRIxPTR"\n",
      20               2 :           (uintptr_t) conn_cap_);
      21               2 :   delete conn_cap_;
      22               2 :   NaClRefCountUnref(reinterpret_cast<NaClRefCount*>(rev_service_));
      23               2 :   rev_service_ = NULL;
      24               2 : }
      25                 : 
      26                 : bool ReverseSocket::StartServiceCb(void (*exit_cb)(void *server_instance_data,
      27                 :                                                    int  server_loop_ret),
      28               5 :                                    void* server_instance_data) {
      29               5 :   NaClLog(4, "Entered ReverseSocket::StartService\n");
      30                 :   nacl::scoped_ptr_malloc<NaClSimpleRevService> rev_service_tmp(
      31                 :       reinterpret_cast<NaClSimpleRevService*>(
      32               5 :           malloc(sizeof(NaClSimpleRevService))));
      33               5 :   if (NULL == rev_service_tmp.get()) {
      34               0 :     NaClLog(4, "FAILURE: Leaving ReverseSocket::StartService\n");
      35               0 :     return false;
      36                 :   }
      37                 :   nacl::scoped_ptr_nacl_refcount<NaClSimpleRevService> ref(
      38                 :       &rev_service_tmp,
      39                 :       NaClSimpleRevServiceCtor(rev_service_tmp.get(),
      40                 :                                NaClDescRef(conn_cap_->desc()),
      41                 :                                handlers_,
      42                 :                                thread_factory_fn_,
      43               5 :                                thread_factory_data_));
      44               5 :   if (!ref.constructed()) {
      45               0 :     NaClLog(4, "FAILURE: Leaving ReverseSocket::StartService\n");
      46               0 :     NaClDescUnref(conn_cap_->desc());
      47               0 :     return false;
      48                 :   }
      49                 : 
      50               5 :   rev_service_ = ref.release();
      51                 : 
      52               5 :   NaClLog(4, "ReverseSocket::StartService: invoking ConnectAndSpawnHandler\n");
      53               5 :   if (0 != (*NACL_VTBL(NaClSimpleRevService, rev_service_)->
      54                 :             ConnectAndSpawnHandlerCb)(rev_service_,
      55                 :                                       exit_cb,
      56                 :                                       server_instance_data)) {
      57               0 :     NaClLog(4, "FAILURE: Leaving ReverseSocket::StartService\n");
      58               0 :     return false;
      59                 :   }
      60                 :   // Handler thread has its own reference to rev_service_.get(), so
      61                 :   // our Dtor unreferencing it doesn't matter.
      62               5 :   NaClLog(4, "Leaving ReverseSocket::StartService\n");
      63               5 :   return true;
      64                 : }
      65                 : 
      66               0 : bool ReverseSocket::StartService(void* server_instance_data) {
      67               0 :   return StartServiceCb(NULL, server_instance_data);
      68                 : }
      69                 : 
      70              24 : }  // namespace nacl

Generated by: LCOV version 1.7