Code Duplication    Length = 10-11 lines in 3 locations

opcua/server/subscription_service.py 3 locations

@@ 69-79 (lines=11) @@
66
                    sub.stop()
67
                    res.append(ua.StatusCode())
68
        return res
69
70
    def publish(self, acks):
71
        self.logger.info("publish request with acks %s", acks)
72
        with self._lock:
73
            for subid, sub in self.subscriptions.items():
74
                sub.publish([ack.SequenceNumber for ack in acks if ack.SubscriptionId == subid])
75
76
    def create_monitored_items(self, params):
77
        self.logger.info("create monitored items")
78
        with self._lock:
79
            if params.SubscriptionId not in self.subscriptions:
80
                res = []
81
                for _ in params.ItemsToCreate:
82
                    response = ua.MonitoredItemCreateResult()
@@ 57-67 (lines=11) @@
54
        except KeyError:
55
            raise utils.ServiceError(ua.StatusCodes.BadSubscriptionIdInvalid)
56
57
    def delete_subscriptions(self, ids):
58
        self.logger.info("delete subscriptions: %s", ids)
59
        res = []
60
        for i in ids:
61
            with self._lock:
62
                if i not in self.subscriptions:
63
                    res.append(ua.StatusCode(ua.StatusCodes.BadSubscriptionIdInvalid))
64
                else:
65
                    sub = self.subscriptions.pop(i)
66
                    sub.stop()
67
                    res.append(ua.StatusCode())
68
        return res
69
70
    def publish(self, acks):
@@ 81-90 (lines=10) @@
78
        with self._lock:
79
            if params.SubscriptionId not in self.subscriptions:
80
                res = []
81
                for _ in params.ItemsToCreate:
82
                    response = ua.MonitoredItemCreateResult()
83
                    response.StatusCode = ua.StatusCode(ua.StatusCodes.BadSubscriptionIdInvalid)
84
                    res.append(response)
85
                return res
86
            return self.subscriptions[params.SubscriptionId].monitored_item_srv.create_monitored_items(params)
87
88
    def modify_monitored_items(self, params):
89
        self.logger.info("modify monitored items")
90
        with self._lock:
91
            if params.SubscriptionId not in self.subscriptions:
92
                res = []
93
                for _ in params.ItemsToModify: