LTP GCOV extension - code coverage report
Current view: directory - src/cpp/prod/protocol/giop - target_address.cpp
Test: YAORB-0.2.info
Date: 2006-02-27 Instrumented lines: 60
Code covered: 70.0 % Executed lines: 42

       1                 : //==============================================================================
       2                 : // File <$/src/cpp/prod/protocol/giop/target_address.cpp>
       3                 : // This file is part of YaOrb : Yet Another Object Request Broker,
       4                 : // Copyright (c) 2000-2003, Marc Alff.
       5                 : //
       6                 : // This program is free software; you can redistribute it and/or
       7                 : // modify it under the terms of the GNU General Public License
       8                 : // as published by the Free Software Foundation; either version 2
       9                 : // of the License, or (at your option) any later version.
      10                 : //
      11                 : // This program is distributed in the hope that it will be useful,
      12                 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13                 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14                 : // GNU General Public License for more details.
      15                 : //
      16                 : // You should have received a copy of the GNU General Public License
      17                 : // along with this program; if not, write to the Free Software
      18                 : // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
      19                 : //
      20                 : //==============================================================================
      21                 : 
      22                 : #include <yaorb/CORBA.h>
      23                 : #include <yaorb/YAORB.h>
      24                 : 
      25                 : #include "src/cpp/prod/tool/DEVELOPMENT.h"
      26                 : #include "src/cpp/prod/tool/Assert.h"
      27                 : #include "src/cpp/prod/protocol/cdr/msg.h"
      28                 : #include "src/cpp/prod/protocol/giop/target_address.h"
      29                 : 
      30                 : //==============================================================================
      31                 : // Implementation of IOPAddressingInfo
      32                 : //==============================================================================
      33                 : 
      34               1 : IORAddressingInfo::IORAddressingInfo()
      35                 :  : _selected_profile_index(0),
      36               1 :    _ior()
      37                 : {
      38                 : }
      39                 : 
      40                 : IORAddressingInfo::IORAddressingInfo(
      41               0 :   const IORAddressingInfo& ai)
      42                 :  : _selected_profile_index(ai._selected_profile_index),
      43               0 :    _ior(ai._ior)
      44                 : {
      45                 : }
      46                 : 
      47                 : IORAddressingInfo&
      48                 : IORAddressingInfo::operator=(
      49               0 :   const IORAddressingInfo& ai)
      50                 : {
      51               0 :    _selected_profile_index = ai._selected_profile_index ;
      52               0 :    _ior = ai._ior ;
      53                 : 
      54                 :    return *this ;
      55                 : }
      56                 : 
      57               1 : IORAddressingInfo::~IORAddressingInfo()
      58                 : {
      59               1 : }
      60                 : 
      61               1 : void IORAddressingInfo::cdr(YAORB::CDR* cdrs)
      62                 : {
      63               1 :    cdrs->cdr_ULong(& _selected_profile_index) ;
      64               1 :    _ior.cdr(cdrs) ;
      65                 : }
      66                 : 
      67                 : //==============================================================================
      68                 : // Implementation of TargetAddress
      69                 : //==============================================================================
      70                 : 
      71               7 : TargetAddress::TargetAddress()
      72                 :  : _discriminant(-1),
      73               7 :    _values()
      74                 : {}
      75                 : 
      76                 : TargetAddress::TargetAddress(
      77               4 :    GIOPEncapsulation* object_key)
      78                 :  : _discriminant(KeyAddr),
      79               4 :    _values()
      80                 : {
      81               4 :    _values._object_key = object_key ;
      82                 : }
      83                 : 
      84                 : TargetAddress::TargetAddress(
      85               0 :    IOP::TaggedProfile* profile)
      86                 :  : _discriminant(ProfileAddr),
      87               0 :    _values()
      88                 : {
      89               0 :    _values._profile = profile ;
      90                 : }
      91                 : 
      92                 : TargetAddress::TargetAddress(
      93               0 :    IORAddressingInfo* ior)
      94                 :  : _discriminant(ReferenceAddr),
      95               0 :    _values()
      96                 : {
      97               0 :    _values._ior = ior ;
      98                 : }
      99                 : 
     100                 : TargetAddress::TargetAddress(
     101               4 :    const TargetAddress& ta)
     102                 :  : _discriminant(ta._discriminant),
     103               4 :    _values()
     104                 : {
     105               4 :    switch (_discriminant)
     106                 :    {
     107                 :       case KeyAddr:
     108                 :       {
     109               4 :          const GIOPEncapsulation * src = ta._values._object_key ;
     110                 :          ASSERT(src != NULL) ;
     111               4 :          _values._object_key = new GIOPEncapsulation(*src) ;
     112               4 :          break ;
     113                 :       }
     114                 :       case ProfileAddr:
     115                 :       {
     116               0 :          const IOP::TaggedProfile *src = ta._values._profile ;
     117                 :          ASSERT(src != NULL) ;
     118               0 :          _values._profile = new IOP::TaggedProfile(*src) ;
     119               0 :          break ;
     120                 :       }
     121                 :       case ReferenceAddr:
     122                 :       {
     123               0 :          const IORAddressingInfo *src = ta._values._ior ;
     124                 :          ASSERT(src != NULL) ;
     125               0 :          _values._ior = new IORAddressingInfo (*src) ;
     126                 :          break ;
     127                 :       }
     128                 :    }
     129                 : }
     130                 : 
     131                 : TargetAddress&
     132                 : TargetAddress::operator=(
     133               0 :    const TargetAddress& ta)
     134                 : {
     135               0 :    NON_DEV("TargetAddress::op=") ;
     136                 : 
     137                 :    return *this ;
     138                 : }
     139                 : 
     140              11 : TargetAddress::~TargetAddress()
     141                 : {
     142              11 :    switch (_discriminant)
     143                 :    {
     144                 :       case KeyAddr:
     145                 :       {
     146               8 :          delete _values._object_key ;
     147                 :          break ;
     148                 :       }
     149                 :       case ProfileAddr:
     150                 :       {
     151               1 :          delete _values._profile ;
     152                 :          break ;
     153                 :       }
     154                 :       case ReferenceAddr:
     155                 :       {
     156               1 :          delete _values._ior ;
     157                 :          break ;
     158                 :       }
     159                 :    }
     160               1 : }
     161                 : 
     162              11 : void TargetAddress::cdr(YAORB::CDR* cdrs)
     163                 : {
     164              11 :    cdrs->cdr_Short(& _discriminant) ;
     165              11 :    YAORB::CDR_Op op = cdrs->Op() ;
     166                 : 
     167              11 :    switch (_discriminant)
     168                 :    {
     169                 :       case KeyAddr:
     170                 :       {
     171               8 :          if (op == YAORB::CDR_READ)
     172                 :          {
     173               4 :             _values._object_key = new GIOPEncapsulation() ;
     174                 :          }
     175               8 :          _values._object_key->cdr(cdrs) ;
     176                 :          break ;
     177                 :       }
     178                 :       case ProfileAddr:
     179                 :       {
     180               1 :          if (op == YAORB::CDR_READ)
     181                 :          {
     182               1 :             _values._profile = new IOP::TaggedProfile() ;
     183                 :          }
     184               1 :          _values._profile->cdr(cdrs) ;
     185                 :          break ;
     186                 :       }
     187                 :       case ReferenceAddr:
     188                 :       {
     189               1 :          if (op == YAORB::CDR_READ)
     190                 :          {
     191               1 :             _values._ior = new IORAddressingInfo() ;
     192                 :          }
     193               1 :          _values._ior->cdr(cdrs) ;
     194                 :          break ;
     195                 :       }
     196                 :       default:
     197                 :       {
     198               1 :          ThrowMarshal(cdrs) ;
     199                 :       }
     200                 :    }
     201                 : }
     202                 : 
     203                 : AddressingDisposition
     204               6 : TargetAddress::GetAddressingDisposition(void) const
     205                 : {
     206                 :    return _discriminant ;
     207                 : }
     208                 : 
     209                 : GIOPEncapsulation*
     210               4 : TargetAddress::GetObjectKey(void) const
     211                 : {
     212                 :    ASSERT(_discriminant == KeyAddr) ;
     213                 :    return _values._object_key ;
     214                 : }
     215                 : 
     216                 : IOP::TaggedProfile*
     217               1 : TargetAddress::GetProfile(void) const
     218                 : {
     219                 :    ASSERT(_discriminant == ProfileAddr) ;
     220                 :    return _values._profile ;
     221                 : }
     222                 : 
     223                 : IORAddressingInfo*
     224               1 : TargetAddress::GetIOR(void) const
     225                 : {
     226                 :    ASSERT(_discriminant == ReferenceAddr) ;
     227                 :    return _values._ior ;
     228                 : }
     229                 : 

Generated by: LTP GCOV extension version 1.4