summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Connection.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2003-01-27 21:11:36 +0000
committerMarc Laukien <marc@zeroc.com>2003-01-27 21:11:36 +0000
commite51106b81ce7c098de1bfef0b1cc0fd39763b97f (patch)
tree8b208a4ef512df2a66928fec0de3db28354bcfe6 /cpp/src/Ice/Connection.cpp
parentAdded ICE_UTIL_API for nullHandleAbort (diff)
downloadice-e51106b81ce7c098de1bfef0b1cc0fd39763b97f.tar.bz2
ice-e51106b81ce7c098de1bfef0b1cc0fd39763b97f.tar.xz
ice-e51106b81ce7c098de1bfef0b1cc0fd39763b97f.zip
restructuring
Diffstat (limited to 'cpp/src/Ice/Connection.cpp')
-rw-r--r--cpp/src/Ice/Connection.cpp47
1 files changed, 26 insertions, 21 deletions
diff --git a/cpp/src/Ice/Connection.cpp b/cpp/src/Ice/Connection.cpp
index aea68c950a1..747dedad362 100644
--- a/cpp/src/Ice/Connection.cpp
+++ b/cpp/src/Ice/Connection.cpp
@@ -21,7 +21,7 @@
#include <Ice/Transceiver.h>
#include <Ice/ThreadPool.h>
#include <Ice/ConnectionMonitor.h>
-#include <Ice/ObjectAdapter.h>
+#include <Ice/ObjectAdapterI.h> // For getThreadPool() and getServantManager().
#include <Ice/Endpoint.h>
#include <Ice/Outgoing.h>
#include <Ice/OutgoingAsync.h>
@@ -809,6 +809,14 @@ IceInternal::Connection::setAdapter(const ObjectAdapterPtr& adapter)
}
_adapter = adapter;
+ if(_adapter)
+ {
+ _servantManager = dynamic_cast<ObjectAdapterI*>(_adapter.get())->getServantManager();
+ }
+ else
+ {
+ _servantManager = 0;
+ }
}
ObjectAdapterPtr
@@ -1155,7 +1163,7 @@ IceInternal::Connection::message(BasicStream& stream, const ThreadPoolPtr& threa
//
while(invoke-- > 0)
{
- in.invoke();
+ in.invoke(_servantManager);
}
}
catch(const LocalException& ex)
@@ -1226,9 +1234,9 @@ IceInternal::Connection::Connection(const InstancePtr& instance,
_transceiver(transceiver),
_endpoint(endpoint),
_adapter(adapter),
- _logger(_instance->logger()),
- _traceLevels(_instance->traceLevels()),
- _defaultsAndOverrides(_instance->defaultsAndOverrides()),
+ _logger(_instance->logger()), // Chached for better performance.
+ _traceLevels(_instance->traceLevels()), // Chached for better performance.
+ _defaultsAndOverrides(_instance->defaultsAndOverrides()), // Chached for better performance.
_registeredWithPool(false),
_warn(false),
_acmTimeout(0),
@@ -1244,6 +1252,15 @@ IceInternal::Connection::Connection(const InstancePtr& instance,
_proxyCount(0),
_state(StateNotValidated)
{
+ if(_adapter)
+ {
+ _servantManager = dynamic_cast<ObjectAdapterI*>(_adapter.get())->getServantManager();
+ }
+ else
+ {
+ _servantManager = 0;
+ }
+
vector<Byte>& requestHdr = const_cast<vector<Byte>&>(_requestHdr);
requestHdr[0] = protocolVersion;
requestHdr[1] = encodingVersion;
@@ -1449,21 +1466,11 @@ IceInternal::Connection::registerWithPool()
{
if(_adapter)
{
- if(!_serverThreadPool) // Lazy initialization.
- {
- const_cast<ThreadPoolPtr&>(_serverThreadPool) = _instance->serverThreadPool();
- assert(_serverThreadPool);
- }
- _serverThreadPool->_register(_transceiver->fd(), this);
+ dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->_register(_transceiver->fd(), this);
}
else
{
- if(!_clientThreadPool) // Lazy initialization.
- {
- const_cast<ThreadPoolPtr&>(_clientThreadPool) = _instance->clientThreadPool();
- assert(_clientThreadPool);
- }
- _clientThreadPool->_register(_transceiver->fd(), this);
+ _instance->clientThreadPool()->_register(_transceiver->fd(), this);
}
_registeredWithPool = true;
@@ -1483,13 +1490,11 @@ IceInternal::Connection::unregisterWithPool()
{
if(_adapter)
{
- assert(_serverThreadPool);
- _serverThreadPool->unregister(_transceiver->fd());
+ dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->unregister(_transceiver->fd());
}
else
{
- assert(_clientThreadPool);
- _clientThreadPool->unregister(_transceiver->fd());
+ _instance->clientThreadPool()->unregister(_transceiver->fd());
}
_registeredWithPool = false;