in src/qpid/broker/Broker.cpp [579:722]
Manageable::status_t Broker::ManagementMethod (uint32_t methodId,
Args& args,
string& text)
{
Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD;
switch (methodId)
{
case _qmf::Broker::METHOD_ECHO :
QPID_LOG (debug, "Broker::echo("
<< dynamic_cast<_qmf::ArgsBrokerEcho&>(args).io_sequence
<< ", "
<< dynamic_cast<_qmf::ArgsBrokerEcho&>(args).io_body
<< ")");
status = Manageable::STATUS_OK;
break;
case _qmf::Broker::METHOD_CONNECT : {
/** Management is creating a Link to a remote broker using the host and port of
* the remote. This (old) interface does not allow management to specify a name
* for the link, nor does it allow multiple Links to the same remote. Use the
* "create()" broker method if these features are needed.
* TBD: deprecate this interface.
*/
QPID_LOG(info, "The Broker::connect() method will be removed in a future release of QPID."
" Please use the Broker::create() method with type='link' instead.");
_qmf::ArgsBrokerConnect& hp=
dynamic_cast<_qmf::ArgsBrokerConnect&>(args);
string transport = hp.i_transport.empty() ? TCP_TRANSPORT : hp.i_transport;
QPID_LOG (debug, "Broker::connect() " << hp.i_host << ":" << hp.i_port << "; transport=" << transport <<
"; durable=" << (hp.i_durable?"T":"F") << "; authMech=\"" << hp.i_authMechanism << "\"");
if (!getTransportInfo(transport).connectorFactory) {
QPID_LOG(error, "Transport '" << transport << "' not supported");
text = "transport type not supported";
return Manageable::STATUS_NOT_IMPLEMENTED;
}
// Does a link to the remote already exist? If so, re-use the existing link
// - this behavior is backward compatible with previous releases.
if (!links.getLink(hp.i_host, hp.i_port, transport)) {
// new link, need to generate a unique name for it
std::pair<Link::shared_ptr, bool> response =
links.declare(Link::createName(transport, hp.i_host, hp.i_port),
hp.i_host, hp.i_port, transport,
hp.i_durable, hp.i_authMechanism, hp.i_username, hp.i_password);
if (!response.first) {
text = "Unable to create Link";
status = Manageable::STATUS_PARAMETER_INVALID;
break;
}
}
status = Manageable::STATUS_OK;
break;
}
case _qmf::Broker::METHOD_QUEUEMOVEMESSAGES : {
_qmf::ArgsBrokerQueueMoveMessages& moveArgs=
dynamic_cast<_qmf::ArgsBrokerQueueMoveMessages&>(args);
QPID_LOG (debug, "Broker::queueMoveMessages()");
if (queueMoveMessages(moveArgs.i_srcQueue, moveArgs.i_destQueue, moveArgs.i_qty,
moveArgs.i_filter, getCurrentPublisher()) >=0)
status = Manageable::STATUS_OK;
else
return Manageable::STATUS_PARAMETER_INVALID;
break;
}
case _qmf::Broker::METHOD_SETLOGLEVEL :
setLogLevel(dynamic_cast<_qmf::ArgsBrokerSetLogLevel&>(args).i_level);
QPID_LOG (debug, "Broker::setLogLevel()");
status = Manageable::STATUS_OK;
break;
case _qmf::Broker::METHOD_GETLOGLEVEL :
dynamic_cast<_qmf::ArgsBrokerGetLogLevel&>(args).o_level = getLogLevel();
QPID_LOG (debug, "Broker::getLogLevel()");
status = Manageable::STATUS_OK;
break;
case _qmf::Broker::METHOD_CREATE :
{
_qmf::ArgsBrokerCreate& a = dynamic_cast<_qmf::ArgsBrokerCreate&>(args);
createObject(a.i_type, a.i_name, a.i_properties, a.i_strict, getCurrentPublisher());
status = Manageable::STATUS_OK;
break;
}
case _qmf::Broker::METHOD_DELETE :
{
_qmf::ArgsBrokerDelete& a = dynamic_cast<_qmf::ArgsBrokerDelete&>(args);
deleteObject(a.i_type, a.i_name, a.i_options, getCurrentPublisher());
status = Manageable::STATUS_OK;
break;
}
case _qmf::Broker::METHOD_QUERY :
{
_qmf::ArgsBrokerQuery& a = dynamic_cast<_qmf::ArgsBrokerQuery&>(args);
status = queryObject(a.i_type, a.i_name, a.o_results, getCurrentPublisher());
break;
}
case _qmf::Broker::METHOD_GETTIMESTAMPCONFIG:
{
_qmf::ArgsBrokerGetTimestampConfig& a = dynamic_cast<_qmf::ArgsBrokerGetTimestampConfig&>(args);
status = getTimestampConfig(a.o_receive, getCurrentPublisher());
break;
}
case _qmf::Broker::METHOD_SETTIMESTAMPCONFIG:
{
_qmf::ArgsBrokerSetTimestampConfig& a = dynamic_cast<_qmf::ArgsBrokerSetTimestampConfig&>(args);
status = setTimestampConfig(a.i_receive, getCurrentPublisher());
break;
}
case _qmf::Broker::METHOD_GETLOGHIRESTIMESTAMP:
{
dynamic_cast<_qmf::ArgsBrokerGetLogHiresTimestamp&>(args).o_logHires = getLogHiresTimestamp();
QPID_LOG (debug, "Broker::getLogHiresTimestamp()");
status = Manageable::STATUS_OK;
break;
}
case _qmf::Broker::METHOD_SETLOGHIRESTIMESTAMP:
{
setLogHiresTimestamp(dynamic_cast<_qmf::ArgsBrokerSetLogHiresTimestamp&>(args).i_logHires);
QPID_LOG (debug, "Broker::setLogHiresTimestamp()");
status = Manageable::STATUS_OK;
break;
}
case _qmf::Broker::METHOD_QUEUEREDIRECT:
{
string srcQueue(dynamic_cast<_qmf::ArgsBrokerQueueRedirect&>(args).i_sourceQueue);
string tgtQueue(dynamic_cast<_qmf::ArgsBrokerQueueRedirect&>(args).i_targetQueue);
QPID_LOG (debug, "Broker::queueRedirect source queue:" << srcQueue << " to target queue " << tgtQueue);
status = queueRedirect(srcQueue, tgtQueue, getCurrentPublisher());
break;
}
case _qmf::Broker::METHOD_SHUTDOWN :
{
QPID_LOG (info, "Broker received shutdown command");
shutdown();
break;
}
default:
QPID_LOG (debug, "Broker ManagementMethod not implemented: id=" << methodId << "]");
status = Manageable::STATUS_NOT_IMPLEMENTED;
break;
}
return status;
}