NAME
IPC::Manager::Client::SharedMem - SysV shared memory as a message store
DESCRIPTION
This protocol stores all client state, messages, and statistics in a SysV shared memory segment. Access is serialised with a SysV semaphore. Every mutation acquires the semaphore, reads the segment, modifies the in-memory structure, writes it back, and releases the semaphore.
The data is stored as JSON prefixed with a 4-byte network-order length. When the data outgrows the current segment, a new larger segment is allocated and the old one is removed.
This protocol requires IPC::SysV version 2.09 or later (a core module).
SYNOPSIS
use IPC::Manager qw/ipcm_spawn ipcm_connect/;
my $spawn = ipcm_spawn(protocol => 'SharedMem');
my $con1 = $spawn->connect('con1');
my $con2 = ipcm_connect(con2 => $spawn->info);
$con1->send_message(con2 => {hello => 'world'});
my @messages = $con2->get_messages;
ROUTE FORMAT
The route is a colon-separated string: shmid:semid, where shmid
and semid are SysV IPC identifiers (integers). The segment capacity
is stored in the segment header itself, so it does not need to appear
in the route.
METHODS
See IPC::Manager::Client for inherited methods.
SOURCE
The source code repository for IPC::Manager::Client::SharedMem can be found at https://github.com/exodist/IPC-Manager-Client-SharedMem.
MAINTAINERS
- Chad Granum exodist@cpan.org
AUTHORS
- Chad Granum exodist@cpan.org
COPYRIGHT
Copyright Chad Granum exodist7@gmail.com.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.