summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Topics.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-06-22 17:43:54 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-06-22 17:43:54 +0000
commit0c24068c2b2116e2e8f63cae92ef8093f0fdfe6b (patch)
treec8b82a59b3264b5a62726c1b9ec1144dfb4092e8 /cpp/src/IceGrid/Topics.cpp
parentCommitted more fixes for windows compile (diff)
downloadice-0c24068c2b2116e2e8f63cae92ef8093f0fdfe6b.tar.bz2
ice-0c24068c2b2116e2e8f63cae92ef8093f0fdfe6b.tar.xz
ice-0c24068c2b2116e2e8f63cae92ef8093f0fdfe6b.zip
Added session tests, completed update tests.
Diffstat (limited to 'cpp/src/IceGrid/Topics.cpp')
-rw-r--r--cpp/src/IceGrid/Topics.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/cpp/src/IceGrid/Topics.cpp b/cpp/src/IceGrid/Topics.cpp
index 41427244449..2ee3b28361b 100644
--- a/cpp/src/IceGrid/Topics.cpp
+++ b/cpp/src/IceGrid/Topics.cpp
@@ -110,12 +110,19 @@ NodeObserverTopic::updateServer(const string& node, const ServerDynamicInfo& ser
{
if(p->name == server.name)
{
- *p = server;
+ if(server.state == Destroyed || server.state == Inactive)
+ {
+ servers.erase(p);
+ }
+ else
+ {
+ *p = server;
+ }
break;
}
++p;
}
- if(p == servers.end())
+ if(server.state != Destroyed && server.state != Inactive && p == servers.end())
{
servers.push_back(server);
}
@@ -137,12 +144,19 @@ NodeObserverTopic::updateAdapter(const string& node, const AdapterDynamicInfo& a
{
if(p->id == adapter.id)
{
- *p = adapter;
+ if(adapter.proxy)
+ {
+ *p = adapter;
+ }
+ else
+ {
+ adapters.erase(p);
+ }
break;
}
++p;
}
- if(p == adapters.end())
+ if(adapter.proxy && p == adapters.end())
{
adapters.push_back(adapter);
}