Module: ZooKeeper::RubyIO

Defined in:
lib/zkruby/rubyio.rb

Overview

Binding over standard ruby sockets

Manages 3 threads per zookeeper session

Read thread manages connecting to and reading from the tcp socket. Uses non blocking io to manage timeouts and initiate the required ping requests.

Write thread each new connection spawns a new thread. Requests coming from the session in response to multiple threads are written to a blocking queue. While the connection is alive this thread reads from the queue and writes to the socket, all in blocking fashion TODO: Is it really ok to do a non-blocking read during a blocking write?

Event thread All response and watch callbacks are put on another blocking queue to be read and executed by this thread.

All interaction with the session is synchronized

Client synchronous code is implemented with a condition variable that waits on the callback/errback

Defined Under Namespace

Classes: AsyncOp, Binding, Connection