Softpedia
 


LINUX CATEGORIES:



GLOBAL PAGES >>
NEWS ARCHIVE >>
SOFTPEDIA REVIEWS >>
MEET THE EDITORS >>
WEEK'S BEST
  • Linux Kernel 3.9.2 / 3....
  • LibreOffice 3.6.6 / 4.0.3
  • MPlayer 1.1.1
  • systemd 204
  • Arch Linux 2013.05.01
  • Blender 2.67
  • KDE Software Compilatio...
  • CrunchBang Linux Stable...
  • Elementary OS 0.1 / 0.2...
  • SystemRescueCd 3.6.0
  • Home > Linux > Programming > Libraries

    IPC::PubSub 0.22

    Download button

    No screenshots available
    Downloads: 398  View global page NEW!  Tell us about an update
    User Rating:
    Rated by:
    NOT RATED
    0 user(s)
    Developer:

    License / Price:

    Last Updated:

    Category:
    Audrey Tang | More programs
    MIT/X Consortium Lic... / FREE
    February 14th, 2007, 23:05 GMT
    ROOT / Programming / Libraries

     Read user reviews (0)  Refer to a friend  Subscribe

    IPC::PubSub description

    IPC::PubSub is Perl module for Interprocess Publish/Subscribe channels.

    IPC::PubSub is Perl module for Interprocess Publish/Subscribe channels.

    SYNOPSIS

    # A new message bus with the DBM::Deep backend
    # (Other possible backends include Memcached and PlainHash)
    my $bus = IPC::PubSub->new(DBM_Deep => '/tmp/pubsub.db');

    # A channel is any arbitrary string
    my $channel = '#perl6';

    # Register a new publisher (you can publish to multiple channels)
    my $pub = $bus->new_publisher("#perl6", "#moose");

    # Publish a message (may be a complex object) to those channels
    $pub->msg("This is a message");

    # Register a new subscriber (you can subscribe to multiple channels)
    my $sub = $bus->new_subscriber("#moose");

    # Publish an object to channels
    $pub->msg("This is another message");

    # Set all subsequent messages from this publisher to expire in 30 seconds
    $pub->expiry(30);
    $pub->msg("This message will go away in 30 seconds");

    # Simple get: Returns the messages sent since the previous get,
    # but only for the first channel.
    my @msgs = $sub->get;

    # Simple get, with an explicit channel key (must be among the ones
    # it initially subscribed to)
    my @moose_msgs = $sub->get("#moose");

    # Complex get: Returns a hash reference from channels to array
    # references of [timestamp, message].
    my $hash_ref = $sub->get_all;

    # Changing the list of channels we subscribe to
    $sub->subscribe('some-other-channel');
    $sub->unsubscribe('some-other-channel');

    # Changing the list of channels we publish to
    $pub->publish('some-other-channel');
    $pub->unpublish('some-other-channel');

    # Listing and checking if we are in a channel
    my @sub_channels = $sub->channels;
    my @pub_channels = $pub->channels;
    print "Sub is in #moose" if $sub->channels->{'#moose'};
    print "Pub is in #moose" if $pub->channels->{'#moose'};

    # Raw cache manipulation APIs (not advised; use ->modify instead)
    $bus->lock('channel');
    $bus->unlock('channel');
    my @timed_msgs = $bus->fetch('key1', 'key2', 'key3');
    $bus->store('key', 'value', time, 30);

    # Atomic updating of cache content; $_ is stored back on the
    # end of the callback.
    my $rv = $bus->modify('key' => sub { delete $_->{foo} });

    # Shorthand for $bus->modify('key' => sub { $_ = 'val' });
    $bus->modify('key' => 'val');

    # Shorthand for $bus->modify('key' => sub { $_ });
    $bus->modify('key');

    This module provides a simple API for publishing messages to channels and for subscribing to them.

    When a message is published on a channel, all subscribers currently in that channel will get it on their next get or get_all call.

    Currently, it offers three backends: DBM_Deep for on-disk storage, Memcached for possibly multi-host storage, and PlainHash for single-process storage.

    Please see the tests in t/ for this distribution, as well as "SYNOPSIS" above, for some usage examples; detailed documentation is not yet available.

    Product's homepage

    Requirements:

    · Perl

      


    TAGS:

    Interprocess Publish channels | Interprocess Subscribe channels | Perl module | IPC::PubSub | Interprocess | Publish

    Go to top

    WindowsGamesDriversMacLinuxScriptsMobileHandheldNews

    SUBMIT PROGRAM   |   ADVERTISE   |   GET HELP   |   SEND US FEEDBACK   |   RSS FEEDS   |   UPDATE YOUR SOFTWARE   |   ROMANIAN FORUM