wangrong
2025-09-23 f19a0e925da02a08b88784a534b16ec6d833df4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# -*- coding: utf-8 -*-
 
#!/usr/bin/python
# -*- coding: utf-8 -*
import paho.mqtt.client as mqtt
from linkListUtil import Node, LinkedList
 
class inside_option:
 
    def __init__(self):
        self.cases = {}
 
    def valuecontrol(self, condition):
        def decorator(func):
            self.cases[condition] = func
            return func
        return decorator
    
    def default(self):
        print('defual value')
 
    def switch(self, option):
        case_func = self.cases.get(option, self.default)
        case_func()
 
insideH = inside_option()
 
@insideH.valuecontrol(0)
def outside(objs: LinkedList, x, client: mqtt.Client ):
    print('case 0')
    node = objs.find_by_value(x['object_id'])
    if node is None:
        objs.insert_value_to_head(x['object_id'], [x])
        node = objs.find_by_value(x['object_id'])
        if x['isInside'] == 1:
            client.publish(send_topic[0], json.dumps(x))
            data_queue.put(node.track)
    else :
        obj0 = node.track[0]
        client.publish(send_topic[2],x['object_id'])
        objs.delete_by_value(x['object_id'], node.track)
        data_queue.put(node.track)
        node.track.append(x)
 
@insideH.valuecontrol(1)
def inside():
    print('case 1')
 
@insideH.valuecontrol(-1)
def lost():
    print('case -1')
 
if __name__ == '__main__':
    
    insideH.switch(1)
    insideH.switch(2)
    insideH.switch(-1)