summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceStorm/Makefile3
-rw-r--r--cpp/src/IceStorm/Makefile.mak3
-rwxr-xr-xcpp/src/IceStorm/Subscriber.cpp26
-rw-r--r--cpp/src/IceStorm/TopicI.cpp26
-rw-r--r--cpp/src/IceStorm/TopicManagerI.cpp35
-rw-r--r--cpp/src/IceStorm/TransientTopicI.cpp13
-rw-r--r--cpp/src/IceStorm/Util.cpp35
-rw-r--r--cpp/src/IceStorm/Util.h24
8 files changed, 150 insertions, 15 deletions
diff --git a/cpp/src/IceStorm/Makefile b/cpp/src/IceStorm/Makefile
index 92337364e81..759f7d3acee 100644
--- a/cpp/src/IceStorm/Makefile
+++ b/cpp/src/IceStorm/Makefile
@@ -31,7 +31,8 @@ OBJS = NodeI.o \
LLURecord.o \
Election.o \
SubscriberRecord.o \
- IceStormInternal.o
+ IceStormInternal.o \
+ Util.o
AOBJS = Admin.o \
Grammar.o \
diff --git a/cpp/src/IceStorm/Makefile.mak b/cpp/src/IceStorm/Makefile.mak
index d5336eb86ec..12cdfeb9bb9 100644
--- a/cpp/src/IceStorm/Makefile.mak
+++ b/cpp/src/IceStorm/Makefile.mak
@@ -29,7 +29,8 @@ OBJS = NodeI.obj \
LLURecord.obj \
Election.obj \
SubscriberRecord.obj \
- IceStormInternal.obj
+ IceStormInternal.obj \
+ Util.obj
AOBJS = Admin.obj \
Grammar.obj \
diff --git a/cpp/src/IceStorm/Subscriber.cpp b/cpp/src/IceStorm/Subscriber.cpp
index 6980bd5c312..5788521087a 100755
--- a/cpp/src/IceStorm/Subscriber.cpp
+++ b/cpp/src/IceStorm/Subscriber.cpp
@@ -11,6 +11,7 @@
#include <IceStorm/Instance.h>
#include <IceStorm/TraceLevels.h>
#include <IceStorm/NodeI.h>
+#include <IceStorm/Util.h>
#include <Ice/LoggerUtil.h>
#include <iterator>
@@ -791,8 +792,12 @@ Subscriber::error(bool dec, const Ice::Exception& e)
if(_currentRetry == 0)
{
Ice::Warning warn(traceLevels->logger);
- warn << traceLevels->subscriberCat << ":" << _instance->communicator()->identityToString(_rec.id)
- << ": subscriber offline: " << e
+ warn << traceLevels->subscriberCat << ":" << _instance->communicator()->identityToString(_rec.id);
+ if(traceLevels->subscriber > 1)
+ {
+ warn << " endpoints: " << IceStormInternal::describeEndpoints(_rec.obj);
+ }
+ warn << " subscriber offline: " << e
<< " discarding events: " << _instance->discardInterval() << "s retryCount: " << _retryCount;
}
else
@@ -801,7 +806,12 @@ Subscriber::error(bool dec, const Ice::Exception& e)
{
Ice::Trace out(traceLevels->logger, traceLevels->subscriberCat);
out << this << " ";
- out << _instance->communicator()->identityToString(_rec.id) << ": subscriber offline: " << e
+ out << _instance->communicator()->identityToString(_rec.id);
+ if(traceLevels->subscriber > 1)
+ {
+ out << " endpoints: " << IceStormInternal::describeEndpoints(_rec.obj);
+ }
+ out << " subscriber offline: " << e
<< " discarding events: " << _instance->discardInterval() << "s retry: "
<< _currentRetry << "/" << _retryCount;
}
@@ -825,7 +835,12 @@ Subscriber::error(bool dec, const Ice::Exception& e)
{
Ice::Trace out(traceLevels->logger, traceLevels->subscriberCat);
out << this << " ";
- out << _instance->communicator()->identityToString(_rec.id) << ": subscriber errored out: " << e
+ out << _instance->communicator()->identityToString(_rec.id);
+ if(traceLevels->subscriber > 1)
+ {
+ out << " endpoints: " << IceStormInternal::describeEndpoints(_rec.obj);
+ }
+ out << " subscriber errored out: " << e
<< " retry: " << _currentRetry << "/" << _retryCount;
}
}
@@ -929,7 +944,8 @@ Subscriber::setState(Subscriber::SubscriberState state)
if(traceLevels->subscriber > 1)
{
Ice::Trace out(traceLevels->logger, traceLevels->subscriberCat);
- out << this << " transition from " << stateToString(_state) << " to " << stateToString(state);
+ out << this << " endpoints: " << IceStormInternal::describeEndpoints(_rec.obj)
+ << " transition from: " << stateToString(_state) << " to: " << stateToString(state);
}
_state = state;
}
diff --git a/cpp/src/IceStorm/TopicI.cpp b/cpp/src/IceStorm/TopicI.cpp
index f5b17021af3..068f659bd66 100644
--- a/cpp/src/IceStorm/TopicI.cpp
+++ b/cpp/src/IceStorm/TopicI.cpp
@@ -15,6 +15,7 @@
#include <IceStorm/NodeI.h>
#include <IceStorm/Observers.h>
#include <IceStorm/DB.h>
+#include <IceStorm/Util.h>
#include <Ice/LoggerUtil.h>
#include <algorithm>
@@ -456,6 +457,10 @@ TopicImpl::TopicImpl(
{
Ice::Trace out(traceLevels->logger, traceLevels->topicCat);
out << _name << " recreate " << _instance->communicator()->identityToString(id);
+ if(traceLevels->topic > 1)
+ {
+ out << " endpoints: " << IceStormInternal::describeEndpoints(p->obj);
+ }
}
try
@@ -470,7 +475,12 @@ TopicImpl::TopicImpl(
catch(const Ice::Exception& ex)
{
Ice::Warning out(traceLevels->logger);
- out << _name << " recreate " << _instance->communicator()->identityToString(id) << " failed: " << ex;
+ out << _name << " recreate " << _instance->communicator()->identityToString(id);
+ if(traceLevels->topic > 1)
+ {
+ out << " endpoints: " << IceStormInternal::describeEndpoints(p->obj);
+ }
+ out << " failed: " << ex;
}
}
}
@@ -571,9 +581,11 @@ TopicImpl::subscribe(const QoS& origQoS, const Ice::ObjectPrx& obj)
{
Ice::Trace out(traceLevels->logger, traceLevels->topicCat);
out << _name << ": subscribe: " << _instance->communicator()->identityToString(id);
+
if(traceLevels->topic > 1)
{
- out << " QoS: ";
+ out << " endpoints: " << IceStormInternal::describeEndpoints(obj)
+ << " QoS: ";
for(QoS::const_iterator p = qos.begin(); p != qos.end() ; ++p)
{
if(p != qos.begin())
@@ -735,9 +747,11 @@ TopicImpl::subscribeAndGetPublisher(const QoS& qos, const Ice::ObjectPrx& obj)
{
Ice::Trace out(traceLevels->logger, traceLevels->topicCat);
out << _name << ": subscribeAndGetPublisher: " << _instance->communicator()->identityToString(id);
+
if(traceLevels->topic > 1)
{
- out << " QoS: ";
+ out << " endpoints: " << IceStormInternal::describeEndpoints(obj)
+ << " QoS: ";
for(QoS::const_iterator p = qos.begin(); p != qos.end() ; ++p)
{
if(p != qos.begin())
@@ -829,8 +843,10 @@ TopicImpl::unsubscribe(const Ice::ObjectPrx& subscriber)
{
Ice::Trace out(traceLevels->logger, traceLevels->topicCat);
out << _name << ": unsubscribe: " << _instance->communicator()->identityToString(id);
+
if(traceLevels->topic > 1)
{
+ out << " endpoints: " << IceStormInternal::describeEndpoints(subscriber);
trace(out, _instance, _subscribers);
}
}
@@ -1259,9 +1275,11 @@ TopicImpl::observerAddSubscriber(const LogUpdate& llu, const SubscriberRecord& r
{
Ice::Trace out(traceLevels->logger, traceLevels->topicCat);
out << _name << ": add replica observer: " << _instance->communicator()->identityToString(record.id);
+
if(traceLevels->topic > 1)
{
- out << " QoS: ";
+ out << " endpoints: " << IceStormInternal::describeEndpoints(record.obj)
+ << " QoS: ";
for(QoS::const_iterator p = record.theQoS.begin(); p != record.theQoS.end() ; ++p)
{
if(p != record.theQoS.begin())
diff --git a/cpp/src/IceStorm/TopicManagerI.cpp b/cpp/src/IceStorm/TopicManagerI.cpp
index 076cdc612a6..d826c47ab48 100644
--- a/cpp/src/IceStorm/TopicManagerI.cpp
+++ b/cpp/src/IceStorm/TopicManagerI.cpp
@@ -16,6 +16,7 @@
#include <IceStorm/Observers.h>
#include <IceStorm/Subscriber.h>
#include <IceStorm/DB.h>
+#include <IceStorm/Util.h>
#include <Ice/SliceChecksums.h>
#include <functional>
@@ -471,6 +472,10 @@ TopicManagerImpl::observerInit(const LogUpdate& llu, const TopicContentSeq& cont
out << ",";
}
out << _instance->communicator()->identityToString(q->id);
+ if(traceLevels->topicMgr > 1)
+ {
+ out << " endpoints: " << IceStormInternal::describeEndpoints(q->obj);
+ }
}
}
}
@@ -870,12 +875,38 @@ TopicManagerImpl::installTopic(const string& name, const Ice::Identity& id, bool
if(create)
{
out << "creating new topic \"" << name << "\". id: "
- << _instance->communicator()->identityToString(id);
+ << _instance->communicator()->identityToString(id)
+ << " subscribers: ";
+ for(SubscriberRecordSeq::const_iterator q = subscribers.begin(); q != subscribers.end(); ++q)
+ {
+ if(q != subscribers.begin())
+ {
+ out << ",";
+ }
+ if(traceLevels->topicMgr > 1)
+ {
+ out << _instance->communicator()->identityToString(q->id)
+ << " endpoints: " << IceStormInternal::describeEndpoints(q->obj);
+ }
+ }
}
else
{
out << "loading topic \"" << name << "\" from database. id: "
- << _instance->communicator()->identityToString(id);
+ << _instance->communicator()->identityToString(id)
+ << " subscribers: ";
+ for(SubscriberRecordSeq::const_iterator q = subscribers.begin(); q != subscribers.end(); ++q)
+ {
+ if(q != subscribers.begin())
+ {
+ out << ",";
+ }
+ if(traceLevels->topicMgr > 1)
+ {
+ out << _instance->communicator()->identityToString(q->id)
+ << " endpoints: " << IceStormInternal::describeEndpoints(q->obj);
+ }
+ }
}
}
diff --git a/cpp/src/IceStorm/TransientTopicI.cpp b/cpp/src/IceStorm/TransientTopicI.cpp
index 1b303fde42f..09bb6d80add 100644
--- a/cpp/src/IceStorm/TransientTopicI.cpp
+++ b/cpp/src/IceStorm/TransientTopicI.cpp
@@ -12,6 +12,7 @@
#include <IceStorm/Instance.h>
#include <IceStorm/Subscriber.h>
#include <IceStorm/TraceLevels.h>
+#include <IceStorm/Util.h>
#include <Ice/Ice.h>
@@ -196,9 +197,11 @@ TransientTopicImpl::subscribe(const QoS& origQoS, const Ice::ObjectPrx& obj, con
{
Ice::Trace out(traceLevels->logger, traceLevels->topicCat);
out << _name << ": subscribe: " << _instance->communicator()->identityToString(id);
+
if(traceLevels->topic > 1)
{
- out << " QoS: ";
+ out << " endpoints: " << IceStormInternal::describeEndpoints(obj)
+ << " QoS: ";
for(QoS::const_iterator p = qos.begin(); p != qos.end() ; ++p)
{
if(p != qos.begin())
@@ -286,9 +289,11 @@ TransientTopicImpl::subscribeAndGetPublisher(const QoS& qos, const Ice::ObjectPr
{
Ice::Trace out(traceLevels->logger, traceLevels->topicCat);
out << _name << ": subscribeAndGetPublisher: " << _instance->communicator()->identityToString(id);
+
if(traceLevels->topic > 1)
{
- out << " QoS: ";
+ out << " endpoints: " << IceStormInternal::describeEndpoints(obj)
+ << " QoS: ";
for(QoS::const_iterator p = qos.begin(); p != qos.end() ; ++p)
{
if(p != qos.begin())
@@ -342,6 +347,10 @@ TransientTopicImpl::unsubscribe(const Ice::ObjectPrx& subscriber, const Ice::Cur
{
Ice::Trace out(traceLevels->logger, traceLevels->topicCat);
out << _name << ": unsubscribe: " << _instance->communicator()->identityToString(id);
+ if(traceLevels->topic > 1)
+ {
+ out << " endpoints: " << IceStormInternal::describeEndpoints(subscriber);
+ }
}
Lock sync(*this);
diff --git a/cpp/src/IceStorm/Util.cpp b/cpp/src/IceStorm/Util.cpp
new file mode 100644
index 00000000000..3ba86f439d3
--- /dev/null
+++ b/cpp/src/IceStorm/Util.cpp
@@ -0,0 +1,35 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceStorm/Util.h>
+
+using namespace std;
+
+string
+IceStormInternal::describeEndpoints(const Ice::ObjectPrx& proxy)
+{
+ ostringstream os;
+ if(proxy)
+ {
+ Ice::EndpointSeq endpoints = proxy->ice_getEndpoints();
+ for(Ice::EndpointSeq::const_iterator i = endpoints.begin(); i != endpoints.end(); ++i)
+ {
+ if(i != endpoints.begin())
+ {
+ os << ", ";
+ }
+ os << "\"" << (*i)->toString() << "\"";
+ }
+ }
+ else
+ {
+ os << "subscriber proxy is null";
+ }
+ return os.str();
+}
diff --git a/cpp/src/IceStorm/Util.h b/cpp/src/IceStorm/Util.h
new file mode 100644
index 00000000000..871a2a6793a
--- /dev/null
+++ b/cpp/src/IceStorm/Util.h
@@ -0,0 +1,24 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef UTIL_H
+#define UTIL_H
+
+#include <string>
+
+#include <Ice/Ice.h>
+
+namespace IceStormInternal
+{
+
+std::string
+describeEndpoints(const Ice::ObjectPrx&);
+
+}
+#endif