You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@zookeeper.apache.org by Gustavo Niemeyer <gu...@niemeyer.net> on 2011/08/19 04:35:49 UTC

[ANN] gozk updated

Greetings,

A significant update to gozk, the ZooKeeper bindings for Go, was just
released.  Among other things, this update includes several small
tweaks to Event handling to make it easier to produce correct code.

gozk is an experiment we push as part of Ensemble at Canonical:

    https://wiki.ubuntu.com/gozk

API documentation is available at:

    http://goneat.org/lp/gozk

The following changes and improvements were made.  Please read it
through as there are incompatible changes.

- Event channels will now receive Event rather than *Event.

- STATE_CLOSED has been changed to 0 so that events obtained
  from closed channels can be more easily handled.

- Session event channel is now buffered. You should still consume
  events from it if your application is long-living, though,
  for processing session expirations with re-connections or panics.
  If the session channel buffer fills up, the application will
  panic.

- Watch event channels will not receive transient events such as
  STATE_CONNECTING or STATE_ASSOCIATING anymore, since they
  disrupt the workflow unnecessarily.  These events are still
  sent to the session event channel, though, and critical
  events such as STATE_EXPIRED_SESSION are still sent to
  watch channels.

  For a full description of how events are now handled, see
  the documentation:

      http://goneat.org/lp/gozk#Event

- Event now has Ok and String methods. The Ok method returns
  true if the event reports a usable connection to ZooKeeper,
  and String enables using critical events as errors.

  Combined, these methods enable simplified watch handling:

      event := <-watch
      if !event.Ok() {
          err = event
	  return
      }

- Init and ReInit now take parameters in nanoseconds rather than
  milliseconds, sice that's the most used convention in Go. Make
  sure you update the calls.

- Several functions were renamed for improved styling:

      zk.GetACL => zk.ACL
      zk.GetChildren => zk.Children
      zk.GetChildrenW => zk.ChildrenW
      zk.GetClientId => zk.ClientId

-- 
Gustavo Niemeyer
http://niemeyer.net
http://niemeyer.net/plus
http://niemeyer.net/twitter
http://niemeyer.net/blog

-- I never filed a patent.