EXAMPLE_06_HASHTABLE

Path: doc/EXAMPLE_06_HASHTABLE
Last Update: Mon May 10 06:42:50 +0000 2010

HashTable RPC Example

  $:.unshift File.dirname(__FILE__) + '/../../lib'
  require 'mq'

  AMQP.start(:host => 'localhost') do

    def log *args
      p args
    end

    # AMQP.logging = true

    class HashTable < Hash
      def get key
        log 'HashTable', :get, key
        self[key]
      end

      def set key, value
        log 'HashTable', :set, key => value
        self[key] = value
      end

      def keys
        log 'HashTable', :keys
        super
      end
    end

    server = MQ.new.rpc('hash table node', HashTable.new)

    client = MQ.new.rpc('hash table node')
    client.set(:now, time = Time.now)
    client.get(:now) do |res|
      log 'client', :now => res, :eql? => res == time
    end

    client.set(:one, 1)
    client.keys do |res|
      log 'client', :keys => res
      AMQP.stop{ EM.stop }
    end

  end

  __END__

  ["HashTable", :set, {:now=>Thu Jul 17 21:04:53 -0700 2008}]
  ["HashTable", :get, :now]
  ["HashTable", :set, {:one=>1}]
  ["HashTable", :keys]
  ["client", {:eql?=>true, :now=>Thu Jul 17 21:04:53 -0700 2008}]
  ["client", {:keys=>[:one, :now]}]

[Validate]