我正在尝试在质子::连接对象的工作队列中添加质子::工作功能(打开一个新的发送者)。我有一个指向工作队列的指针,但是我的问题是如何正确绑定(bind)open_sender函数。
我在这里知道真正的问题:函数的参数:
sender open_sender(const std::string& addr);
当字符串通过引用传递时,我必须取消引用它。我可以,但是如何使用质子工具呢?
这是我的代码行:
proton::work w = proton::make_work( &proton::connection::open_sender, &m_connection, p_url);
注意 :
问;)!
最佳答案
通常,您将在处理程序中使用proton::open_sender
API进行连接打开或容器启动,因此在大多数情况下,您不必使用proton::make_work
。如果看一下Proton C++示例,那么一个简单的起点是simple_send.cpp。
缩写的代码可能如下所示:
class simple_send : public proton::messaging_handler {
private:
proton::sender sender;
const std::string url;
const std::string addr;
...
public:
simple_send(...) :
url(...),
addr(...)
{}
...
// This handler is called when the container starts
void on_container_start(proton::container &c) {
c.connect(url);
}
// This handler is called when the connection is open
void on_connection_open(proton::connection& c) {
sender = c.open_sender(addr);
}
...
}
int main() {
...
simple_send send(...);
proton::container(send).run();
...
}
Proton C++附带了其他示例,这些示例应该可以帮助您找出使用Proton C++的其他方法。参见https://github.com/apache/qpid-proton/tree/master/examples/cpp。
您还可以在http://qpid.apache.org/releases/qpid-proton-0.20.0/proton/cpp/api/index.html中找到API文档(适用于2018年2月的当前版本)。