1 : //==============================================================================
2 : // File <$/src/cpp/prod/lib/stub.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/lib/dimensioning.h"
26 : #include "src/cpp/prod/tool/DEVELOPMENT.h"
27 : #include "src/cpp/prod/tool/Assert.h"
28 : #include "src/cpp/prod/tool/Hash.h"
29 : #include "src/cpp/prod/protocol/cdr/cdr_fragment.h"
30 : #include "src/cpp/prod/protocol/cdr/cdr_file.h"
31 : #include "src/cpp/prod/CORBA/YARemoteOrb.h"
32 :
33 : //=============================================================================
34 : // Stub Hash table
35 : //=============================================================================
36 :
37 : class StubHash : public THash<YAORB::Stub, YAORB::Ref>
38 : {
39 : public :
40 : StubHash(int size) ;
41 0 : ~StubHash() {}
42 :
43 : private :
44 : static int myHashFn(const YAORB::Ref* key) ;
45 : static bool myCmpFn(const YAORB::Stub* obj, const YAORB::Ref *key) ;
46 :
47 : } ;
48 :
49 49 : StubHash::StubHash(int size)
50 98 : : THash<YAORB::Stub, YAORB::Ref> ( & myHashFn, & myCmpFn, size) {}
51 :
52 0 : int StubHash::myHashFn(const YAORB::Ref* key)
53 : {
54 0 : NON_DEV("HashFn") ;
55 : return 0 ;
56 : }
57 :
58 0 : bool StubHash::myCmpFn(const YAORB::Stub* obj, const YAORB::Ref *key)
59 : {
60 0 : NON_DEV("CmpFn") ;
61 : return false ;
62 : }
63 :
64 49 : static StubHash _hash(YAORB::DIM_STUB_HASH_TABLE) ;
65 :
66 : //=============================================================================
67 : // Stub
68 : //=============================================================================
69 :
70 4 : YAORB::Stub::Stub(const YAORB::Ref& ref)
71 4 : : _ref(ref)
72 : {
73 : }
74 :
75 4 : YAORB::Stub::~Stub()
76 : {
77 4 : }
78 :
79 : const YAORB::Ref &
80 4 : YAORB::Stub::GetRef() const
81 : {
82 : return _ref ;
83 : }
84 :
85 : void
86 : YAORB::Stub::Send(
87 : YAORB::Request& request,
88 4 : YAORB::Reply& reply) const
89 : {
90 4 : const Buffer & buf = request.GetBuffer() ;
91 :
92 : // --------------------------- DEBUG Code (Begin)
93 4 : CORBA::Octet * data = buf.GetData() ;
94 4 : unsigned int size = buf.GetSize() ;
95 :
96 4 : fprintf(stderr, "encoded %d bytes in a GIOP message\n", size) ;
97 :
98 4 : CDRFile debug("debug.giop", CDR_WRITE) ;
99 4 : debug.cdr_OctetArray(data, size) ;
100 :
101 : // --------------------------- DEBUG Code (End)
102 :
103 4 : YARemoteOrb *remoteOrb = _ref.GetRemoteOrb() ;
104 :
105 4 : remoteOrb->call(request, reply) ;
106 49 : }
107 49 :
|