ICE 3.4.2
[php5-ice-freebsdport.git] / cpp / test / Ice / background / EndpointI.cpp
blob7be0a9ccbe0312e0bb3ac8ee39ec9e4f9a85c04a
1 // **********************************************************************
2 //
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
4 //
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
7 //
8 // **********************************************************************
10 #include <EndpointI.h>
11 #include <Transceiver.h>
12 #include <Connector.h>
13 #include <Acceptor.h>
14 #include <Ice/BasicStream.h>
16 using namespace std;
18 Ice::Short EndpointI::TYPE_BASE = 100;
20 EndpointI::EndpointI(const IceInternal::EndpointIPtr& endpoint) :
21 _endpoint(endpoint),
22 _configuration(Configuration::getInstance())
26 void
27 EndpointI::streamWrite(IceInternal::BasicStream* s) const
29 s->write(type());
30 _endpoint->streamWrite(s);
33 Ice::Short
34 EndpointI::type() const
36 return (Ice::Short)(TYPE_BASE + _endpoint->type());
39 int
40 EndpointI::timeout() const
42 return _endpoint->timeout();
45 IceInternal::EndpointIPtr
46 EndpointI::timeout(int timeout) const
48 IceInternal::EndpointIPtr endpoint = _endpoint->timeout(timeout);
49 if(endpoint == _endpoint)
51 return const_cast<EndpointI*>(this);
53 else
55 return new EndpointI(endpoint);
59 IceInternal::EndpointIPtr
60 EndpointI::connectionId(const string& connectionId) const
62 IceInternal::EndpointIPtr endpoint = _endpoint->connectionId(connectionId);
63 if(endpoint == _endpoint)
65 return const_cast<EndpointI*>(this);
67 else
69 return new EndpointI(endpoint);
73 bool
74 EndpointI::compress() const
76 return _endpoint->compress();
79 IceInternal::EndpointIPtr
80 EndpointI::compress(bool compress) const
82 IceInternal::EndpointIPtr endpoint = _endpoint->compress(compress);
83 if(endpoint == _endpoint)
85 return const_cast<EndpointI*>(this);
87 else
89 return new EndpointI(endpoint);
93 bool
94 EndpointI::datagram() const
96 return _endpoint->datagram();
99 bool
100 EndpointI::secure() const
102 return _endpoint->secure();
105 IceInternal::TransceiverPtr
106 EndpointI::transceiver(IceInternal::EndpointIPtr& endpoint) const
108 IceInternal::EndpointIPtr endpt = _endpoint;
109 IceInternal::TransceiverPtr transceiver = _endpoint->transceiver(endpt);
110 if(endpt == _endpoint)
112 endpoint = const_cast<EndpointI*>(this);
114 else
116 endpoint = new EndpointI(endpoint);
119 if(transceiver)
121 return new Transceiver(transceiver);
123 else
125 return 0;
129 vector<IceInternal::ConnectorPtr>
130 EndpointI::connectors() const
132 _configuration->checkConnectorsException();
133 vector<IceInternal::ConnectorPtr> c = _endpoint->connectors();
134 for(vector<IceInternal::ConnectorPtr>::iterator p = c.begin(); p != c.end(); ++p)
136 *p = new Connector(*p);
138 return c;
141 void
142 EndpointI::connectors_async(const IceInternal::EndpointI_connectorsPtr& cb) const
144 class Callback : public IceInternal::EndpointI_connectors
146 public:
148 Callback(const IceInternal::EndpointI_connectorsPtr& callback) : _callback(callback)
152 void
153 connectors(const vector<IceInternal::ConnectorPtr>& connectors)
155 vector<IceInternal::ConnectorPtr> c;
156 for(vector<IceInternal::ConnectorPtr>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
158 c.push_back(new Connector(*p));
160 _callback->connectors(c);
163 void
164 exception(const Ice::LocalException& ex)
166 _callback->exception(ex);
169 private:
171 IceInternal::EndpointI_connectorsPtr _callback;
176 _configuration->checkConnectorsException();
177 _endpoint->connectors_async(new Callback(cb));
179 catch(const Ice::LocalException& ex)
181 cb->exception(ex);
185 IceInternal::AcceptorPtr
186 EndpointI::acceptor(IceInternal::EndpointIPtr& endpoint, const string& adapterName) const
188 IceInternal::AcceptorPtr p = new Acceptor(_endpoint->acceptor(endpoint, adapterName));
189 endpoint = new EndpointI(endpoint);
190 return p;
193 vector<IceInternal::EndpointIPtr>
194 EndpointI::expand() const
196 vector<IceInternal::EndpointIPtr> e = _endpoint->expand();
197 for(vector<IceInternal::EndpointIPtr>::iterator p = e.begin(); p != e.end(); ++p)
199 *p = (*p == _endpoint) ? const_cast<EndpointI*>(this) : new EndpointI(*p);
201 return e;
204 bool
205 EndpointI::equivalent(const IceInternal::EndpointIPtr& endpoint) const
207 const EndpointI* testEndpointI = dynamic_cast<const EndpointI*>(endpoint.get());
208 if(!testEndpointI)
210 return false;
212 return testEndpointI->_endpoint->equivalent(_endpoint);
215 string
216 EndpointI::toString() const
218 return "test-" + _endpoint->toString();
221 Ice::EndpointInfoPtr
222 EndpointI::getInfo() const
224 return _endpoint->getInfo();
227 bool
228 EndpointI::operator==(const Ice::LocalObject& r) const
230 const EndpointI* p = dynamic_cast<const EndpointI*>(&r);
231 if(!p)
233 return false;
236 if(this == p)
238 return true;
242 return *p->_endpoint == *_endpoint;
245 bool
246 EndpointI::operator<(const Ice::LocalObject& r) const
248 const EndpointI* p = dynamic_cast<const EndpointI*>(&r);
249 if(!p)
251 const IceInternal::EndpointI* e = dynamic_cast<const IceInternal::EndpointI*>(&r);
252 if(!e)
254 return false;
256 return type() < e->type();
259 if(this == p)
261 return false;
264 return *p->_endpoint < *_endpoint;
267 Ice::Int
268 EndpointI::hashInit() const
270 return _endpoint->ice_getHash();