github.com/vmware/transport-go@v1.3.4/bridge/bridge_client_subscription.go (about) 1 // Copyright 2019-2020 VMware, Inc. 2 // SPDX-License-Identifier: BSD-2-Clause 3 4 package bridge 5 6 import ( 7 "github.com/go-stomp/stomp/v3/frame" 8 "github.com/google/uuid" 9 "github.com/vmware/transport-go/model" 10 "sync" 11 ) 12 13 // BridgeClientSub is a client subscription that encapsulates message and error channels for a subscription 14 type BridgeClientSub struct { 15 C chan *model.Message // MESSAGE payloads 16 E chan *model.Message // ERROR payloads. 17 Id *uuid.UUID 18 Destination string 19 Client *BridgeClient 20 subscribed bool 21 lock sync.RWMutex 22 } 23 24 // Send an UNSUBSCRIBE frame for subscription destination. 25 func (cs *BridgeClientSub) Unsubscribe() { 26 cs.lock.Lock() 27 cs.subscribed = false 28 cs.lock.Unlock() 29 unsubscribeFrame := frame.New(frame.UNSUBSCRIBE, 30 frame.Id, cs.Id.String(), 31 frame.Destination, cs.Destination) 32 33 cs.Client.SendFrame(unsubscribeFrame) 34 }