The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

The following documentation is automatically generated. Please do not edit this file, but rather the original, inline with Myriad::Transport::Memory at lib/Myriad/Transport/Memory.pm (on the system that originally ran this). If you do edit this file, and don't want your changes to be removed, make sure you change the first line.

NAME

Myriad::Transport::Memory - In-Memory data layer that mimics Redis behaviour..

SYNOPSIS

  my $transport = Myriad::Transport::Memory->new();

  $transport->publish('channel_name', 'event...');

DESCRIPTION

Exceptions

StreamNotFound

Thrown when the operation requires the stream to be created beforehand but the stream is not currently available.

GroupExists

Thrown when the user is trying to re-create a group but the operation doesn't allow that.

GroupNotFound

Thrown when the operation requires the group to be exist but it's not.

create_stream

Creats an empty stream.

  • stream_name - The name of the stream.

add_to_stream

Adds a new item to a stream, if the stream doesn't exist it'll be created.

  • stream_name - The name of the stream.

  • data - A perl hash that contains the user data.

create_consumer_group

Creates a consumer group for a given stream.

  • stream_name - The name of the stream.

  • group_name - The name of the group that is going to be created.

  • offset - If set the group will see this value as the first message in the stream.

  • make_stream - If set and the stream doesn't exist it'll be created.

read_from_stream

Read elements from the stream.

This operation is stateless you can re-read the same message as long as it exists in the stream.

  • stream_name - The name of the stream.

  • offset - The number of messages to skip.

  • count - The limit of messages to be received.

read_from_stream_by_consumer

Read elements from the stream for the given group.

This operation is stateful if the message read by a consumer "A" it won't be available for consumer "B" also consumer "A" won't be able to re-read the message using this call.

This is not exaclty how Redis works but it covers our need at the moment.

  • stream_name - The name of the stream should exist before calling this sub.

  • group_name - The name of the group should exist before callingg this sub.

  • consumer_name - The current consumer name, will be used to keep tracking of pendign messages.

  • offset - If given the consumer can skip the given number of messages.

  • count - The limit of messages to be received.

ack_message

Remove a message from the pending list.

It's safe to call this method multiple time even if the message doesn't exist.

  • stream_name - The name of the stream.

  • group_name - The name of group that has this message as pending.

  • message_id - The Id of the message that we want to acknowledge.

claim_message

Re-assign a message to another consumer.

It'll return the full message.

  • stream_name - The name of the stream.

  • group_name - The name of the group that has the message as pending.

  • consumer_name - The name of the new consumer.

  • message_id - The id of the message to be claimed.

publish

Publish a message, if no consumer exists the message will be lost.

  • channel_name - The name of the channel that the message will be published to.

  • message - A scalar that is going to be published.

subscribe

Subscribe to a channel by optaining a Ryu::Source that'll receive events.

  • channel_name - The name of the channel.

INHERITED METHODS

IO::Async::Notifier

add_child, adopt_future, adopted_futures, can_event, children, configure, configure_unknown, debug_printf, get_loop, invoke_error, invoke_event, loop, make_event_cb, maybe_invoke_event, maybe_make_event_cb, notifier_name, parent, remove_child, remove_from_parent

Object::Pad::UNIVERSAL

BUILDARGS