Sha256: a17ee7de0084e039edf9a26aa42539485b4fcbd6b05d0e100a39578b1a09cb1d

Contents?: true

Size: 979 Bytes

Versions: 9

Compression:

Stored size: 979 Bytes

Contents

# PipeRpc

PipeRpc was designed so parent und child processes can call each other's methods. It uses a json protocol similar to JSON-RPC.

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'pipe_rpc'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install pipe_rpc

## Usage

```ruby
require 'pipe_rpc'

request_read, request_write = IO.pipe
response_read, response_write = IO.pipe

pid = fork do
  request_write.close
  response_read.close

  class Server
    def add(a, b)
      a + b
    end
  end

  hub = PipeRpc::Hub.new(input: request_read, output: response_write)
  hub.add_server(default: Server.new)

  loop do
    hub.handle_message # blocks until message available
  end
end

begin
  request_read.close
  response_write.close

  hub = PipeRpc::Hub.new(output: request_write, input: response_read)
  client = hub.client_for(:default)

  puts client.add(3, 5)
ensure
  Process.kill 9, pid
  Process.wait pid
end
```

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
pipe_rpc-1.1.2 README.md
pipe_rpc-1.1.1 README.md
pipe_rpc-1.1.0 README.md
pipe_rpc-1.0.0 README.md
pipe_rpc-0.3.2 README.md
pipe_rpc-0.3.1 README.md
pipe_rpc-0.3.0 README.md
pipe_rpc-0.2.2 README.md
pipe_rpc-0.2.0 README.md