aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/examples/eventbus
diff options
context:
space:
mode:
authorIndrajith K L2022-12-03 17:00:20 +0530
committerIndrajith K L2022-12-03 17:00:20 +0530
commitf5c4671bfbad96bf346bd7e9a21fc4317b4959df (patch)
tree2764fc62da58f2ba8da7ed341643fc359873142f /v_windows/v/examples/eventbus
downloadcli-tools-windows-master.tar.gz
cli-tools-windows-master.tar.bz2
cli-tools-windows-master.zip
Adds most of the toolsHEADmaster
Diffstat (limited to 'v_windows/v/examples/eventbus')
-rw-r--r--v_windows/v/examples/eventbus/eventbus.v13
-rw-r--r--v_windows/v/examples/eventbus/modules/some_module/some_module.v34
2 files changed, 47 insertions, 0 deletions
diff --git a/v_windows/v/examples/eventbus/eventbus.v b/v_windows/v/examples/eventbus/eventbus.v
new file mode 100644
index 0000000..042feb8
--- /dev/null
+++ b/v_windows/v/examples/eventbus/eventbus.v
@@ -0,0 +1,13 @@
+module main
+
+import some_module
+
+fn main() {
+ mut sub := some_module.get_subscriber()
+ sub.subscribe('error', on_error)
+ some_module.do_work()
+}
+
+fn on_error(sender voidptr, e &some_module.MyError, x voidptr) {
+ println(e.message)
+}
diff --git a/v_windows/v/examples/eventbus/modules/some_module/some_module.v b/v_windows/v/examples/eventbus/modules/some_module/some_module.v
new file mode 100644
index 0000000..01231fb
--- /dev/null
+++ b/v_windows/v/examples/eventbus/modules/some_module/some_module.v
@@ -0,0 +1,34 @@
+module some_module
+
+import eventbus
+
+const (
+ eb = eventbus.new()
+)
+
+pub struct Work {
+pub:
+ hours int
+}
+
+pub struct MyError {
+pub:
+ message string
+}
+
+pub fn do_work() {
+ work := Work{20}
+ for i in 0 .. 20 {
+ println('working...')
+ if i == 15 {
+ error := &MyError{'There was an error.'}
+ some_module.eb.publish('error', work, error)
+ some_module.eb.publish('error', work, error)
+ return
+ }
+ }
+}
+
+pub fn get_subscriber() eventbus.Subscriber {
+ return *some_module.eb.subscriber
+}