使用C ++扩展Ruby:从C ++到Ruby的异步回调

时间:2011-10-09 14:59:05

标签: c++ ruby callback

我在编写Ruby C ++扩展时遇到了一些问题。 我有一些带源代码的C ++库。它有文档这样的功能:

class MyConversation : public Conversation
  {
  public:
    typedef DRef<MyConversation, Conversation> Ref;
    typedef DRefs<MyConversation, Conversation> Refs;
    MyConversation(unsigned int oid, SERootObject* root) : Conversation(oid, root) {};

    void OnMessage(const MessageRef & message);
  };

  void MyConversation::OnMessage(const MessageRef & message)
  {
    // Message handling goes here
  };

在函数MyConversation :: OnMessage中来自C ++库的消息。我想将此消息发送到ruby扩展名,如下所示:

  void MyConversation::OnMessage(const MessageRef & message)
  {
    //some code catch here messages
  };
在红宝石中我很简单地想要打电话:

listener = Object.new
listener.messages do |message|
  # As I understand Thread.current != Thread.main
end

怎么做?我完成了从ruby调用c ++的函数,但是如何做这些我不理解的事情(我对c和c ++知之甚少)。

感谢您的帮助!

0 个答案:

没有答案