Add example of propagating a structure
parent
aa3ac6f27a
commit
58c333f509
|
|
@ -12,17 +12,22 @@ fn main() {
|
|||
r := Receiver{}
|
||||
sub.subscribe_method('event_foo', on_foo, r)
|
||||
sub.subscribe('event_bar', on_bar)
|
||||
sub.subscribe('event_baz', on_baz)
|
||||
|
||||
println("Receiver ok: "+r.ok.str())
|
||||
some_module.do_work()
|
||||
println("Receiver ok: "+r.ok.str())
|
||||
}
|
||||
|
||||
fn on_foo(mut receiver &Receiver, e &some_module.Event, sender voidptr) {
|
||||
fn on_foo(mut receiver &Receiver, e &some_module.EventMetadata, sender voidptr) {
|
||||
receiver.ok = true
|
||||
println('on_foo :: ' +e.message)
|
||||
}
|
||||
|
||||
fn on_bar(receiver voidptr, e &some_module.Event, sender voidptr) {
|
||||
fn on_bar(receiver voidptr, e &some_module.EventMetadata, sender voidptr) {
|
||||
println('on_bar :: ' +e.message)
|
||||
}
|
||||
|
||||
fn on_baz(receiver voidptr, event voidptr, d &some_module.Duration) {
|
||||
println('on_baz :: ' + d.hours.str())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,27 +6,27 @@ const (
|
|||
eb = eventbus.new()
|
||||
)
|
||||
|
||||
pub struct Work {
|
||||
pub struct Duration {
|
||||
pub:
|
||||
hours int
|
||||
}
|
||||
|
||||
pub struct Event {
|
||||
pub struct EventMetadata {
|
||||
pub:
|
||||
message string
|
||||
}
|
||||
|
||||
pub fn do_work() {
|
||||
work := Work{10}
|
||||
duration := Duration{10}
|
||||
for i in 0 .. 10 {
|
||||
println('working...')
|
||||
if i == 5 {
|
||||
error := &Event{'Iteration '+i.str()}
|
||||
some_module.eb.publish('event_foo', work, error)
|
||||
some_module.eb.publish('event_bar', work, error)
|
||||
event_metadata := &EventMetadata{'Iteration '+i.str()}
|
||||
some_module.eb.publish('event_foo', duration, event_metadata)
|
||||
some_module.eb.publish('event_bar', duration, event_metadata)
|
||||
}
|
||||
}
|
||||
some_module.eb.publish('event_bar', &Work{42}, &Event{'Additional data at the end.'})
|
||||
some_module.eb.publish('event_baz', &Duration{42}, &EventMetadata{'Additional data at the end.'})
|
||||
}
|
||||
|
||||
pub fn get_subscriber() eventbus.Subscriber {
|
||||
|
|
|
|||
Loading…
Reference in New Issue