ipc pubsub 0.22
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 98
IPC::PubSub 0.22
IPC::PubSub is Perl module for Interprocess Publish/Subscribe channels. more>>
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.
<<lessSYNOPSIS
# 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.
Download (0.019MB)
Added: 2007-02-14 License: MIT/X Consortium License Price:
983 downloads
libpubsub 0.5.1
libpubsub provides everything to setup a simple publish/subscribe environment. more>>
libpubsub provides everything to setup a simple publish/subscribe environment.
If you are looking for a way to let several processes (not necessarily on the same host) exchange information with each other in a very easy (read at the moment: simple) way, libpubsub may interest you!
The main target is the usage in C++ applications. The package includes a tool to let even shell scripts get in touch with pubsub.
Enhancements:
- the client is able to read the message broker address from the environment variable PUBSUB_BROKER
- added conversion routines between binary data and hexadecimal strings
- added support for very large messages over TCP
- several minor bugfixes and cosmetic changes
- embedded users guide into doxygen generated docs
<<lessIf you are looking for a way to let several processes (not necessarily on the same host) exchange information with each other in a very easy (read at the moment: simple) way, libpubsub may interest you!
The main target is the usage in C++ applications. The package includes a tool to let even shell scripts get in touch with pubsub.
Enhancements:
- the client is able to read the message broker address from the environment variable PUBSUB_BROKER
- added conversion routines between binary data and hexadecimal strings
- added support for very large messages over TCP
- several minor bugfixes and cosmetic changes
- embedded users guide into doxygen generated docs
Download (0.60MB)
Added: 2006-01-18 License: Artistic License Price:
1374 downloads
Tina POS 0.0.22
Tina POS is a point of sales application designed for touch screens. more>>
Tina POS is a point of sales application designed for touch screens.
Tina POS supports ESC/POS ticket printers, customer displays, and barcode readers.
Its multi-user and has a great backoffice with a product entry form, reports, and charts.
<<lessTina POS supports ESC/POS ticket printers, customer displays, and barcode readers.
Its multi-user and has a great backoffice with a product entry form, reports, and charts.
Download (8.8MB)
Added: 2007-03-26 License: GPL (GNU General Public License) Price:
986 downloads
idl2pm 0.22
idl2pm is an IDL compiler to language Perl mapping. more>>
idl2pm is an IDL compiler to language Perl mapping.
SYNOPSIS
idl2pm [options] spec.idl
OPTIONS
All options are forwarded to C preprocessor, except -h -i -J -v -x.
With the GNU C Compatible Compiler Processor, useful options are :
-D name
-D name=definition
-I directory
-I-
-nostdinc
Specific options :
-h
Display help.
-i directory
Specify a path for import (only for version 3.0).
-J directory
Specify a path for Perl package importation (use package;).
-v
Display version.
-x
Enable export (only for version 3.0).
idl2pm parses the given input file (IDL) and generates :
a Perl spec.pm with marshal and demarshal methods
idl2pm is a Perl OO application what uses the visitor design pattern. The parser is generated by Parse::Yapp.
idl2pm needs a cpp executable.
CORBA Specifications, including IDL (Interface Definition Language) are available on http://www.omg.org/.
CORBA mapping for Perl [mapping.pod - Draft 1, 7 October 1999] comes with the package CORBA::MICO or CORBA::ORBit.
<<lessSYNOPSIS
idl2pm [options] spec.idl
OPTIONS
All options are forwarded to C preprocessor, except -h -i -J -v -x.
With the GNU C Compatible Compiler Processor, useful options are :
-D name
-D name=definition
-I directory
-I-
-nostdinc
Specific options :
-h
Display help.
-i directory
Specify a path for import (only for version 3.0).
-J directory
Specify a path for Perl package importation (use package;).
-v
Display version.
-x
Enable export (only for version 3.0).
idl2pm parses the given input file (IDL) and generates :
a Perl spec.pm with marshal and demarshal methods
idl2pm is a Perl OO application what uses the visitor design pattern. The parser is generated by Parse::Yapp.
idl2pm needs a cpp executable.
CORBA Specifications, including IDL (Interface Definition Language) are available on http://www.omg.org/.
CORBA mapping for Perl [mapping.pod - Draft 1, 7 October 1999] comes with the package CORBA::MICO or CORBA::ORBit.
Download (0.011MB)
Added: 2007-05-30 License: Perl Artistic License Price:
877 downloads
YaWiki PHP 0.22
YaWiki PHP is a powerful Wiki system for collaborative document generation. more>>
YaWiki PHP is a powerful Wiki system for collaborative document generation.
It supports both anonymous and authenticated users.
It uses an AreaMap page to generate a hierarchy of pages and navigational elements.
It supports page-level access control lists.
There is an optional comment system built-in, as well as RSS feeds for individual public pages.
Main features:
- Uses the Yawp foundation for PHP applications.
- Built from PEAR and PEAR-compliant objects such as...
- Savant
- Text_Diff
- Text_Wiki
- Database abstracted with DB_Table; works on most anything from MySQL to Oracle, and self-installs the database tables
- RSS feeds for page content changes (all pages in all areas, all pages in one area, or one page in one area)
- Has a special AreaMap page that lets you define a page hierarchy for navigation elements
- Supports separate name spaces (called "areas") in one installation
- Supports anonymous users and user authentication
- An access control list that lets the wiki administrator control who can edit and view individual pages in each area
- A comment system for users who are not allowed to edit pages directly
- Theme-aware (build your own look and feel) using the Savant template system
<<lessIt supports both anonymous and authenticated users.
It uses an AreaMap page to generate a hierarchy of pages and navigational elements.
It supports page-level access control lists.
There is an optional comment system built-in, as well as RSS feeds for individual public pages.
Main features:
- Uses the Yawp foundation for PHP applications.
- Built from PEAR and PEAR-compliant objects such as...
- Savant
- Text_Diff
- Text_Wiki
- Database abstracted with DB_Table; works on most anything from MySQL to Oracle, and self-installs the database tables
- RSS feeds for page content changes (all pages in all areas, all pages in one area, or one page in one area)
- Has a special AreaMap page that lets you define a page hierarchy for navigation elements
- Supports separate name spaces (called "areas") in one installation
- Supports anonymous users and user authentication
- An access control list that lets the wiki administrator control who can edit and view individual pages in each area
- A comment system for users who are not allowed to edit pages directly
- Theme-aware (build your own look and feel) using the Savant template system
Download (0.046MB)
Added: 2006-10-02 License: GPL (GNU General Public License) Price:
1117 downloads
Smack PubSub Extensions 1.2
Smack PubSub Extensions is a set of extensions to smack. more>>
Smack PubSub Extensions is a set of extensions to smack.
The extensions mainly include support for JEP-0060 aka PubSub but there are also a few utitlity classes. Please refer to the maven-generated documentation for further information.
<<lessThe extensions mainly include support for JEP-0060 aka PubSub but there are also a few utitlity classes. Please refer to the maven-generated documentation for further information.
Download (0.031MB)
Added: 2006-09-11 License: BSD License Price:
1143 downloads
st 0.22.1
st software is a simple XSL-stylesheet for converting some texts into PDF-files. more>>
st software is a simple XSL-stylesheet for converting some texts into PDF-files. It tooks a structured XML-file as input and produces with the help of a Formatting Objects Processor a PDF-file.
The st-stylesheet tries to support the most common used elements of modern text formatting.
Enhancements:
- This version implements some interactive elements for PDF files: Internet links can now be added to a document and PDF bookmarks are built when the tag "bookmarks" is set in the header of the document.
- Images can now have a width attribute: the image will be scaled proportional to that value.
<<lessThe st-stylesheet tries to support the most common used elements of modern text formatting.
Enhancements:
- This version implements some interactive elements for PDF files: Internet links can now be added to a document and PDF bookmarks are built when the tag "bookmarks" is set in the header of the document.
- Images can now have a width attribute: the image will be scaled proportional to that value.
Download (0.006MB)
Added: 2007-06-20 License: GPL (GNU General Public License) Price:
856 downloads
LibXDiff 0.22
The LibXDiff library implements basic and yet complete functionalities to create file differences/patches. more>>
LibXDiff implements basic and yet complete functionalities to create file differences/patches to both binary and text files.
The library uses memory files as file abstraction to achieve both performance and portability. For binary files, LibXDiff implements (with some modification) the algorithm described in File System Support for Delta Compression by Joshua P. MacDonald, while for text files it follows directives described in An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers.
Memory files used by the library are basically a collection of buffers that store the file content. There are two different requirements for memory files when passed to diff/patch functions. Text files for diff/patch functions require that a single line do not have to spawn across two different memory file blocks.
Binary diff/patch functions require memory files to be compact. A compact memory files is a file whose content is stored inside a single block. Functionalities inside the library are available to satisfy these rules. Using the XDL_MMF_ATOMIC memory file flag it is possible to make writes to not split the written record across different blocks, while the functions xdl_mmfile_iscompact() , xdl_mmfile_compact() and xdl_mmfile_writeallocate() are usefull to test if the file is compact and to create a compacted version of the file itself.
The text file differential output uses the raw unified output format, by omitting the file header since the result is always relative to a single compare operation (between two files). The output format of the binary patch file is proprietary (and binary) and it is basically a collection of copy and insert commands, like described inside the MacDonald paper.
The library is compatible with almost every Unix implementation (configure script) and it is also compatible with Windows through custom (nmake) make files. Examples are available inside the test subdirectory of the distribution tarball that show how to use the library.
Also, inside the same subdirectory, a regression test in available that tests the library with random data by requiring a diff followed by a patch and comparing results. Regression tests ran successfully for days on my Linux, Solaris, FreeBSD and Windows boxes, and this makes me believe that the library itself is completely ready for production (despite the version number).
Enhancements:
- A bug in indexing on 64-bit machines was fixed.
<<lessThe library uses memory files as file abstraction to achieve both performance and portability. For binary files, LibXDiff implements (with some modification) the algorithm described in File System Support for Delta Compression by Joshua P. MacDonald, while for text files it follows directives described in An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers.
Memory files used by the library are basically a collection of buffers that store the file content. There are two different requirements for memory files when passed to diff/patch functions. Text files for diff/patch functions require that a single line do not have to spawn across two different memory file blocks.
Binary diff/patch functions require memory files to be compact. A compact memory files is a file whose content is stored inside a single block. Functionalities inside the library are available to satisfy these rules. Using the XDL_MMF_ATOMIC memory file flag it is possible to make writes to not split the written record across different blocks, while the functions xdl_mmfile_iscompact() , xdl_mmfile_compact() and xdl_mmfile_writeallocate() are usefull to test if the file is compact and to create a compacted version of the file itself.
The text file differential output uses the raw unified output format, by omitting the file header since the result is always relative to a single compare operation (between two files). The output format of the binary patch file is proprietary (and binary) and it is basically a collection of copy and insert commands, like described inside the MacDonald paper.
The library is compatible with almost every Unix implementation (configure script) and it is also compatible with Windows through custom (nmake) make files. Examples are available inside the test subdirectory of the distribution tarball that show how to use the library.
Also, inside the same subdirectory, a regression test in available that tests the library with random data by requiring a diff followed by a patch and comparing results. Regression tests ran successfully for days on my Linux, Solaris, FreeBSD and Windows boxes, and this makes me believe that the library itself is completely ready for production (despite the version number).
Enhancements:
- A bug in indexing on 64-bit machines was fixed.
Download (0.35MB)
Added: 2006-10-30 License: GPL (GNU General Public License) Price:
1090 downloads
gIpc 0.79
gIpc is a tool to get all the IPC info. more>>
gIpc is a tool to get all the IPC info. Just like a GTK frontend for IPCS and IPCRM commands which are already there in existing Linux systems.
gIpc will collect the snapshot for the IPC info (i.e, Shared memory,semaphore and messageQ information).
You can also refresh the IPC info using IPC Refresh from the menu OR using F5″ key.
If you want to remove a perticular IPC entity, just select the row and press DELETE you will be asked for the confirmation. If you click on yes then that IPC entity will be removed. (Ofcourse, you should be having appropriate permissions to do this !)
<<lessgIpc will collect the snapshot for the IPC info (i.e, Shared memory,semaphore and messageQ information).
You can also refresh the IPC info using IPC Refresh from the menu OR using F5″ key.
If you want to remove a perticular IPC entity, just select the row and press DELETE you will be asked for the confirmation. If you click on yes then that IPC entity will be removed. (Ofcourse, you should be having appropriate permissions to do this !)
Download (0.080MB)
Added: 2005-08-03 License: GPL (GNU General Public License) Price:
1542 downloads
QVocab 0.22.4
QVocab project is a program to learn the vocabulary of a foreign language. more>>
QVocab project is a program to learn the vocabulary of a foreign language.
You add your words into a simple database file, the program asks you the words and you try to answer with the corresponding word of the other language.
A known word will move up one level (there are five of them) and if you didnt know its meaning, it is moved to the first level again.
Main features:
- easy-to-use GUI based on the QT widgetset
- distributed under the terms of the GPL
- the words are automatically put into five folders - if you knew a word, it is moved to the next folder; if you didnt, it is moved back to the first one
- you can enter several meanings of a word (separated by commas) and tell qvocab to give and / or accept a single one of them (if you enter more than one, they are all checked regardless of their order)
- there is a choice between a written test and an ``oral test in which you indicate yourself whether or not you knew the answer
- you can tell qvocab to ask a word multiple times if you did not know it
- qvocab can help you with the answers in various ways
- you can select words that have not been asked since a given date
- a lot of options
- for each entry, an additional remark can be entered
- you can have various vocabulary books to maintain order
- moving a word into a different vocabulary book is possible
- you can search for entries and edit them
- converter programs available to export your data into a text file or to import existing data
- for storing, you can use either regular files or a MySQL database server
<<lessYou add your words into a simple database file, the program asks you the words and you try to answer with the corresponding word of the other language.
A known word will move up one level (there are five of them) and if you didnt know its meaning, it is moved to the first level again.
Main features:
- easy-to-use GUI based on the QT widgetset
- distributed under the terms of the GPL
- the words are automatically put into five folders - if you knew a word, it is moved to the next folder; if you didnt, it is moved back to the first one
- you can enter several meanings of a word (separated by commas) and tell qvocab to give and / or accept a single one of them (if you enter more than one, they are all checked regardless of their order)
- there is a choice between a written test and an ``oral test in which you indicate yourself whether or not you knew the answer
- you can tell qvocab to ask a word multiple times if you did not know it
- qvocab can help you with the answers in various ways
- you can select words that have not been asked since a given date
- a lot of options
- for each entry, an additional remark can be entered
- you can have various vocabulary books to maintain order
- moving a word into a different vocabulary book is possible
- you can search for entries and edit them
- converter programs available to export your data into a text file or to import existing data
- for storing, you can use either regular files or a MySQL database server
Download (0.18MB)
Added: 2006-10-21 License: GPL (GNU General Public License) Price:
1098 downloads
IPC::Run 0.80
IPC::Run is a Perl module for system() and background procs w/ piping, redirs, ptys (Unix, Win32). more>> <<less
Download (0.087MB)
Added: 2006-09-25 License: Perl Artistic License Price:
1127 downloads
phpBB 2.0.22 / 3.0 RC4
phpBB is a UBB-style dissussion board written in PHP backended by a MySQL database. more>>
phpBB project is a fully scalable, high powered and highly customizable Open Source bulletin board package. phpBB has a user-friendly interface, simple and straightforward administration panel, and helpful FAQ.
Based on the powerful PHP server language and your choice of MySQL, MS-SQL, PostgreSQL or Access/ODBC database servers, phpBB is the ideal free community solution for all web sites.
Main features:
- Supports popular database servers
- Unlimited forums and posts
- Multiple language interface
- Private or public forums
- Powerful search utility
- Private messaging system
- Complete customisation with templates
- See the complete feature list...
<<lessBased on the powerful PHP server language and your choice of MySQL, MS-SQL, PostgreSQL or Access/ODBC database servers, phpBB is the ideal free community solution for all web sites.
Main features:
- Supports popular database servers
- Unlimited forums and posts
- Multiple language interface
- Private or public forums
- Powerful search utility
- Private messaging system
- Complete customisation with templates
- See the complete feature list...
Download (0.50MB)
Added: 2007-07-29 License: GPL (GNU General Public License) Price:
841 downloads
IPC::DirQueue 0.07
IPC::DirQueue is a disk-based many-to-many task queue. more>>
IPC::DirQueue is a disk-based many-to-many task queue.
SYNOPSIS
my $dq = IPC::DirQueue->new({ dir => "/path/to/queue" });
$dq->enqueue_file("filename");
my $dq = IPC::DirQueue->new({ dir => "/path/to/queue" });
my $job = $dq->pickup_queued_job();
if (!$job) { print "no jobs leftn"; exit; }
# ...do something interesting with $job->get_data_path() ...
$job->finish();
This module implements a FIFO queueing infrastructure, using a directory as the communications and storage media. No daemon process is required to manage the queue; all communication takes place via the filesystem.
A common UNIX system design pattern is to use a tool like lpr as a task queueing system; for example, http://patrick.wagstrom.net/old/weblog/archives/000128.html describes the use of lpr as an MP3 jukebox.
However, lpr isnt as efficient as it could be. When used in this way, you have to restart each task processor for every new task. If you have a lot of startup overhead, this can be very inefficient. With IPC::DirQueue, a processing server can run persistently and cache data needed across multiple tasks efficiently; it will not be restarted unless you restart it.
Multiple enqueueing and dequeueing processes on multiple hosts (NFS-safe locking is used) can run simultaneously, and safely, on the same queue.
Since multiple dequeuers can run simultaneously, this provides a good way to process a variable level of incoming tasks using a pre-defined number of worker processes.
If you need more CPU power working on a queue, you can simply start another dequeuer to help out. If you need less, kill off a few dequeuers.
If you need to take down the server to perform some maintainance or upgrades, just kill the dequeuer processes, perform the work, and start up new ones. Since theres no socket or similar point of failure aside from the directory itself, the queue will just quietly fill with waiting jobs until the new dequeuer is ready.
Arbitrary name = value string-pair metadata can be transferred alongside data files. In fact, in some cases, you may find it easier to send unused and empty data files, and just use the metadata fields to transfer the details of what will be worked on.
<<lessSYNOPSIS
my $dq = IPC::DirQueue->new({ dir => "/path/to/queue" });
$dq->enqueue_file("filename");
my $dq = IPC::DirQueue->new({ dir => "/path/to/queue" });
my $job = $dq->pickup_queued_job();
if (!$job) { print "no jobs leftn"; exit; }
# ...do something interesting with $job->get_data_path() ...
$job->finish();
This module implements a FIFO queueing infrastructure, using a directory as the communications and storage media. No daemon process is required to manage the queue; all communication takes place via the filesystem.
A common UNIX system design pattern is to use a tool like lpr as a task queueing system; for example, http://patrick.wagstrom.net/old/weblog/archives/000128.html describes the use of lpr as an MP3 jukebox.
However, lpr isnt as efficient as it could be. When used in this way, you have to restart each task processor for every new task. If you have a lot of startup overhead, this can be very inefficient. With IPC::DirQueue, a processing server can run persistently and cache data needed across multiple tasks efficiently; it will not be restarted unless you restart it.
Multiple enqueueing and dequeueing processes on multiple hosts (NFS-safe locking is used) can run simultaneously, and safely, on the same queue.
Since multiple dequeuers can run simultaneously, this provides a good way to process a variable level of incoming tasks using a pre-defined number of worker processes.
If you need more CPU power working on a queue, you can simply start another dequeuer to help out. If you need less, kill off a few dequeuers.
If you need to take down the server to perform some maintainance or upgrades, just kill the dequeuer processes, perform the work, and start up new ones. Since theres no socket or similar point of failure aside from the directory itself, the queue will just quietly fill with waiting jobs until the new dequeuer is ready.
Arbitrary name = value string-pair metadata can be transferred alongside data files. In fact, in some cases, you may find it easier to send unused and empty data files, and just use the metadata fields to transfer the details of what will be worked on.
Download (0.025MB)
Added: 2006-11-15 License: Perl Artistic License Price:
1074 downloads
Download (1.5MB)
Added: 2007-06-18 License: GPL (GNU General Public License) Price:
5120 downloads
libshbuf 0.0.3
libshbuf introduces a new IPC concept: the shared buffer, a more flexible and faster alternative for standard Unix FIFOs. more>>
libshbuf introduces a new IPC concept: the "shared buffer", a more flexible and faster alternative for standard Unix FIFOs.
Take some shared memory, flavour it with semaphore-based locking and change notifications, and refine it with an easy-to-use API and you get libshbufs "shared buffers".
Main features:
- Normally better latency and throughput
- Full access to the buffer at any time
- Connecting processes need not to be children of each other
- Arbitrary buffer lengths
- Memory mapped
- Backlog
The implementation is based on SysV shared memory, semaphores and message queues. It makes use of POSIX pthreads.
Both an easy understandable C library and a basic Python module are provided.
Version 0.0.3 is stable and feature complete.
The concept of "shared buffers" is explicitly designed for high thoughput, low latency streaming of data (e.g. audio) between two processes, where a Unix FIFO is not enough. Thus it is optimized for exactly two connecting peers, a minimum of locking and minimum of copying of memory.
For each shared buffer two shared memory blocks, a semaphore and a messages queue are created. The first shared memory block (aka "control memory block") contains some watermark information about the shared buffer. The second contains the buffer itself.
The semaphore is used for locking access to the control block. The message queue is used for signalling the other side on changes of the buffer.
A shared buffer provider is a process which creates it with with shbuf_create(). A new key for it will be registered (the key is an integer value, the key_t of the control shm). A shared buffer client is the other side of the buffer: it opens an existing buffer with shbuf_open(key).
Only one client and one provider may be connected at once. When using the notifying feature of libshbuf a background thread is started, which listens on the message queue for certain messages. It forwards these messages to a classic FIFO. The main program may listen on this FIFO with a standard select() or poll().
<<lessTake some shared memory, flavour it with semaphore-based locking and change notifications, and refine it with an easy-to-use API and you get libshbufs "shared buffers".
Main features:
- Normally better latency and throughput
- Full access to the buffer at any time
- Connecting processes need not to be children of each other
- Arbitrary buffer lengths
- Memory mapped
- Backlog
The implementation is based on SysV shared memory, semaphores and message queues. It makes use of POSIX pthreads.
Both an easy understandable C library and a basic Python module are provided.
Version 0.0.3 is stable and feature complete.
The concept of "shared buffers" is explicitly designed for high thoughput, low latency streaming of data (e.g. audio) between two processes, where a Unix FIFO is not enough. Thus it is optimized for exactly two connecting peers, a minimum of locking and minimum of copying of memory.
For each shared buffer two shared memory blocks, a semaphore and a messages queue are created. The first shared memory block (aka "control memory block") contains some watermark information about the shared buffer. The second contains the buffer itself.
The semaphore is used for locking access to the control block. The message queue is used for signalling the other side on changes of the buffer.
A shared buffer provider is a process which creates it with with shbuf_create(). A new key for it will be registered (the key is an integer value, the key_t of the control shm). A shared buffer client is the other side of the buffer: it opens an existing buffer with shbuf_open(key).
Only one client and one provider may be connected at once. When using the notifying feature of libshbuf a background thread is started, which listens on the message queue for certain messages. It forwards these messages to a classic FIFO. The main program may listen on this FIFO with a standard select() or poll().
Download (0.26MB)
Added: 2005-12-09 License: LGPL (GNU Lesser General Public License) Price:
1414 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above ipc pubsub 0.22 search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed