Skip to content

emaland/zookeeper_client

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zookeeper

An interface to the Zookeeper distributed configuration server.

License

Copyright 2008 Phillip Pearson, and 2010 Twitter, Inc. Licensed under the MIT License. See the included LICENSE file. Portions copyright 2008-2010 the Apache Software Foundation, licensed under the Apache 2 license, and used with permission.

Install

sudo gem install zookeeper

Usage

Connect to a server:

require 'rubygems'
require 'zookeeper'
z = Zookeeper.new("localhost:2181")

Create, set and read nodes:

z.create("/bacon", "text to be stored in the new node", 0)
data, stat = z.get("/bacon")
  # => ["text to be stored in the new node"...]

z.set("/bacon", "an entirely different line of text", stat.version)
z.set("/bacon", "this won't work", stat.version)
  # CZookeeper::BadVersionError: expected version does not match actual version

data, stat = z.get("/bacon")
  # => ["an entirely different line of text"...]
z.delete("/bacon", stat.version)

Create ephemeral and sequence nodes:

z.create("/parent", "parent node", 0)

z.create("/parent/test-", 
  "an ordered ephemeral node", 
  Zookeeper::EPHEMERAL | Zookeeper::SEQUENCE)
  # => "/parent/test-0"

z.create("/parent/test-", 
  "an ordered ephemeral node", 
  Zookeeper::EPHEMERAL | Zookeeper::SEQUENCE)
  # => "/parent/test-1"

z.get_children(:path => "/")

Idioms

The following methods are initially supported:
  get
  set
  get_children
  stat
  create
  delete
  get_acl
  set_acl

All support async callbacks.  get, get_children and stat support both
watchers and callbacks.

Calls take a dictionary of parameters.  With the exception of set_acl, the
only required parameter is :path.  Each call returns a dictionary with at
minimum two keys :req_id and :rc.

About

Ruby wrapper for the ZooKeeper C client library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 57.6%
  • Ruby 42.4%