summaryrefslogtreecommitdiff
path: root/plugins/websockets/rpc.go
diff options
context:
space:
mode:
authorValery Piashchynski <[email protected]>2021-05-27 00:09:33 +0300
committerValery Piashchynski <[email protected]>2021-05-27 00:09:33 +0300
commitdc3c5455e5c9b32737a0620c8bdb8bda0226dba7 (patch)
tree6ba562da6de7f32a8d528b72cbb56a8bc98c1b30 /plugins/websockets/rpc.go
parentd2e9d8320857f5768c54843a43ad16f59d6a3e8f (diff)
- Update all main abstractions
- Desighn a new interfaces responsible for the whole PubSub - New plugin - websockets Signed-off-by: Valery Piashchynski <[email protected]>
Diffstat (limited to 'plugins/websockets/rpc.go')
-rw-r--r--plugins/websockets/rpc.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/plugins/websockets/rpc.go b/plugins/websockets/rpc.go
new file mode 100644
index 00000000..0f0303b7
--- /dev/null
+++ b/plugins/websockets/rpc.go
@@ -0,0 +1,46 @@
+package websockets
+
+import (
+ "github.com/spiral/errors"
+ "github.com/spiral/roadrunner/v2/pkg/pubsub"
+ "github.com/spiral/roadrunner/v2/plugins/logger"
+)
+
+type rpc struct {
+ plugin *Plugin
+ log logger.Logger
+}
+
+func (r *rpc) Publish(msg []*pubsub.Msg, ok *bool) error {
+ const op = errors.Op("broadcast_publish")
+
+ // publish to the registered broker
+ mi := make([]pubsub.Message, 0, len(msg))
+ // golang can't convert slice in-place
+ // so, we need to convert it manually
+ for i := 0; i < len(msg); i++ {
+ mi = append(mi, msg[i])
+ }
+ err := r.plugin.Publish(mi)
+ if err != nil {
+ *ok = false
+ return errors.E(op, err)
+ }
+ *ok = true
+ return nil
+}
+
+func (r *rpc) PublishAsync(msg []*pubsub.Msg, ok *bool) error {
+ // publish to the registered broker
+ mi := make([]pubsub.Message, 0, len(msg))
+ // golang can't convert slice in-place
+ // so, we need to convert it manually
+ for i := 0; i < len(msg); i++ {
+ mi = append(mi, msg[i])
+ }
+
+ r.plugin.PublishAsync(mi)
+
+ *ok = true
+ return nil
+}