@@ -22,41 +22,6 @@ type SwarmListening interface {
2222 GetNodesParameters (ctx context.Context ) ([]map [string ]string , error )
2323}
2424
25- // CreateRemoveCancelManager combines two cancel managers for creating and
26- // removing services
27- type CreateRemoveCancelManager struct {
28- createCancelManager CancelManaging
29- removeCancelManager CancelManaging
30- mux sync.RWMutex
31- }
32-
33- // AddEvent controls canceling for creating and removing services
34- // A create event will cancel delete events with the same ID
35- // A remove event will cancel create events with the same ID
36- func (c * CreateRemoveCancelManager ) AddEvent (event Event ) context.Context {
37- c .mux .Lock ()
38- defer c .mux .Unlock ()
39- if event .Type == EventTypeCreate {
40- c .removeCancelManager .ForceDelete (event .ID )
41- return c .createCancelManager .Add (context .Background (), event .ID , event .TimeNano )
42- }
43- // EventTypeRemove
44- c .createCancelManager .ForceDelete (event .ID )
45- return c .removeCancelManager .Add (context .Background (), event .ID , event .TimeNano )
46- }
47-
48- // RemoveEvent removes and cancels event from its corresponding
49- // cancel manager
50- func (c * CreateRemoveCancelManager ) RemoveEvent (event Event ) bool {
51- c .mux .Lock ()
52- defer c .mux .Unlock ()
53- if event .Type == EventTypeCreate {
54- return c .createCancelManager .Delete (event .ID , event .TimeNano )
55- }
56- // EventTypeRemove
57- return c .removeCancelManager .Delete (event .ID , event .TimeNano )
58- }
59-
6025// SwarmListener provides public api
6126type SwarmListener struct {
6227 SSListener SwarmServiceListening
@@ -75,13 +40,13 @@ type SwarmListener struct {
7540
7641 NotifyDistributor NotifyDistributing
7742
78- ServiceCreateRemoveCancelManager * CreateRemoveCancelManager
79- NodeCreateRemoveCancelManager * CreateRemoveCancelManager
80- IncludeNodeInfo bool
81- UseDockerServiceEvents bool
82- IgnoreKey string
83- IncludeKey string
84- Log * log.Logger
43+ ServiceCancelManager CancelManaging
44+ NodeCancelManager CancelManaging
45+ IncludeNodeInfo bool
46+ UseDockerServiceEvents bool
47+ IgnoreKey string
48+ IncludeKey string
49+ Log * log.Logger
8550}
8651
8752func newSwarmListener (
@@ -100,10 +65,8 @@ func newSwarmListener(
10065
10166 notifyDistributor NotifyDistributing ,
10267
103- serviceCreateCancelManager CancelManaging ,
104- serviceRemoveCancelManager CancelManaging ,
105- nodeCreateCancelManager CancelManaging ,
106- nodeRemoveCancelManager CancelManaging ,
68+ serviceCancelManager CancelManaging ,
69+ nodeCancelManager CancelManaging ,
10770 includeNodeInfo bool ,
10871 useDockerServiceEvents bool ,
10972 ignoreKey string ,
@@ -112,24 +75,20 @@ func newSwarmListener(
11275) * SwarmListener {
11376
11477 return & SwarmListener {
115- SSListener : ssListener ,
116- SSClient : ssClient ,
117- SSCache : ssCache ,
118- SSPoller : ssPoller ,
119- SSEventChan : ssEventChan ,
120- SSNotificationChan : ssNotificationChan ,
121- NodeListener : nodeListener ,
122- NodeClient : nodeClient ,
123- NodeCache : nodeCache ,
124- NodeEventChan : nodeEventChan ,
125- NodeNotificationChan : nodeNotificationChan ,
126- NotifyDistributor : notifyDistributor ,
127- ServiceCreateRemoveCancelManager : & CreateRemoveCancelManager {
128- createCancelManager : serviceCreateCancelManager ,
129- removeCancelManager : serviceRemoveCancelManager },
130- NodeCreateRemoveCancelManager : & CreateRemoveCancelManager {
131- createCancelManager : nodeCreateCancelManager ,
132- removeCancelManager : nodeRemoveCancelManager },
78+ SSListener : ssListener ,
79+ SSClient : ssClient ,
80+ SSCache : ssCache ,
81+ SSPoller : ssPoller ,
82+ SSEventChan : ssEventChan ,
83+ SSNotificationChan : ssNotificationChan ,
84+ NodeListener : nodeListener ,
85+ NodeClient : nodeClient ,
86+ NodeCache : nodeCache ,
87+ NodeEventChan : nodeEventChan ,
88+ NodeNotificationChan : nodeNotificationChan ,
89+ NotifyDistributor : notifyDistributor ,
90+ ServiceCancelManager : serviceCancelManager ,
91+ NodeCancelManager : nodeCancelManager ,
13392 IncludeNodeInfo : includeNodeInfo ,
13493 UseDockerServiceEvents : useDockerServiceEvents ,
13594 IgnoreKey : ignoreKey ,
@@ -204,10 +163,8 @@ func NewSwarmListenerFromEnv(
204163 nodeEventChan ,
205164 nodeNotificationChan ,
206165 notifyDistributor ,
207- NewCancelManager (true ),
208- NewCancelManager (true ),
209- NewCancelManager (true ),
210- NewCancelManager (true ),
166+ NewCancelManager (),
167+ NewCancelManager (),
211168 includeNodeInfo ,
212169 useDockerServiceEvents ,
213170 ignoreKey ,
@@ -253,8 +210,8 @@ func (l *SwarmListener) connectServiceChannels() {
253210}
254211
255212func (l * SwarmListener ) processServiceEventCreate (event Event ) {
256- ctx := l .ServiceCreateRemoveCancelManager . AddEvent ( event )
257- defer l .ServiceCreateRemoveCancelManager . RemoveEvent (event )
213+ ctx := l .ServiceCancelManager . Add ( context . Background (), event . ID , event . TimeNano )
214+ defer l .ServiceCancelManager . Delete (event . ID , event . TimeNano )
258215
259216 errChan := make (chan error )
260217
@@ -303,8 +260,8 @@ func (l *SwarmListener) processServiceEventCreate(event Event) {
303260}
304261
305262func (l * SwarmListener ) processServiceEventRemove (event Event ) {
306- ctx := l .ServiceCreateRemoveCancelManager . AddEvent ( event )
307- defer l .ServiceCreateRemoveCancelManager . RemoveEvent (event )
263+ ctx := l .ServiceCancelManager . Add ( context . Background (), event . ID , event . TimeNano )
264+ defer l .ServiceCancelManager . Delete (event . ID , event . TimeNano )
308265
309266 errChan := make (chan error )
310267
@@ -353,8 +310,8 @@ func (l *SwarmListener) connectNodeChannels() {
353310}
354311
355312func (l * SwarmListener ) processNodeEventCreate (event Event ) {
356- ctx := l .NodeCreateRemoveCancelManager . AddEvent ( event )
357- defer l .NodeCreateRemoveCancelManager . RemoveEvent (event )
313+ ctx := l .NodeCancelManager . Add ( context . Background (), event . ID , event . TimeNano )
314+ defer l .NodeCancelManager . Delete (event . ID , event . TimeNano )
358315
359316 errChan := make (chan error )
360317
@@ -398,8 +355,8 @@ func (l *SwarmListener) processNodeEventCreate(event Event) {
398355}
399356
400357func (l * SwarmListener ) processNodeEventRemove (event Event ) {
401- ctx := l .NodeCreateRemoveCancelManager . AddEvent ( event )
402- defer l .NodeCreateRemoveCancelManager . RemoveEvent (event )
358+ ctx := l .NodeCancelManager . Add ( context . Background (), event . ID , event . TimeNano )
359+ defer l .NodeCancelManager . Delete (event . ID , event . TimeNano )
403360
404361 errChan := make (chan error )
405362 go func () {
0 commit comments