diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/tests/BasicP2PTest.cpp | 66 | ||||
-rw-r--r-- | cpp/src/tests/BasicP2PTest.h | 46 | ||||
-rw-r--r-- | cpp/src/tests/BasicPubSubTest.cpp | 121 | ||||
-rw-r--r-- | cpp/src/tests/BasicPubSubTest.h | 51 | ||||
-rw-r--r-- | cpp/src/tests/Makefile.am | 18 | ||||
-rw-r--r-- | cpp/src/tests/SimpleTestCaseBase.cpp | 87 | ||||
-rw-r--r-- | cpp/src/tests/SimpleTestCaseBase.h | 89 | ||||
-rw-r--r-- | cpp/src/tests/TestCase.h | 64 | ||||
-rw-r--r-- | cpp/src/tests/interop_runner.cpp | 251 |
9 files changed, 0 insertions, 793 deletions
diff --git a/cpp/src/tests/BasicP2PTest.cpp b/cpp/src/tests/BasicP2PTest.cpp deleted file mode 100644 index f4a4cce7f2..0000000000 --- a/cpp/src/tests/BasicP2PTest.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -#include "BasicP2PTest.h" - -using namespace qpid; -using namespace qpid::client; - -class BasicP2PTest::Receiver : public Worker, public MessageListener -{ - const std::string queue; - std::string tag; -public: - Receiver(ConnectionOptions& options, const std::string& _queue, const int _messages) - : Worker(options, _messages), queue(_queue){} - void init() - { - Queue q(queue, true); - channel.declareQueue(q); - framing::FieldTable args; - channel.bind(Exchange::STANDARD_DIRECT_EXCHANGE, q, queue, args); - channel.consume(q, tag, this); - channel.start(); - } - - void start() - { - } - - void received(Message&) - { - count++; - } -}; - -void BasicP2PTest::assign(const std::string& role, framing::FieldTable& params, ConnectionOptions& options) -{ - std::string queue = params.getString("P2P_QUEUE_AND_KEY_NAME"); - int messages = params.getInt("P2P_NUM_MESSAGES"); - if (role == "SENDER") { - worker = std::auto_ptr<Worker>(new Sender(options, Exchange::STANDARD_DIRECT_EXCHANGE, queue, messages)); - } else if(role == "RECEIVER"){ - worker = std::auto_ptr<Worker>(new Receiver(options, queue, messages)); - } else { - throw Exception("unrecognised role"); - } - worker->init(); -} diff --git a/cpp/src/tests/BasicP2PTest.h b/cpp/src/tests/BasicP2PTest.h deleted file mode 100644 index b2611f0301..0000000000 --- a/cpp/src/tests/BasicP2PTest.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _BasicP2PTest_ -#define _BasicP2PTest_ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -#include <memory> -#include <sstream> - -#include "qpid/Exception.h" -#include "qpid/client/Channel.h" -#include "qpid/client/Message.h" -#include "qpid/client/Connection.h" -#include "qpid/client/MessageListener.h" -#include "SimpleTestCaseBase.h" - - -namespace qpid { - -class BasicP2PTest : public SimpleTestCaseBase -{ - class Receiver; -public: - void assign(const std::string& role, framing::FieldTable& params, ConnectionOptions& options); -}; - -} - -#endif diff --git a/cpp/src/tests/BasicPubSubTest.cpp b/cpp/src/tests/BasicPubSubTest.cpp deleted file mode 100644 index 1e9ff364f1..0000000000 --- a/cpp/src/tests/BasicPubSubTest.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -#include "BasicPubSubTest.h" - -using namespace qpid; - -class BasicPubSubTest::Receiver : public Worker, public MessageListener -{ - const Exchange& exchange; - const std::string queue; - const std::string key; - std::string tag; -public: - Receiver(ConnectionOptions& options, const Exchange& _exchange, const std::string& _queue, const std::string& _key, const int _messages) - : Worker(options, _messages), exchange(_exchange), queue(_queue), key(_key){} - - void init() - { - Queue q(queue, true); - channel.declareQueue(q); - framing::FieldTable args; - channel.bind(exchange, q, key, args); - channel.consume(q, tag, this); - channel.start(); - } - - void start(){ - } - - void received(Message&) - { - count++; - } -}; - -class BasicPubSubTest::MultiReceiver : public Worker, public MessageListener -{ - typedef boost::ptr_vector<Receiver> ReceiverList; - ReceiverList receivers; - -public: - MultiReceiver(ConnectionOptions& options, const Exchange& exchange, const std::string& key, const int _messages, int receiverCount) - : Worker(options, _messages) - { - for (int i = 0; i != receiverCount; i++) { - std::string queue = (boost::format("%1%_%2%") % options.clientid % i).str(); - receivers.push_back(new Receiver(options, exchange, queue, key, _messages)); - } - } - - void init() - { - for (ReceiverList::size_type i = 0; i != receivers.size(); i++) { - receivers[i].init(); - } - } - - void start() - { - for (ReceiverList::size_type i = 0; i != receivers.size(); i++) { - receivers[i].start(); - } - } - - void received(Message& msg) - { - for (ReceiverList::size_type i = 0; i != receivers.size(); i++) { - receivers[i].received(msg); - } - } - - virtual int getCount() - { - count = 0; - for (ReceiverList::size_type i = 0; i != receivers.size(); i++) { - count += receivers[i].getCount(); - } - return count; - } - virtual void stop() - { - for (ReceiverList::size_type i = 0; i != receivers.size(); i++) { - receivers[i].stop(); - } - } -}; - -void BasicPubSubTest::assign(const std::string& role, framing::FieldTable& params, ConnectionOptions& options) -{ - std::string key = params.getString("PUBSUB_KEY"); - int messages = params.getInt("PUBSUB_NUM_MESSAGES"); - int receivers = params.getInt("PUBSUB_NUM_RECEIVERS"); - if (role == "SENDER") { - worker = std::auto_ptr<Worker>(new Sender(options, Exchange::STANDARD_TOPIC_EXCHANGE, key, messages)); - } else if(role == "RECEIVER"){ - worker = std::auto_ptr<Worker>(new MultiReceiver(options, Exchange::STANDARD_TOPIC_EXCHANGE, key, messages, receivers)); - } else { - throw Exception("unrecognised role"); - } - worker->init(); -} - diff --git a/cpp/src/tests/BasicPubSubTest.h b/cpp/src/tests/BasicPubSubTest.h deleted file mode 100644 index 242d2847d7..0000000000 --- a/cpp/src/tests/BasicPubSubTest.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef _BasicPubSubTest_ -#define _BasicPubSubTest_ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -#include <memory> -#include <sstream> - -#include "qpid/Exception.h" -#include "qpid/client/Channel.h" -#include "qpid/client/Message.h" -#include "qpid/client/Connection.h" -#include "qpid/client/MessageListener.h" -#include "SimpleTestCaseBase.h" -#include <boost/ptr_container/ptr_vector.hpp> -#include <boost/format.hpp> - - -namespace qpid { - -using namespace qpid::client; - -class BasicPubSubTest : public SimpleTestCaseBase -{ - class Receiver; - class MultiReceiver; -public: - void assign(const std::string& role, framing::FieldTable& params, ConnectionOptions& options); -}; - -} - -#endif diff --git a/cpp/src/tests/Makefile.am b/cpp/src/tests/Makefile.am index 4b59e8ebe9..9634a629b1 100644 --- a/cpp/src/tests/Makefile.am +++ b/cpp/src/tests/Makefile.am @@ -242,24 +242,6 @@ libdlclose_noop_la_SOURCES = dlclose_noop.c CLEANFILES+=valgrind.out *.log *.vglog* dummy_test $(unit_wrappers) -# FIXME aconway 2008-05-23: Disabled interop_runner because it uses -# the obsolete Channel class. Convert to Session and re-enable. -# -# check_PROGRAMS += interop_runner - -# interop_runner_SOURCES = \ -# interop_runner.cpp \ -# SimpleTestCaseBase.cpp \ -# BasicP2PTest.cpp \ -# BasicPubSubTest.cpp \ -# SimpleTestCaseBase.h \ -# BasicP2PTest.h \ -# BasicPubSubTest.h \ -# TestCase.h \ -# TestOptions.h ConnectionOptions.h -# interop_runner_LDADD = $(lib_client) $(lib_common) $(extra_libs) - - # Longer running stability tests, not run by default check: target. # Not run under valgrind, too slow diff --git a/cpp/src/tests/SimpleTestCaseBase.cpp b/cpp/src/tests/SimpleTestCaseBase.cpp deleted file mode 100644 index 2739734731..0000000000 --- a/cpp/src/tests/SimpleTestCaseBase.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -#include "SimpleTestCaseBase.h" - -using namespace qpid; - -void SimpleTestCaseBase::start() -{ - if (worker.get()) { - worker->start(); - } -} - -void SimpleTestCaseBase::stop() -{ - if (worker.get()) { - worker->stop(); - } -} - -void SimpleTestCaseBase::report(client::Message& report) -{ - if (worker.get()) { - report.getHeaders().setInt("MESSAGE_COUNT", worker->getCount()); - //add number of messages sent or received - std::stringstream reportstr; - reportstr << worker->getCount(); - report.setData(reportstr.str()); - } -} - -SimpleTestCaseBase::Sender::Sender(ConnectionOptions& options, - const Exchange& _exchange, - const std::string& _key, - const int _messages) - : Worker(options, _messages), exchange(_exchange), key(_key) {} - -void SimpleTestCaseBase::Sender::init() -{ - channel.start(); -} - -void SimpleTestCaseBase::Sender::start(){ - Message msg; - while (count < messages) { - channel.publish(msg, exchange, key); - count++; - } - stop(); -} - -SimpleTestCaseBase::Worker::Worker(ConnectionOptions& options, const int _messages) : - messages(_messages), count(0) -{ - connection.open(options.host, options.port); - connection.openChannel(channel); -} - -void SimpleTestCaseBase::Worker::stop() -{ - channel.close(); - connection.close(); -} - -int SimpleTestCaseBase::Worker::getCount() -{ - return count; -} - diff --git a/cpp/src/tests/SimpleTestCaseBase.h b/cpp/src/tests/SimpleTestCaseBase.h deleted file mode 100644 index 0c1052d0c2..0000000000 --- a/cpp/src/tests/SimpleTestCaseBase.h +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef _SimpleTestCaseBase_ -#define _SimpleTestCaseBase_ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -#include <memory> -#include <sstream> - -#include "qpid/Exception.h" -#include "qpid/client/Channel.h" -#include "qpid/client/Message.h" -#include "qpid/client/Connection.h" -#include "ConnectionOptions.h" -#include "qpid/client/MessageListener.h" -#include "TestCase.h" - - -namespace qpid { - -using namespace qpid::client; - -class SimpleTestCaseBase : public TestCase -{ -protected: - class Worker - { - protected: - client::Connection connection; - client::Channel channel; - const int messages; - int count; - - public: - - Worker(ConnectionOptions& options, const int messages); - virtual ~Worker(){} - - virtual void stop(); - virtual int getCount(); - virtual void init() = 0; - virtual void start() = 0; - }; - - class Sender : public Worker - { - const Exchange& exchange; - const std::string key; - public: - Sender(ConnectionOptions& options, - const Exchange& exchange, - const std::string& key, - const int messages); - void init(); - void start(); - }; - - std::auto_ptr<Worker> worker; - -public: - virtual void assign(const std::string& role, framing::FieldTable& params, ConnectionOptions& options) = 0; - - virtual ~SimpleTestCaseBase() {} - - void start(); - void stop(); - void report(client::Message& report); -}; - -} - -#endif diff --git a/cpp/src/tests/TestCase.h b/cpp/src/tests/TestCase.h deleted file mode 100644 index ba3330c951..0000000000 --- a/cpp/src/tests/TestCase.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef _TestCase_ -#define _TestCase_ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -#include "ConnectionOptions.h" -#include "qpid/client/Message.h" - - -namespace qpid { - -/** - * Interface to be implemented by test cases for use with the test - * runner. - */ -class TestCase -{ -public: - /** - * Directs the test case to act in a particular role. Some roles - * may be 'activated' at this stage others may require an explicit - * start request. - */ - virtual void assign(const std::string& role, framing::FieldTable& params, client::ConnectionOptions& options) = 0; - /** - * Each test will be started on its own thread, which should block - * until the test completes (this may or may not require an - * explicit stop() request). - */ - virtual void start() = 0; - /** - * Requests that the test be stopped if still running. - */ - virtual void stop() = 0; - /** - * Allows the test to fill in details on the final report - * message. Will be called only after start has returned. - */ - virtual void report(client::Message& report) = 0; - - virtual ~TestCase() {} -}; - -} - -#endif diff --git a/cpp/src/tests/interop_runner.cpp b/cpp/src/tests/interop_runner.cpp deleted file mode 100644 index 8c6e0a6991..0000000000 --- a/cpp/src/tests/interop_runner.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -#include "qpid/Options.h" -#include "qpid/ptr_map.h" -#include "qpid/Exception.h" -#include "qpid/client/Channel.h" -#include "qpid/client/Connection.h" -#include "qpid/client/ConnectionOptions.h" -#include "qpid/client/Exchange.h" -#include "qpid/client/MessageListener.h" -#include "qpid/client/Queue.h" -#include "qpid/sys/Thread.h" -#include "qpid/sys/Time.h" -#include <iostream> -#include <memory> -#include "BasicP2PTest.h" -#include "BasicPubSubTest.h" -#include "TestCase.h" -#include <boost/ptr_container/ptr_map.hpp> - -/** - * Framework for interop tests. - * - * [see http://cwiki.apache.org/confluence/display/qpid/Interop+Testing+Specification for details]. - */ - -using namespace qpid::client; -using namespace qpid::sys; -using qpid::TestCase; -using qpid::framing::FieldTable; -using qpid::framing::ReplyTo; -using namespace std; - -class DummyRun : public TestCase -{ -public: - DummyRun() {} - void assign(const string&, FieldTable&, ConnectionOptions&) {} - void start() {} - void stop() {} - void report(qpid::client::Message&) {} -}; - -string parse_next_word(const string& input, const string& delims, string::size_type& position); - -/** - */ -class Listener : public MessageListener, private Runnable{ - typedef boost::ptr_map<string, TestCase> TestMap; - - Channel& channel; - ConnectionOptions& options; - TestMap tests; - const string name; - const string topic; - TestCase* test; - auto_ptr<Thread> runner; - ReplyTo reportTo; - string reportCorrelator; - - void shutdown(); - bool invite(const string& name); - void run(); - - void sendResponse(Message& response, ReplyTo replyTo); - void sendResponse(Message& response, Message& request); - void sendSimpleResponse(const string& type, Message& request); - void sendReport(); -public: - Listener(Channel& channel, ConnectionOptions& options); - void received(Message& msg); - void bindAndConsume(); - void registerTest(string name, TestCase* test); -}; - -struct TestSettings : ConnectionOptions -{ - bool help; - - TestSettings() : help(false) - { - addOptions() - ("help", qpid::optValue(help), "print this usage statement"); - } -}; - -int main(int argc, char** argv) { - try { - TestSettings options; - options.parse(argc, argv); - if (options.help) { - cout << options; - } else { - Connection connection; - connection.open(options.host, options.port, "guest", "guest", options.virtualhost); - - Channel channel; - connection.openChannel(channel); - - Listener listener(channel, options); - listener.registerTest("TC1_DummyRun", new DummyRun()); - listener.registerTest("TC2_BasicP2P", new qpid::BasicP2PTest()); - listener.registerTest("TC3_BasicPubSub", new qpid::BasicPubSubTest()); - - listener.bindAndConsume(); - - channel.run(); - connection.close(); - } - } catch(const exception& error) { - cout << error.what() << endl << "Type " << argv[0] << " --help for help" << endl; - } -} - -Listener::Listener(Channel& _channel, ConnectionOptions& _options) : channel(_channel), options(_options), name(options.clientid), topic("iop.control." + name) -{} - -void Listener::registerTest(string name, TestCase* test) -{ - tests.insert(name, test); -} - -void Listener::bindAndConsume() -{ - Queue control(name, true); - channel.declareQueue(control); - qpid::framing::FieldTable bindArgs; - //replace these separate binds with a wildcard once that is supported on java broker - channel.bind(Exchange::STANDARD_TOPIC_EXCHANGE, control, "iop.control", bindArgs); - channel.bind(Exchange::STANDARD_TOPIC_EXCHANGE, control, topic, bindArgs); - - string tag; - channel.consume(control, tag, this); -} - -void Listener::sendSimpleResponse(const string& type, Message& request) -{ - Message response; - response.getHeaders().setString("CONTROL_TYPE", type); - response.getHeaders().setString("CLIENT_NAME", name); - response.getHeaders().setString("CLIENT_PRIVATE_CONTROL_KEY", topic); - response.getMessageProperties().setCorrelationId(request.getMessageProperties().getCorrelationId()); - sendResponse(response, request); -} - -void Listener::sendResponse(Message& response, Message& request) -{ - sendResponse(response, request.getMessageProperties().getReplyTo()); -} - -void Listener::sendResponse(Message& response, ReplyTo replyTo) -{ - string exchange = replyTo.getExchange(); - string routingKey = replyTo.getRoutingKey(); - channel.publish(response, exchange, routingKey); -} - -void Listener::received(Message& message) -{ - string type(message.getHeaders().getString("CONTROL_TYPE")); - - if (type == "INVITE") { - string name(message.getHeaders().getString("TEST_NAME")); - if (name.empty() || invite(name)) { - sendSimpleResponse("ENLIST", message); - } else { - cout << "Can't take part in '" << name << "'" << endl; - } - } else if (type == "ASSIGN_ROLE") { - test->assign(message.getHeaders().getString("ROLE"), message.getHeaders(), options); - sendSimpleResponse("ACCEPT_ROLE", message); - } else if (type == "START") { - reportTo = message.getMessageProperties().getReplyTo(); - reportCorrelator = message.getMessageProperties().getCorrelationId(); - runner = auto_ptr<Thread>(new Thread(this)); - } else if (type == "STATUS_REQUEST") { - reportTo = message.getMessageProperties().getReplyTo(); - reportCorrelator = message.getMessageProperties().getCorrelationId(); - test->stop(); - sendReport(); - } else if (type == "TERMINATE") { - if (test) test->stop(); - shutdown(); - } else { - cerr <<"ERROR!: Received unknown control message: " << type << endl; - shutdown(); - } -} - -void Listener::shutdown() -{ - channel.close(); -} - -bool Listener::invite(const string& name) -{ - TestMap::iterator i = tests.find(name); - test = (i != tests.end()) ? qpid::ptr_map_ptr(i) : 0; - return test; -} - -void Listener::run() -{ - //NB: this method will be called in its own thread - //start test and when start returns... - test->start(); - sendReport(); -} - -void Listener::sendReport() -{ - Message report; - report.getHeaders().setString("CONTROL_TYPE", "REPORT"); - test->report(report); - report.getMessageProperties().setCorrelationId(reportCorrelator); - sendResponse(report, reportTo); -} - -string parse_next_word(const string& input, const string& delims, string::size_type& position) -{ - string::size_type start = input.find_first_not_of(delims, position); - if (start == string::npos) { - return ""; - } else { - string::size_type end = input.find_first_of(delims, start); - if (end == string::npos) { - end = input.length(); - } - position = end; - return input.substr(start, end - start); - } -} |