我试图在proton :: connection对象的工作队列中添加proton :: work函数(打开一个新的发送者)。我有一个指向工作队列的指针,但我的问题是如何正确绑定open_sender函数。
我在这里意识到真正的问题:函数的参数:
sender open_sender(const std::string& addr);
当字符串通过引用传递时,我必须取消引用它。我对此感到满意,但如何使用质子工具呢?
这是我的代码行:
proton::work w = proton::make_work( &proton::connection::open_sender, &m_connection, p_url);
注意:
答案 0 :(得分:1)
通常,您将使用处理程序中的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月的当前版本)。