[client] add ControlBus

This commit is contained in:
2019-06-18 12:14:04 +03:00
parent f999c66fea
commit 2ff374abb6
16 changed files with 303 additions and 139 deletions

View File

@@ -0,0 +1,30 @@
package ru.m.control;
import ru.m.control.IControlBus;
import haxework.signal.Signal;
class ControlBus implements IControlBus {
public var signal(default, null):Signal3<DeviceType, DeviceAction, Bool>;
private var connections:Map<DeviceType, DeviceAction->Bool->Void>;
public function new() {
signal = new Signal3();
connections = new Map();
}
public function connect(device:IControlDevice):Void {
var connector = function(action:DeviceAction, on:Bool):Void {
signal.emit(device.type, action, on);
}
connections.set(device.type, connector);
device.signal.connect(connector);
}
public function disconnect(device:IControlDevice):Void {
if (connections.exists(device.type)) {
device.signal.disconnect(connections.get(device.type));
connections.remove(device.type);
}
}
}