Skip to content

Instantly share code, notes, and snippets.

@karinsofia
Created December 9, 2014 15:42
Show Gist options
  • Select an option

  • Save karinsofia/73eabcd138bfa08194f3 to your computer and use it in GitHub Desktop.

Select an option

Save karinsofia/73eabcd138bfa08194f3 to your computer and use it in GitHub Desktop.
bundesstrasse-test
require 'bundesstrasse'
require 'benchmark'
require 'msgpack'
class Client
def initialize(context)
@context = context
end
def connect!(address)
@socket ||= @context.req_socket
@socket.connect(address)
end
def send(msg)
@socket.write(msg)
@socket.read
end
def disconnect!
@socket.close!
end
end
class Server
def initialize(context)
@context = context
end
def start
socket = @context.rep_socket
socket.bind('tcp://*:5678')
loop do
msg = MessagePack.unpack(socket.read)
socket.write "Server got: #{msg}"
end
rescue Bundesstrasse::TermError
# TermErrors are raised when context is terminated,
# the socket is closed automatically
end
end
context = Bundesstrasse::Context.create
client = Client.new(context)
client.connect!('tcp://127.0.0.1:5678')
server = Server.new(context)
server_thread = Thread.new { server.start }
puts Benchmark.measure {
100_000.times { puts client.send(MessagePack.pack("Hello server")) }
}
client.disconnect!
context.terminate!
server_thread.join
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment