Project

simple-rpc

0.0
No commit activity in last 3 years
No release in over 3 years
A simple ruby library for doing machine local interprocess communication using unix sockets.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.16
~> 10.0
 Project Readme

SimpleRPC

A simple ruby library for doing machine local interprocess communication using unix sockets.

Installation

Add this line to your application's Gemfile:

gem 'simple-rpc'

And then execute:

$ bundle

Or install it yourself as:

$ gem install simple-rpc

Usage

You can clone this repository and open two different console windows and run:

Console 1

CHANNEL=/tmp/asdf ./client1.rb

Console 2

CHANNEL=/tmp/asdf CHILD=1 ./client2.rb

The CHILD=1 env var flips the channels in the second process so that they the two processes can send and receive on two local unix sockets as defined by the CHANNEL env var.

Here's the contents of ./client1.rb


#! /usr/bin/env ruby

$:.unshift(File.join(File.dirname(__FILE__), '/lib'))

require 'simple-rpc'

class Client

  def initialize
    @rpc = SimpleRPC::RPC.new(self)
    @rpc.add_listener(SimpleRPC::Events::CONNECTION_CHANGED, method(:connection_changed))
    @rpc.connect
  end

  def connection_changed(status)
    puts "status = #{status}"
    if status == SimpleRPC::Status::CONNECTED
      test_all
    end
  end

  def test_all
    @rpc.send_msg("say_hello", "awesome", "dude")
    @rpc.send_msg("test_hash", {test:"asdf"})
  end

end

Client.new
while true
  sleep 1
end

and here are the contents of ./client2.rb


#! /usr/bin/env ruby

$:.unshift(File.join(File.dirname(__FILE__), '/lib'))

require 'simple-rpc'

class Client

  def initialize
    @rpc = SimpleRPC::RPC.new(self)
    @rpc.connect
  end

  def say_hello(adjective, sender)
    puts "hello #{adjective} #{sender}"
  end

  def test_hash(data)
    puts "hash = #{data}"
  end

end

Client.new
while true
  sleep 1
end


Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/clintmod/simple-rpc.