NAME
    AnyEvent::MQTT - AnyEvent module for an MQTT client

VERSION
    version 1.142230

SYNOPSIS
      use AnyEvent::MQTT;
      my $mqtt = AnyEvent::MQTT->new;
      my $cv = $mqtt->subscribe(topic => '/topic',
                                callback => sub {
                                     my ($topic, $message) = @_;
                                     print $topic, ' ', $message, "\n"
                                   });
      my $qos = $cv->recv; # subscribed, negotiated QoS == $qos

      # publish a simple message
      $cv = $mqtt->publish(message => 'simple message',
                              topic => '/topic');
      $cv->recv; # sent

      # publish line-by-line from file handle
      $cv =  $mqtt->publish(handle => \*STDIN,
                            topic => '/topic');
      $cv->recv; # sent

      # publish from AnyEvent::Handle
      $cv = $mqtt->publish(handle => AnyEvent::Handle->new(my %handle_args),
                           topic => '/topic');
      $cv->recv; # sent

DESCRIPTION
    AnyEvent module for MQTT client.

    IMPORTANT: This is an early release and the API is still subject to
    change.

METHODS
  "new(%params)"
    Constructs a new "AnyEvent::MQTT" object. The supported parameters are:

    "host"
        The server host. Defaults to 127.0.0.1.

    "port"
        The server port. Defaults to 1883.

    "timeout"
        The timeout for responses from the server.

    "keep_alive_timer"
        The keep alive timer.

    "will_topic"
        Set topic for will message. Default is undef which means no will
        message will be configured.

    "will_qos"
        Set QoS for will message. Default is 'at-most-once'.

    "will_retain"
        Set retain flag for will message. Default is 0.

    "will_message"
        Set message for will message. Default is the empty message.

    "clean_session"
        Set clean session flag for connect message. Default is 1 but it is
        set to 0 when reconnecting after an error.

    "client_id"
        Sets the client id for the client overriding the default which is
        "Net::MQTT::Message[NNNNN]" where NNNNN is the process id.

    "message_log_callback"
        Defines a callback to call on every message.

  "cleanup()"
    This method attempts to destroy any resources in the event of a
    disconnection or fatal error.

  "publish( %parameters )"
    This method is used to publish to a given topic. It returns an AnyEvent
    condvar which is notified when the publish is complete (written to the
    kernel or ack'd depending on the QoS level). The parameter hash must
    included at least a topic value and one of:

    message
          with a string value which is published to the topic,

    handle
         the value of which must either be an L<AnyEvent::Handle> or will be
         passed to an L<AnyEvent::Handle> constructor as the C<fh> argument.
         The L<push_read()> method is called on the L<AnyEvent::Handle> with a
         callback that will publish each chunk read to the topic.

    The parameter hash may also keys for:

    "qos"
          to set the QoS level for published messages (default
          MQTT_QOS_AT_MOST_ONCE),

    "handle_args"
          a reference to a list to pass as arguments to the
          L<AnyEvent::Handle> constructor in the final case above (defaults to
          an empty list reference), or

    "push_read_args"
          a reference to a list to pass as the arguments to the
          L<AnyEvent::Handle#push_read> method (defaults to ['line'] to read,
          and subsequently publish, a line at a time.

  "next_message_id()"
    Returns a 16-bit number to use as the next message id in a message
    requiring an acknowledgement.

  "subscribe( %parameters )"
    This method subscribes to the given topic. The parameter hash may
    contain values for the following keys:

    topic
          for the topic to subscribe to (this is required),

    callback
          for the callback to call with messages (this is required),

    qos
          QoS level to use (default is MQTT_QOS_AT_MOST_ONCE),

    cv
          L<AnyEvent> condvar to use to signal the subscription is complete.
          The received value will be the negotiated QoS level.

    This method returns the value of the cv parameter if it was supplied or
    an AnyEvent condvar created for this purpose.

  "unsubscribe( %parameters )"
    This method unsubscribes to the given topic. The parameter hash may
    contain values for the following keys:

    topic
          for the topic to unsubscribe from (this is required),

    callback
          for the callback to call with messages (this is optional and currently
          not supported - all callbacks are unsubscribed),

    cv
          L<AnyEvent> condvar to use to signal the unsubscription is complete.

    This method returns the value of the cv parameter if it was supplied or
    an AnyEvent condvar created for this purpose.

  "connect( [ $msg ] )"
    This method starts the connection to the server. It will be called
    lazily when required publish or subscribe so generally is should not be
    necessary to call it directly.

  "anyevent_read_type()"
    This method is used to register an AnyEvent::Handle read type method to
    read MQTT messages.

DISCLAIMER
    This is not official IBM code. I work for IBM but I'm writing this in my
    spare time (with permission) for fun.

AUTHOR
    Mark Hindess <soft-cpan@temporalanomaly.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 by Mark Hindess.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

