The LWES::Emitter is used for emitting LWES events to a multicast network or a single host. It can emit LWES::Event objects, LWES::Struct objects, and even plain Ruby hashes.
It is non-blocking and does not guarantee delivery.
emitter = LWES::Emitter.new(:address => '224.1.1.11',
:port => 12345,
:heartbeat => 30, # nil to disable
:ttl => 1) # nil for default TTL(3)
event = MyEvent.new
event.foo = "bar"
emitter << event
Since we can’t reliably map certain Ruby types to LWES types, you’ll have to specify them explicitly for IP addresses and all Integer types.
event = {
:time_sec => [ :int32, Time.now.to_i ],
:time_usec => [ :int32, Time.now.tv_usec ],
:remote_addr => [ :ip_addr, "192.168.0.1" ],
}
# Strings and Boolean values are easily mapped, however:
event[:field1] = "String value"
event[:boolean1] = true
event[:boolean2] = false
# finally, we just emit the hash with any given name
emitter.emit "Event3", event