29 #include <rsc/runtime/ContainerIO.h>
30 #include <rsc/logging/Logger.h>
33 #include "../QualityOfServiceSpec.h"
35 #include "../transport/OutConnector.h"
36 #include "../transport/Connector.h"
43 using namespace rsc::logging;
46 using namespace rsb::transport;
49 namespace eventprocessing {
63 OutRouteConfigurator::OutRouteConfigurator(
const Scope& scope) :
65 d->logger = Logger::getLogger(
"rsb.eventprocessing.OutRouteConfigurator");
77 return "OutRouteConfigurator";
81 stream <<
"connectors = " <<
d->connectors <<
", shutdown = "
86 RSCDEBUG(
d->logger,
"Activating");
89 for (ConnectorList::iterator it =
d->connectors.begin(); it
90 !=
d->connectors.end(); ++it) {
91 (*it)->setScope(
d->scope);
97 for (ConnectorList::iterator it =
d->connectors.begin(); it
98 !=
d->connectors.end(); ++it) {
99 RSCDEBUG(
d->logger,
"Adding connector " << *it
100 <<
" to strategy " <<
d->eventSendingStrategy);
101 d->eventSendingStrategy->addConnector(*it);
106 RSCDEBUG(
d->logger,
"Deactivating");
110 for (ConnectorList::iterator it =
d->connectors.begin(); it
111 !=
d->connectors.end(); ++it) {
112 RSCDEBUG(
d->logger,
"Removing connector " << *it
113 <<
" from strategy " <<
d->eventSendingStrategy);
114 if (
d->eventSendingStrategy) {
115 d->eventSendingStrategy->removeConnector(*it);
118 d->eventSendingStrategy.reset();
121 for (ConnectorList::iterator it =
d->connectors.begin(); it
122 !=
d->connectors.end(); ++it) {
130 RSCDEBUG(
d->logger,
"Adding connector " << connector);
131 d->connectors.push_back(connector);
135 RSCDEBUG(
d->logger,
"Removing connector " << connector);
136 d->connectors.remove(connector);
140 RSCDEBUG(
d->logger,
"OutRouteConfigurator::publish(Event) publishing new event: " << e);
141 d->eventSendingStrategy->process(e);
146 for (ConnectorList::iterator it =
d->connectors.begin(); it
147 !=
d->connectors.end(); ++it) {
148 (*it)->setQualityOfServiceSpecs(specs);
Specification of desired quality of service settings for sending and receiving events.
void addConnector(transport::OutConnectorPtr connector)
std::list< transport::OutConnectorPtr > ConnectorList
This event sending strategy just passes incoming events to its associated rsb::transport::OutConnecto...
std::string getClassName() const
void setQualityOfServiceSpecs(const QualityOfServiceSpec &specs)
Define the desired quality of service specifications for published events.
EventSendingStrategyPtr eventSendingStrategy
boost::scoped_ptr< Impl > d
boost::shared_ptr< OutConnector > OutConnectorPtr
void removeConnector(transport::OutConnectorPtr connector)
void publish(EventPtr e)
Publish event to out ports of this router.
void printContents(std::ostream &stream) const
virtual ~OutRouteConfigurator()
boost::shared_ptr< EventSendingStrategy > EventSendingStrategyPtr
boost::shared_ptr< Event > EventPtr
Scope is a descriptor for a hierarchical channel of the unified bus.
rsc::logging::LoggerPtr logger