ipc pubsub
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 51
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
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
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
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
IPC::LDT 2.03
IPC::LDT is a Perl module that implements a length based IPC protocol. more>>
IPC::LDT is a Perl module that implements a length based IPC protocol.
Interprocess communication often uses line (or record) oriented protocols. FTP, for example, usually is such a protocol: a client sends a command (e.g. "LS") which is completed by a carriage return. This carriage return is included in the command which is sent to the server process (FTP deamon) which could implement its reading in a way like this:
while ($cmd= )
{
chomp($cmd);
performCommand($cmd);
}
Well, such record oriented, blocked protocols are very useful and simply to implement, but sometimes there is a need to transfer more complex data which has no trailing carriage return, or data which may include more carriage returns inside the message which should not cause the reciepient to think the message is already complete while it is really not. Even if you choose to replace carriage returns by some obscure delimiters, the same could happen again until you switch to a protocol which does not flag the end of a message by special strings.
On the other hand, if there is no final carriage return (or whatever flag string) within a message, the end of the message has to be marked another way to avoid blocking by endless waiting for more message parts. A simple way to provide this is to precede a message by a prefix which includes the length of the remaining (real) message. A reciepient reads this prefix, decodes the length information and continues reading until the announced number of bytes came in.
IPC::LDT provides a class to build objects which transparently perform such "length driven transfer". A user sends and receives messages by simple method calls, while the LDT objects perform the complete translation into and from LDT messages (with prefix) and all the necessary low level IO handling to transfer stream messages on non blocked handles.
IPC::LDT objects can be configured to transfer simle string messages as well as complex data structures. Additionally, they allow to delay the transfer of certain messages in a user defined way.
<<lessInterprocess communication often uses line (or record) oriented protocols. FTP, for example, usually is such a protocol: a client sends a command (e.g. "LS") which is completed by a carriage return. This carriage return is included in the command which is sent to the server process (FTP deamon) which could implement its reading in a way like this:
while ($cmd= )
{
chomp($cmd);
performCommand($cmd);
}
Well, such record oriented, blocked protocols are very useful and simply to implement, but sometimes there is a need to transfer more complex data which has no trailing carriage return, or data which may include more carriage returns inside the message which should not cause the reciepient to think the message is already complete while it is really not. Even if you choose to replace carriage returns by some obscure delimiters, the same could happen again until you switch to a protocol which does not flag the end of a message by special strings.
On the other hand, if there is no final carriage return (or whatever flag string) within a message, the end of the message has to be marked another way to avoid blocking by endless waiting for more message parts. A simple way to provide this is to precede a message by a prefix which includes the length of the remaining (real) message. A reciepient reads this prefix, decodes the length information and continues reading until the announced number of bytes came in.
IPC::LDT provides a class to build objects which transparently perform such "length driven transfer". A user sends and receives messages by simple method calls, while the LDT objects perform the complete translation into and from LDT messages (with prefix) and all the necessary low level IO handling to transfer stream messages on non blocked handles.
IPC::LDT objects can be configured to transfer simle string messages as well as complex data structures. Additionally, they allow to delay the transfer of certain messages in a user defined way.
Download (0.013MB)
Added: 2007-06-18 License: Perl Artistic License Price:
860 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
IPC::Run::Simple 1.3
IPC::Run::Simple is a simple system() wrapper. more>>
IPC::Run::Simple is a simple system() wrapper.
SYNOPSIS
# Run a command and check whether it failed
use IPC::Run::Simple;
run("echo Hello, O Cruel World")
or die "Command failed";
# Describe the failure
use IPC::Run::Simple qw($ERR);
run("echo Hello, O Cruel World")
or die "Command failed: $ERR";
# Use the :all tag instead of explicitly requesting $ERR
use IPC::Run::Simple qw(:all);
run("echo Hello, O Cruel World")
or die "Command failed: $ERR";
# Die with error message if command does not return 0
use IPC::Run::Simple qw(:Fatal);
run("echo Hello, O Cruel World");
# Allow other exit values without dying
use IPC::Run::Simple qw(:Fatal);
run(command => [ "echo", "Hello, O Cruel World!" ],
allowed => [ 1, 2, 5 ]);
This module is intended to be a very simple, straightforward wrapper around the system() call to make it behave more like other builtins.
run() will return a true value if the command was executed and return a successful status code, and false otherwise. The reason for the failure will be stored in the $IPC::Run::Simple::ERR variable (which is just $ERR if you import either $ERR or :all). The description of the reason was pulled almost directly from the system() documentation.
Optionally, you can import the :Fatal tag, which will cause run() to die() with an appropriate message if the command fails for any reason.
If you wish to allow nonzero exit values but still want to trap unexpected errors, you may use an expanded call syntax. Call run() with a set of key=>value pairs. The two implemented keys are command (an array reference containing the command to run) and allowed (an array reference of exit values that are allowed without causing run() to return false or throw an exception.)
<<lessSYNOPSIS
# Run a command and check whether it failed
use IPC::Run::Simple;
run("echo Hello, O Cruel World")
or die "Command failed";
# Describe the failure
use IPC::Run::Simple qw($ERR);
run("echo Hello, O Cruel World")
or die "Command failed: $ERR";
# Use the :all tag instead of explicitly requesting $ERR
use IPC::Run::Simple qw(:all);
run("echo Hello, O Cruel World")
or die "Command failed: $ERR";
# Die with error message if command does not return 0
use IPC::Run::Simple qw(:Fatal);
run("echo Hello, O Cruel World");
# Allow other exit values without dying
use IPC::Run::Simple qw(:Fatal);
run(command => [ "echo", "Hello, O Cruel World!" ],
allowed => [ 1, 2, 5 ]);
This module is intended to be a very simple, straightforward wrapper around the system() call to make it behave more like other builtins.
run() will return a true value if the command was executed and return a successful status code, and false otherwise. The reason for the failure will be stored in the $IPC::Run::Simple::ERR variable (which is just $ERR if you import either $ERR or :all). The description of the reason was pulled almost directly from the system() documentation.
Optionally, you can import the :Fatal tag, which will cause run() to die() with an appropriate message if the command fails for any reason.
If you wish to allow nonzero exit values but still want to trap unexpected errors, you may use an expanded call syntax. Call run() with a set of key=>value pairs. The two implemented keys are command (an array reference containing the command to run) and allowed (an array reference of exit values that are allowed without causing run() to return false or throw an exception.)
Download (0.005MB)
Added: 2007-08-15 License: Perl Artistic License Price:
802 downloads
PubSubHubbub_Publisher 1.0
A simple, open, web-hook-based pubsub protocol & open source reference implementation more>>
PubSubHubbub_Publisher 1.0 is yet another excellent utility for everyone. It is actually a simple, open, server-to-server web-hook-based pubsub (publish/subscribe) protocol as a simple extension to Atom.
Parties (servers) speaking the PubSubHubbub protocol can get near-instant notifications (via webhook callbacks) when a topic (Atom URL) they're interested in is updated.
This tool works as follow:
- An Atom URL (a "topic") declares its Hub server(s) in its Atom XML file, via . The hub(s) can be run by the publisher of the Atom, or can be a community hub that anybody can use.
- A subscriber (a server that's interested in a topic), initially fetches the Atom URL as normal. If the Atom file declares its hubs, the subscriber can then avoid lame, repeated polling of the URL and can instead register with the feeds hub(s) and subscribe to updates.
- The subscriber subscribes to the Topic URL from the Topic URLs declared Hub(s).
- When the Publisher next updates the Topic URL, the publisher software pings the Hub(s) saying that there's an update.
- The hub efficiently fetches the published feed and multicasts the new/changed content out to all registered subscribers.
- The protocol is decentralized and free. No company is at the center of this controlling it. Anybody can run a hub, or anybody can ping (publish) or subscribe using open hubs.
- To bootstrap this, the publisher has provided an open source reference implementation of the hub (the hard part of the protocol) that runs on Google App Engine, and is open for anybody to use.
Requirements:
- Python
Added: 2009-05-18 License: The Apache License 2.0 Price: FREE
13 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
Quanta Plus 3.5.7
Quanta is a web editor for KDE supporting HTML and more. more>>
Quanta Plus is a highly stable and feature rich web development environment. Quantas vision has always been to start with the best architectural foundations, design for efficient and natural use and enable maximal user extensibility.
We recognize that we dont have the resources to do everything we would like to so our target is to make it easy for you to help make this the best community based desktop application anywhere. Pretty much everything in Quanta is designed so you can extend it.
Even the way it handles XML DTDs is based on XML files you can edit. You can even import DTDs, write scripts to manage editor contents, visually create dialogs for your scripts and assign script actions to nearly any file operation in a project. You can even look at and communicate with a wide range of what happens inside Quanta using DCOP.
Quanta is based on KDE so this means it is network transparent from any dialog or project. It can use not only FTP but other KDE KIO slaves from file dialogs or in project settings. For instance if you want secure access try the fish KIO slave that uses SSH.
Just enter fish://[user]@domain in any dialog or select fish in your project settings. Here on this site you will find information on using Kommander to visually build dialogs you can extend Quanta with. These applications talk to each other using an IPC (Inter Process Communication) called DCOP (DEsktop Communication Protocol).
Of course I realize this can sound like alphabet soup techno-babble to some web developers, but heres what it means. When you are using Quanta and realize you would like to do something and you want to ask "Can I do this?" you can expect the answer will not only be yes, but it will probably be even cooler than you hoped for.
Not included on this site are other tools you can use with Quanta for revision control and reviewing and merging changes in files. Those applications are Cervisia and Kompare, and if they are not installed and you install them Quanta will use them.
We would like to think that there are rich rewards to be found here for those willing to explore new ways of doing things, or perhaps in some cases old ways that are just new to you.
<<lessWe recognize that we dont have the resources to do everything we would like to so our target is to make it easy for you to help make this the best community based desktop application anywhere. Pretty much everything in Quanta is designed so you can extend it.
Even the way it handles XML DTDs is based on XML files you can edit. You can even import DTDs, write scripts to manage editor contents, visually create dialogs for your scripts and assign script actions to nearly any file operation in a project. You can even look at and communicate with a wide range of what happens inside Quanta using DCOP.
Quanta is based on KDE so this means it is network transparent from any dialog or project. It can use not only FTP but other KDE KIO slaves from file dialogs or in project settings. For instance if you want secure access try the fish KIO slave that uses SSH.
Just enter fish://[user]@domain in any dialog or select fish in your project settings. Here on this site you will find information on using Kommander to visually build dialogs you can extend Quanta with. These applications talk to each other using an IPC (Inter Process Communication) called DCOP (DEsktop Communication Protocol).
Of course I realize this can sound like alphabet soup techno-babble to some web developers, but heres what it means. When you are using Quanta and realize you would like to do something and you want to ask "Can I do this?" you can expect the answer will not only be yes, but it will probably be even cooler than you hoped for.
Not included on this site are other tools you can use with Quanta for revision control and reviewing and merging changes in files. Those applications are Cervisia and Kompare, and if they are not installed and you install them Quanta will use them.
We would like to think that there are rich rewards to be found here for those willing to explore new ways of doing things, or perhaps in some cases old ways that are just new to you.
Download (5.8MB)
Added: 2007-05-22 License: GPL (GNU General Public License) Price:
943 downloads
Isotopic Pattern Calculator 1.4
Isotopic Pattern Calculator is a calculates isotopic distributions. more>>
IPC is a program that calculates the isotopic distribution of a given chemical formula. It gives the rel. intensities and the propability of the masses belonging to a molecule ion, fragment or whatever is represented by the given chemical formula.
Furthernmore it can use GNUPlot to visualize the result. Only masses with a rel. Intensity bigger then 0.009% are shown. Additionaly ipc prints the overall number of peaks and the needed computation time.
The program uses an algorithm which computes the exact isotopic distribution. This leads to a large number of peaks which have very low rel. abundances. Even for a small molecule as Acetylsalicylic acid ( C9H8O4, Mr=180.15) there are 1350 peaks but only nine of them have a rel. abundance higher then 0.01%.
Enhancements:
- A complete list of elements and isotopes is now used.
- The list of elements is taken from the NIST.
<<lessFurthernmore it can use GNUPlot to visualize the result. Only masses with a rel. Intensity bigger then 0.009% are shown. Additionaly ipc prints the overall number of peaks and the needed computation time.
The program uses an algorithm which computes the exact isotopic distribution. This leads to a large number of peaks which have very low rel. abundances. Even for a small molecule as Acetylsalicylic acid ( C9H8O4, Mr=180.15) there are 1350 peaks but only nine of them have a rel. abundance higher then 0.01%.
Enhancements:
- A complete list of elements and isotopes is now used.
- The list of elements is taken from the NIST.
Download (0.070MB)
Added: 2005-08-15 License: GPL (GNU General Public License) Price:
1531 downloads
PicoTK 0.03
PicoTK is a C GUI toolkit that requires only a minimum of memory resources. more>>
PicoTK is a C GUI toolkit that requires only a minimum of memory resources. It readily works with the RTEMS real time kernel - its minimum complexity and OS independency makes a port to any operating system easy. It is not comparable featurewise with real full blown windowing toolkits like nanoX or Qt/Embedded, but serves the needs for simple memory mapped graphic presentation.
Main features:
- Draw graphical primitives: points, lines, texts (different fonts, fixed and proportionally spaced using any X-Windows font ), filled rectangles, pixmaps
- Driver is easily adaptable to "homebrew" embedded display hardware based on memory-mapped framebuffer
- Generic drivers for 1, 4 and 8 bit per pixel color depth. Readily supporting VGA mode 0x11 (640x480x2), VGA mode 0x13 (320x200x8) and the VESA linear frame buffer modes (480x640x8 to 1280x1024x8) on graphic cards, which support VBE2.0 or higher.
- Framebuffer emulator (fbe) for Linux using shared memory IPC. This is used for the development of the toolkit and can be used for the development of your application as well. That is you can have a simulation version of your application that run under Linux - and look at its emulated screen. Than you can cross-compile the same application for the target system.
- Tool "fontripper" for converting X11 fonts into picoTK fonts. Use "ppmripper" for converting ppm portable pixmaps into picoTK pixmaps. Fonts and Pixmaps are encoded into linkable binaries, i.e. the system will be compiled into a single binary and does not require to have a filesystem.
- Together with RTEMS (www.oarcorp.com) you can have a nice embedded system graphical output solely using GNU technology.
- Use Linux as a development host for cross-compiling and as an emulation environment.
- Allows easy adaption/porting to your favorite operating system or hardware architecture.
Enhancements:
- Extensions to demo application
- Updated HOWTO (currently only the ASCII version is included in the sources)
- Added support for VESA VBE2.0 flat linear frame buffer
- picoTermPrintf(): Added support for VT100/320 Escapes: Change color and move cursor.
- toolkit: Change graphics configuration by changing toolkit/Makefile
<<lessMain features:
- Draw graphical primitives: points, lines, texts (different fonts, fixed and proportionally spaced using any X-Windows font ), filled rectangles, pixmaps
- Driver is easily adaptable to "homebrew" embedded display hardware based on memory-mapped framebuffer
- Generic drivers for 1, 4 and 8 bit per pixel color depth. Readily supporting VGA mode 0x11 (640x480x2), VGA mode 0x13 (320x200x8) and the VESA linear frame buffer modes (480x640x8 to 1280x1024x8) on graphic cards, which support VBE2.0 or higher.
- Framebuffer emulator (fbe) for Linux using shared memory IPC. This is used for the development of the toolkit and can be used for the development of your application as well. That is you can have a simulation version of your application that run under Linux - and look at its emulated screen. Than you can cross-compile the same application for the target system.
- Tool "fontripper" for converting X11 fonts into picoTK fonts. Use "ppmripper" for converting ppm portable pixmaps into picoTK pixmaps. Fonts and Pixmaps are encoded into linkable binaries, i.e. the system will be compiled into a single binary and does not require to have a filesystem.
- Together with RTEMS (www.oarcorp.com) you can have a nice embedded system graphical output solely using GNU technology.
- Use Linux as a development host for cross-compiling and as an emulation environment.
- Allows easy adaption/porting to your favorite operating system or hardware architecture.
Enhancements:
- Extensions to demo application
- Updated HOWTO (currently only the ASCII version is included in the sources)
- Added support for VESA VBE2.0 flat linear frame buffer
- picoTermPrintf(): Added support for VT100/320 Escapes: Change color and move cursor.
- toolkit: Change graphics configuration by changing toolkit/Makefile
Download (0.040MB)
Added: 2006-07-17 License: GPL (GNU General Public License) Price:
1194 downloads
mod_example_ipc 1.0
mod_example_ipc module showcases the use in an Apache 2.0 module of the Shared Memory and Mutex routines. more>>
mod_example_ipc is an Apache module that showcases the use in an Apache 2.0 module of the Shared Memory and Mutex routines found in the Apache Portable Runtime. The module itself does nothing useful.
Installation:
There are two ways to install mod_example_ipc in your server: apxs and the build system integration using config.m4. Using apxs is the easiest. It requires perl to run the apxs script, and the same C compiler that you built Apache with. Simply run
$ /path/to/apache2/bin/apxs -c -i mod_example_ipc.c
from the module source directory. This compiles the source as a shared module and installs it under /path/to/apache2/modules.
To integrate the module, copy mod_example_ipc.c and config2.m4 to the modules/experimental directory under your Apache 2.0 source tree. Then run ./buildconf from the top of the source tree. You need to have GNU autoconf and libtool installed to do this. After this step, you can run configure and enable mod_example_ipc:
$ ./configure ... --enable-example_ipc ...
and build Apache as you normally would.
Once you build the module, you can activate it in the Apache configuration as follows:
# You only need this if you built the module as a shared library
LoadModule example_ipc_module modules/mod_example_ipc.so
< Location /example_ipc >
SetHandler example_ipc
< /Location >
Now, any call to http://yourserver/example_ipc will cause the modules handler to grab the lock, increment the shared memory counter and return a small HTML page. Run a benchmark tool with multiple parallel sessions (like ab which comes with Apache) against this URL to see the effect of the IPC.
<<lessInstallation:
There are two ways to install mod_example_ipc in your server: apxs and the build system integration using config.m4. Using apxs is the easiest. It requires perl to run the apxs script, and the same C compiler that you built Apache with. Simply run
$ /path/to/apache2/bin/apxs -c -i mod_example_ipc.c
from the module source directory. This compiles the source as a shared module and installs it under /path/to/apache2/modules.
To integrate the module, copy mod_example_ipc.c and config2.m4 to the modules/experimental directory under your Apache 2.0 source tree. Then run ./buildconf from the top of the source tree. You need to have GNU autoconf and libtool installed to do this. After this step, you can run configure and enable mod_example_ipc:
$ ./configure ... --enable-example_ipc ...
and build Apache as you normally would.
Once you build the module, you can activate it in the Apache configuration as follows:
# You only need this if you built the module as a shared library
LoadModule example_ipc_module modules/mod_example_ipc.so
< Location /example_ipc >
SetHandler example_ipc
< /Location >
Now, any call to http://yourserver/example_ipc will cause the modules handler to grab the lock, increment the shared memory counter and return a small HTML page. Run a benchmark tool with multiple parallel sessions (like ab which comes with Apache) against this URL to see the effect of the IPC.
Download (0.006MB)
Added: 2006-05-18 License: The Apache License 2.0 Price:
1254 downloads
libbsl 0.9.1
libbsl is a powerful, easy to use and fully thread safe C++ template class library for frequently recurring programming problems more>>
libbsl (Basic System Library) is a powerful, easy to use and fully thread safe C++ template class library for frequently recurring (machine/OS oriented) programming problems.
All fundamental objects in libbsl are freely copyable and shareable between an arbitrary number of threads - e.g. reading from a shared io device from several concurrent threads is implicitly thread safe for the programmer without additional cost and knowledge.
An important goal in developing libbsl was to keep it simple and to enable even the inexperienced programmer to quickly write complex programs with the help of libbsl.
This goal is achieved by hiding most of the templates - and there are many - from the api by several reasonable typedefs.
On the other hand the generic template architecture of libbsl allows the more adept user to enhance (e.g. by the use of policy templates) or by combining libbsls classes to create new objects or user defined functionality.
Main features:
- crypto; cryptographic classes (AES, ElGamal etc.) mainly for secure network communication
- datetime; date, time and timer classes
- dso; dynamic loadable C++ objects which remain dynamic_castable after loading
- io; ile, directory, character devices etc. classes.
- io/net; tcp/udp ipv4 (secure) socket classes etc.
- ipc; program execution class, lightweight process class which enables you to design your own fine grained program logic by the use of freely configurable suspend an resume functions per process
- log; error handling and logging mechanisms via syslog, files etc.
- mime; mime type detection using ternary search trees
- options; command line options and environment setting classes
- thread; easy to use thread class, mutexes, barriers, transfer of program tasks to threads by the use of thread functors etc.
- types; type traits, type lists etc.
- util; memory management, factories, daemon class, functors, "switchless" intelligent state machine implementation, utf8 string class and much more
- values; parameter (pair of arbitrary values as text), tuple, variant etc.
<<lessAll fundamental objects in libbsl are freely copyable and shareable between an arbitrary number of threads - e.g. reading from a shared io device from several concurrent threads is implicitly thread safe for the programmer without additional cost and knowledge.
An important goal in developing libbsl was to keep it simple and to enable even the inexperienced programmer to quickly write complex programs with the help of libbsl.
This goal is achieved by hiding most of the templates - and there are many - from the api by several reasonable typedefs.
On the other hand the generic template architecture of libbsl allows the more adept user to enhance (e.g. by the use of policy templates) or by combining libbsls classes to create new objects or user defined functionality.
Main features:
- crypto; cryptographic classes (AES, ElGamal etc.) mainly for secure network communication
- datetime; date, time and timer classes
- dso; dynamic loadable C++ objects which remain dynamic_castable after loading
- io; ile, directory, character devices etc. classes.
- io/net; tcp/udp ipv4 (secure) socket classes etc.
- ipc; program execution class, lightweight process class which enables you to design your own fine grained program logic by the use of freely configurable suspend an resume functions per process
- log; error handling and logging mechanisms via syslog, files etc.
- mime; mime type detection using ternary search trees
- options; command line options and environment setting classes
- thread; easy to use thread class, mutexes, barriers, transfer of program tasks to threads by the use of thread functors etc.
- types; type traits, type lists etc.
- util; memory management, factories, daemon class, functors, "switchless" intelligent state machine implementation, utf8 string class and much more
- values; parameter (pair of arbitrary values as text), tuple, variant etc.
Download (1.04MB)
Added: 2005-10-11 License: GPL (GNU General Public License) Price:
1474 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 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