Skip to content

Latest commit

 

History

History
57 lines (40 loc) · 1.48 KB

File metadata and controls

57 lines (40 loc) · 1.48 KB

Build Status

serf-event

A golang lib for writing serf event generators and handlers.

Goal

  • Have a more formal (verifiable) way of defining and generating serf events in Go!
  • eliminate some/most boilerplate code for getting a serf event handler logic ready in Go!

Status

Being implemented - not ready for use

Requirements

  • serf agent should be running (-event-handlers flag shall not be specified for handler process written using this library)

Writing an event handler

The event routers supports event name to handler match with ability for creating sub-router that allow inherit common path-prefix in their respective associated handlers.

import serf-event

func main() {
se = serf-event.NewHandler()
se.AddHandler("foo", fooHandler())
subSe = se.NewSubHanddler("bar/")
subSe.AddHandler("event1", barEvent1Handler())
...
...

# serf native events are supported
se.AddJoinHandler(joinHandler())
se.AddLeaveHandler(joinHandler())
...
...

# serf queries
se.AddResponder("", query1Responder())

se.Serve()
}

Writing a event generator

Event generators can be useful for code that is able to consume the events generated by it's own logic and hence can be useful for sharing event structures, without having to explicitly import serf client code.

func main() {
se = serf-event.NewGenerator()

err = se.PostEvent("", bytes)

resp, err  = se.PostQuery("", bytes)

}