|
|
@@ -1,45 +0,0 @@
|
|
|
-package pubsub
|
|
|
-
|
|
|
-import (
|
|
|
- "github.com/v2ray/v2ray-core/app"
|
|
|
-)
|
|
|
-
|
|
|
-const (
|
|
|
- APP_ID = app.ID(3)
|
|
|
-)
|
|
|
-
|
|
|
-type PubsubMessage []byte
|
|
|
-type TopicHandler func(PubsubMessage)
|
|
|
-
|
|
|
-type Pubsub interface {
|
|
|
- Publish(topic string, message PubsubMessage)
|
|
|
- Subscribe(topic string, handler TopicHandler)
|
|
|
-}
|
|
|
-
|
|
|
-type pubsubWithContext interface {
|
|
|
- Publish(context app.Context, topic string, message PubsubMessage)
|
|
|
- Subscribe(context app.Context, topic string, handler TopicHandler)
|
|
|
-}
|
|
|
-
|
|
|
-type contextedPubsub struct {
|
|
|
- context app.Context
|
|
|
- pubsub pubsubWithContext
|
|
|
-}
|
|
|
-
|
|
|
-func (this *contextedPubsub) Publish(topic string, message PubsubMessage) {
|
|
|
- this.pubsub.Publish(this.context, topic, message)
|
|
|
-}
|
|
|
-
|
|
|
-func (this *contextedPubsub) Subscribe(topic string, handler TopicHandler) {
|
|
|
- this.pubsub.Subscribe(this.context, topic, handler)
|
|
|
-}
|
|
|
-
|
|
|
-func init() {
|
|
|
- app.RegisterApp(APP_ID, func(context app.Context, obj interface{}) interface{} {
|
|
|
- pubsub := obj.(pubsubWithContext)
|
|
|
- return &contextedPubsub{
|
|
|
- context: context,
|
|
|
- pubsub: pubsub,
|
|
|
- }
|
|
|
- })
|
|
|
-}
|