package ru.m.connect; import haxework.signal.Signal; import haxe.io.Bytes; import promhx.Deferred; import promhx.Promise; import protohx.Message; import ru.m.connect.IConnection; class BaseConnection implements IConnection { public var handler(default, null):Signal; public var sendHandler(default, null):Signal; public var receiveHandler(default, null):Signal; public var connected(default, null):Bool; public var queue(default, null):PacketQueue; private var connectDeferred:Deferred>; public function new(i:Class) { queue = new PacketQueue(i); handler = new Signal(); sendHandler = new Signal(); receiveHandler = new Signal(); connectDeferred = new Deferred(); } public function connect():Promise> { throw "Not implemented"; } public function disconnect():Void { throw "Not implemented"; } public function pushData(bytes:Bytes):Void { #if proto_debug L.d('Proto', 'pushData: ${bytes.length}'); #end queue.addBytes(bytes); while (queue.hasMsg()) { var packet:I = queue.popMsg(); receive(packet); } } public function send(packet:O):Void { #if proto_debug L.d('Proto', 'send: ${packet}'); #end sendHandler.emit(packet); } public function receive(packet:I):Void { #if proto_debug L.d('Proto', 'receive: ${packet}'); #end receiveHandler.emit(packet); } }