Explorar el Código

[fix] delete

master
extra1563 hace 4 años
padre
commit
3925f1e625
Se han modificado 1 ficheros con 11 adiciones y 30 borrados
  1. 11
    30
      src/broker/modules/subscription.go

+ 11
- 30
src/broker/modules/subscription.go Ver fichero

@@ -4,16 +4,15 @@ import (
4 4
 	"errors"
5 5
 )
6 6
 
7
+// Structure for managing subscriptions
7 8
 type sub_manager struct {
8
-	list topicList
9
-
10
-	/* Manage sub# */
11
-	count_sub  int                  // Subscription #
12
-	emptylist  []int                // To administrate sub #
13
-	ip2sub     map[string][]int     // ip2sub[ip] = sub# ...
14
-	sub2ip     map[int]string       // sub2ip[sub#] = ip
15
-	sub2node   map[int][]nodeInfo // sub2node[sub#] = node_addr ...
16
-	israngesub map[int]bool         // To manage when deleted
9
+	list 	   	topicList			// Data Structure for Manage TopicNode
10
+	count_sub  	int                 // Subscription#
11
+	emptylist  	[]int               // For administrate Subscription#(Deleted)
12
+	ip2sub     	map[string][]int    // For mapping {ip : Sub#s List}
13
+	sub2ip     	map[int]string      // For mapping {Sub# : ip}
14
+	sub2node   	map[int][]nodeInfo 	// For mapping {Sub# : NodeInfo List}
15
+	israngesub 	map[int]bool        // To manage when deleted
17 16
 }
18 17
 
19 18
 type nodeInfo struct{
@@ -180,6 +179,7 @@ func (manager *sub_manager) addSubscription(msg MsgUnit) error {
180 179
 		}
181 180
 		addValNodeList = append(addValNodeList, valptr)
182 181
 		manager.sub2node[subnumber] = append(manager.sub2node[subnumber], nodeInfo{addValNodeList, topic})
182
+		manager.israngesub[subnumber] = false
183 183
 		valptr.insertSub(operator[0], subnumber, true)
184 184
 		return nil // AddSubscription ok
185 185
 	} else {
@@ -214,6 +214,7 @@ func (manager *sub_manager) addSubscription(msg MsgUnit) error {
214 214
 
215 215
 		} else {
216 216
 			// if they are enclosed in '||' -> Insert Value to single_operator_list
217
+			manager.israngesub[subnumber] = false
217 218
 			valptr1.insertSub(operator[0], subnumber, true)
218 219
 			valptr2.insertSub(operator[2], subnumber, true)
219 220
 		}
@@ -235,6 +236,7 @@ func (manager *sub_manager) delete(from string) error {
235 236
 		for j := 0; j < len(manager.sub2node[sub]); j++ {
236 237
 			nodeinfo := manager.sub2node[sub][j]
237 238
 			node := nodeinfo.valNodeList
239
+
238 240
 			if manager.israngesub[sub] {
239 241
 				for k := 0; k < len(node); k++ {
240 242
 					pos := findSub(node[k].range2sub_s, sub)
@@ -260,17 +262,6 @@ func (manager *sub_manager) delete(from string) error {
260 262
 						node[k].range2sub_eb = remove(node[k].range2sub_eb, pos)
261 263
 						manager.emptylist = append(manager.emptylist, sub)
262 264
 					}
263
-
264
-					isempty := node[k].isEmpty()
265
-
266
-					// Delete if Value Node is empty
267
-					if isempty && node[k] != nil {
268
-						prev_node := node[k].prev
269
-						next_node := node[k].next
270
-
271
-						prev_node.next = node[k].next
272
-						next_node.prev = node[k].prev
273
-					}
274 265
 				}
275 266
 			} else {
276 267
 				for k := 0; k < len(node); k++ {
@@ -304,16 +295,6 @@ func (manager *sub_manager) delete(from string) error {
304 295
 						manager.emptylist = append(manager.emptylist, sub)
305 296
 					}
306 297
 
307
-					isempty := node[k].isEmpty()
308
-
309
-					// Delete if Value Node is empty
310
-					if isempty && node[k] != nil {
311
-						prevNode := node[k].prev
312
-						nextNode := node[k].next
313
-
314
-						prevNode.next = node[k].next
315
-						nextNode.prev = node[k].prev
316
-					}
317 298
 				}
318 299
 			}
319 300
 		}

Loading…
Cancelar
Guardar