[common] add DesktopConnection

This commit is contained in:
2019-05-21 17:44:48 +03:00
parent 7984d8282c
commit a5722dfa9d
29 changed files with 646 additions and 217 deletions

View File

@@ -1,18 +1,18 @@
package ru.m.connect.flash;
import ru.m.connect.IConnection.ConnectionEvent;
import promhx.Promise;
import flash.utils.Endian;
import haxe.io.BytesOutput;
import protohx.Message;
import haxe.io.Bytes;
import flash.events.ErrorEvent;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.events.SecurityErrorEvent;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.Socket;
import flash.utils.Endian;
import haxe.io.Bytes;
import haxe.io.BytesOutput;
import promhx.Deferred;
import promhx.Promise;
import protohx.Message;
import ru.m.connect.IConnection;
class FlashConnection<O:Message, I:Message> extends BaseConnection<O, I> {
@@ -20,8 +20,8 @@ class FlashConnection<O:Message, I:Message> extends BaseConnection<O, I> {
private var port:Int;
private var socket:Socket;
public function new(host:String, port:Int, i:Class<I>) {
super(i);
public function new(host:String, port:Int, inputFactory:Class<I>) {
super(inputFactory);
this.host = host;
this.port = port;
connected = false;
@@ -37,14 +37,15 @@ class FlashConnection<O:Message, I:Message> extends BaseConnection<O, I> {
override public function connect():Promise<IConnection<O, I>> {
socket.connect(host, port);
connectDeferred = new Deferred();
return connectDeferred.promise();
}
override public function disconnect():Void {
if (socket.connected) {
socket.close();
//connected = false;
//handler.emit(ConnectionEvent.DISCONNECTED);
connected = false;
handler.emit(ConnectionEvent.DISCONNECTED);
}
}
@@ -52,13 +53,19 @@ class FlashConnection<O:Message, I:Message> extends BaseConnection<O, I> {
socket.close();
connected = false;
handler.emit(ConnectionEvent.ERROR(event));
connectDeferred.throwError(event);
if (connectDeferred != null) {
connectDeferred.throwError(event);
connectDeferred = null;
}
}
private function onConnect(_):Void {
connected = true;
handler.emit(ConnectionEvent.CONNECTED);
connectDeferred.resolve(this);
if (connectDeferred != null) {
connectDeferred.resolve(this);
connectDeferred = null;
}
}
private function onClose(_):Void {
@@ -86,4 +93,4 @@ class FlashConnection<O:Message, I:Message> extends BaseConnection<O, I> {
socket.writeBytes(cast bytes.getData());
socket.flush();
}
}
}