Skip to content
Small framework to simplify process-to-process communication.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmark
designs
examples Introduces #bidir_server and #bidir_named Jan 15, 2013
lib issue #5 Jul 26, 2018
spec
website
.gitignore Rips out rspec-expectations entirely Aug 27, 2015
.travis.yml
.yardopts + More documentation Feb 27, 2012
Gemfile
Guardfile . better workflow with fail-fast Nov 28, 2011
HISTORY.txt Updates project to work with modern rubies. Sep 23, 2014
LICENSE . well guess what, I've found something else to do Mar 4, 2011
README
cod.gemspec

README

Some people, when confronted with a problem, think "I know, I'll use
multithreading". Nothhw tpe yawrve o oblems.[1]

Don't use threads, use processes. This is the toolkit for interprocess
communication that makes it real simple. A good place to start is the
documentation for the Cod module.

SYNOPSIS

  # Cod's basic elements are channels, unidirectional communication links. 
  pipe = Cod.pipe
  
  # You can use those either directly: 
  pipe.put :some_ruby_object        # Process A
  pipe.get # => :some_ruby_object   # Process B
  
  # Or use them as bricks for more: 
  service = beanstalk.service
  client  = beanstalk.client(pipe)
  
  service.one { |msg| :response }               # Process A
  client.call :ruby_object    # => :response    # Process B
    
STATUS

Working library. Some rough edges and potential for growth. Have a look at the 
Cod module to get started.

Working transports include: 

* process (spawn, connecting to $stdout and $stdin)
* stdio (connects to $stdout and $stdin of current process)
* pipe (akin to IO.pipe)
* tcp (server and client)
* beanstalk (connects to beanstalkd)

At version 0.5.0

(c) 2011-2015 Kaspar Schiess

[1] https://twitter.com/rogerbraun/status/160813717502705664
You can’t perform that action at this time.