1 : //=============================================================================
2 : // File <$/src/cpp/prod/poa/YaObjectKey.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 "src/cpp/prod/poa/YaObjectKey.h"
23 : #include "src/cpp/prod/tool/String.h"
24 : #include "src/cpp/prod/tool/Log.h"
25 : #include "src/cpp/prod/protocol/giop/encapsulation.h"
26 : #include "src/cpp/prod/protocol/cdr/cdr_memory.h"
27 :
28 2 : YaObjectKey::YaObjectKey()
29 : : _repoId(""),
30 : _poaName(),
31 2 : _objectId()
32 : {
33 0 : }
34 :
35 0 : YaObjectKey::~YaObjectKey()
36 : {
37 0 : }
38 :
39 : void
40 : YaObjectKey::read(
41 : const GIOPEncapsulation & encap)
42 2 : throw (CORBA::SystemException)
43 : {
44 2 : CORBA::Octet * data = encap.GetData() ;
45 2 : CORBA::ULong size = encap.GetLength() ;
46 :
47 2 : CDRMemory cdrs(data, size, YAORB::CDR_READ) ;
48 :
49 2 : cdr(& cdrs) ;
50 : }
51 :
52 : void
53 : YaObjectKey::write(
54 : GIOPEncapsulation & encap)
55 0 : throw (CORBA::SystemException)
56 : {
57 0 : NON_DEV("YaObjectKey") ;
58 : }
59 :
60 : void
61 : YaObjectKey::SetRepoId(
62 0 : const YAORB::RepositoryID & id)
63 : {
64 0 : _repoId = id ;
65 : }
66 :
67 : void
68 : YaObjectKey::SetPoaName(
69 0 : const char* poaName)
70 : {
71 0 : _poaName = poaName ;
72 : }
73 :
74 : void
75 : YaObjectKey::SetObjectId(
76 0 : const YaObjectKey::ObjectId & objectId)
77 : {
78 0 : _objectId = objectId ;
79 : }
80 :
81 : const YAORB::RepositoryID &
82 0 : YaObjectKey::GetRepoId(void) const
83 : {
84 : return _repoId ;
85 : }
86 :
87 : const char *
88 2 : YaObjectKey::GetPoaName(void) const
89 : {
90 2 : return _poaName ;
91 : }
92 :
93 : const YaObjectKey::ObjectId &
94 0 : YaObjectKey::GetObjectId(void) const
95 : {
96 : return _objectId ;
97 : }
98 :
99 : void
100 : YaObjectKey::cdr(
101 : YAORB::CDR *cdrs)
102 2 : throw (CORBA::SystemException)
103 : {
104 2 : CORBA::Octet magic[4] = { 'M', 'a', 'r', 'c' } ;
105 :
106 : // Byte order
107 :
108 2 : cdrs->cdr_ByteOrder() ;
109 :
110 : // magic
111 :
112 2 : cdrs->cdr_OctetArray(magic, 4) ;
113 :
114 2 : if ( (magic[0] != 'M')
115 : || (magic[1] != 'a')
116 : || (magic[2] != 'r')
117 : || (magic[3] != 'c')
118 : )
119 : {
120 0 : CORBA::MARSHAL ex ;
121 0 : LOG("Bad Magic") ;
122 0 : ex._raise() ;
123 : }
124 :
125 : // repoid
126 :
127 2 : _repoId.cdr(cdrs) ;
128 :
129 : // poa name
130 :
131 2 : _poaName.cdr(cdrs) ;
132 :
133 : // object id
134 :
135 2 : _objectId.cdr(cdrs) ;
136 : }
137 :
138 : //=============================================================================
139 : // END of file <src/cpp/prod/poa/YaObjectKey.cpp>
140 : //=============================================================================
|