| 146 | service.updater.interval = 0; |
| 147 | } |
| 148 | remove(service, callback) { |
| 149 | if ("string" === typeof service) { |
| 150 | service += ".local"; |
| 151 | service = this.monitors.findIndex(item => item.service === service); |
| 152 | if (service >= 0) { |
| 153 | callback = this.monitors[service].callbacks.findIndex(item => item === callback); |
| 154 | if (callback < 0) throw new Error("callback not found"); |
| 155 | this.monitors[service].callbacks.splice(callback, 1); |
| 156 | if (0 === this.monitors[service].callbacks.length) { |
| 157 | this.monitors[service].close = true; |
| 158 | Timer.clear(this.monitors[service].timer); |
| 159 | this.monitors.splice(service, 1); |
| 160 | } |
| 161 | } |
| 162 | } |
| 163 | else { |
| 164 | const index = this.services.indexOf(service); |
| 165 | if (index < 0) throw new Error("service not found"); |
| 166 | |
| 167 | this.services.splice(index, 1); |
| 168 | this.write(this.reply(null, 0x0F, service, true)); |
| 169 | |
| 170 | Timer.clear(service.timer); |
| 171 | delete service.timer; |
| 172 | Timer.clear(service.updater); |
| 173 | delete service.updater; |
| 174 | } |
| 175 | } |
| 176 | monitor(service, callback) { |
| 177 | service += ".local"; |
| 178 | let monitor = this.monitors.find(item => item.service === service); |