<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 08/08/13 00:57, Alan Antonuk wrote:
    <blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
      type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra">
          <div class="gmail_quote">On Wed, Aug 7, 2013 at 1:49 PM,
            Daniel Pocock <span dir="ltr">&lt;<a moz-do-not-send="true"
                href="mailto:daniel@pocock.com.au" target="_blank">daniel@pocock.com.au</a>&gt;</span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
              <div class="im"><span style="color:rgb(34,34,34)">Does
                  this mean we need to block and/or use threads to
                  receive messages?</span><br>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>Yes, the state of rabbitmq-c and SimpleAmqpClient when
              waiting for a delivery from a consumer is you need to
              block, optionally with a timeout.</div>
            <div>&nbsp;<br>
            </div>
            <div>The problem I'm stating is that AMQP has some async
              parts to the protocol, and rabbitmq-c doesn't do anything
              to handle these events as they're fired from the broker.
              &nbsp;They're only 'seen' by rabbitmq-c when synchronous calls
              are made.</div>
            <div><br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
              Do you envisage making it work like boost::asio or have
              you seen<br>
              anything like that for AMQP?<br>
            </blockquote>
            <div><br>
            </div>
            <div>A few years back I started to implement a pure C++ AMQP
              client library leveraging boost::asio. &nbsp;You can find it
              here:</div>
            <div><a moz-do-not-send="true"
                href="https://github.com/alanxz/libamqp-cpp">https://github.com/alanxz/libamqp-cpp</a><br>
            </div>
            <div>The project was not completed. I don't have plans to
              resume work it.</div>
            <div><br>
            </div>
            <div>Recently I have been doing a bit of design work to see
              what would be necessary to create an library that
              leverages libuv to make a fully-functional native AMQP
              client.</div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Personally, I wouldn't want to favour any of these solutions over
    any other, they are all good.<br>
    <br>
    The most important thing will be demonstrating how it integrates
    with higher level code, particularly if the high level code is using
    an event loop other than the one you choose yourself.&nbsp; E.g. will the
    end user have to run your event loop in a thread and when they get
    callbacks from your code, they will have to pass data to their own
    event loop thread in a thread-safe manner?<br>
    <br>
    Another thing that comes to mind is the question of adding an
    abstraction layer, just like JMS in the Java world.&nbsp; The only one
    I've come across so far is OpenMAMA:<br>
    <a class="moz-txt-link-freetext" href="http://www.openmama.org">http://www.openmama.org</a> - do you believe RabbitMQ users could
    benefit from coding to the OpenMAMA API and using some low-level
    driver for AMQP or RabbitMQ specifically?&nbsp; This would be more like
    the JMS programming paradigm.<br>
    <br>
    <br>
    <blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>&nbsp;</div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
              <div class="im"><span style="color:rgb(34,34,34)">Did you
                  collaborate with anybody for the Debian package of the
                  C client?</span><br>
              </div>
              <a moz-do-not-send="true"
                href="http://packages.debian.org/jessie/librabbitmq-dev"
                target="_blank">http://packages.debian.org/jessie/librabbitmq-dev</a><br>
              <br>
            </blockquote>
            <div>That package is very old. &nbsp;People have come to me
              time-to-time for assistance in creating a Ubuntu and/or
              Debian package, and not having a lot of knowledge in the
              process I do what I can to help out. &nbsp;Currently there is
              some packaging material in the debian directory of the
              rabbitmq-c repo. &nbsp;It is somewhat out of date, though not
              as old as what you've linked.</div>
            <div><br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    I'll contact the maintainers and if they are not actively updating
    it, I might volunteer to refresh it<br>
    <br>
    <br>
    <blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>I personally would like to move the packaging details
              out of the repository to allow for different distributions
              to come up with their own independent packaging, as each
              distribution seems to do things in a slightly different
              and incompatible way. If you or someone you know is
              willing to step up and help maintain said package, I will
              do what I can to help out.</div>
            <div><br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Debian often maintains packaging artifacts in git repositories in
    alioth these days.&nbsp; When we import your release tarball into our git
    repository, we can easily tell it to ignore any debian/ directory
    you have.&nbsp; For older versions of Debian this was problematic
    though.&nbsp; My own suggestion is that you can include your own debian/
    artifacts in your repository if you wish to maintain them, but when
    you prepare a release tarball, exclude that subtree.<br>
    <br>
    <blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div><br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Has
              anybody discussed a package of the C++ client?<br>
            </blockquote>
            <div><br>
            </div>
            <div>I haven't heard of anyone doing so. &nbsp;One roadblock is
              that when SimpleAmqpClient was created it used a newer
              version of boost than came packaged with the LTS version
              of Ubuntu because it needed the boost.chrono library which
              was fairly new at the time. &nbsp;I'm not sure if the situation
              has changed since then.</div>
            <div><br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    I would be aiming to introduce something in Debian unstable to begin
    with.&nbsp; From there, it will propagate to other distributions over
    time and if those distributions operate commercially (like Ubuntu)
    and their clients really want it, they will hopefully collaborate
    with you to resolve the problem and contribute fixes for you.<br>
    <br>
    <blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>Again if you or someone you know is willing to step up
              and help maintain an SimpleAmqpClient package, I will do
              what I can to help out.</div>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
    I'd like to understand your feelings about the future of the API
    before committing to that - do you see something based on libuv
    happening in the near future, e.g. within 6 months?<br>
    <br>
    <br>
    <br>
  </body>
</html>