[common] udpate proto

This commit is contained in:
2018-03-01 12:05:06 +03:00
parent 634f5ad2d0
commit 45fab2c0b5
15 changed files with 96 additions and 63 deletions

View File

@@ -1,16 +1,17 @@
package ru.m.connect;
import promhx.Deferred;
import hxsignal.impl.Signal1;
import haxe.io.Bytes;
import promhx.Deferred;
import promhx.Promise;
import protohx.Message;
import ru.m.connect.IConnection;
import ru.m.signal.Signal;
class BaseConnection<O:Message, I:Message> implements IConnection<O, I> {
public var handler(default, default):Signal1<ConnectionEvent>;
public var packetHandler(default, default):Signal1<I>;
public var handler(default, null):Signal<ConnectionEvent>;
public var sendHandler(default, null):Signal<O>;
public var receiveHandler(default, null):Signal<I>;
public var connected(default, null):Bool;
public var queue(default, null):PacketQueue<I>;
@@ -18,8 +19,9 @@ class BaseConnection<O:Message, I:Message> implements IConnection<O, I> {
public function new(i:Class<I>) {
queue = new PacketQueue<I>(i);
handler = new Signal1<ConnectionEvent>();
packetHandler = new Signal1<I>();
handler = new Signal<ConnectionEvent>();
sendHandler = new Signal<O>();
receiveHandler = new Signal<I>();
connectDeferred = new Deferred();
}
@@ -32,14 +34,21 @@ class BaseConnection<O:Message, I:Message> implements IConnection<O, I> {
}
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();
packetHandler.emit(packet);
receive(packet);
}
}
public function send(packet:O):Void {
#if proto_debug L.d("Send", Type.getClassName(Type.getClass(packet)).split(".").pop()); #end
#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);
}
}