Compare commits
1
Commits
online
..
347e20ab6b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
347e20ab6b |
@@ -15,6 +15,7 @@ import ru.m.puzzlez.proto.pack.GameActionRequest;
|
|||||||
import ru.m.puzzlez.proto.pack.GameCreateRequest;
|
import ru.m.puzzlez.proto.pack.GameCreateRequest;
|
||||||
import ru.m.puzzlez.proto.pack.GameJoinRequest;
|
import ru.m.puzzlez.proto.pack.GameJoinRequest;
|
||||||
import ru.m.puzzlez.proto.pack.GameLeaveRequest;
|
import ru.m.puzzlez.proto.pack.GameLeaveRequest;
|
||||||
|
import ru.m.puzzlez.proto.pack.GameListRequest;
|
||||||
import ru.m.puzzlez.proto.pack.GameListResponse;
|
import ru.m.puzzlez.proto.pack.GameListResponse;
|
||||||
import ru.m.puzzlez.proto.pack.NotificationResponse;
|
import ru.m.puzzlez.proto.pack.NotificationResponse;
|
||||||
import ru.m.puzzlez.proto.pack.Request;
|
import ru.m.puzzlez.proto.pack.Request;
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
package ru.m.puzzlez.net;
|
|
||||||
|
|
||||||
import hw.connect.IConnection;
|
|
||||||
import hw.signal.Signal;
|
|
||||||
import promhx.Deferred;
|
|
||||||
import promhx.Promise;
|
|
||||||
|
|
||||||
enum NetworkState {
|
|
||||||
CONNECT;
|
|
||||||
ACTIVE;
|
|
||||||
DISCONNECT;
|
|
||||||
ERROR(error:Dynamic);
|
|
||||||
}
|
|
||||||
|
|
||||||
class ReconnectTimer {
|
|
||||||
private var interval:Float;
|
|
||||||
private var lastConnected:Float;
|
|
||||||
private var lastActivity:Float;
|
|
||||||
private var lastError:Float;
|
|
||||||
private var next:Float;
|
|
||||||
|
|
||||||
public function new(interval:Float) {
|
|
||||||
this.interval = interval;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function connect():Promise<Void> {
|
|
||||||
d = new Deferred();
|
|
||||||
d.resolve();
|
|
||||||
return d.promise();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function onActivity() {}
|
|
||||||
|
|
||||||
public function onError() {}
|
|
||||||
}
|
|
||||||
|
|
||||||
class NetworkManager {
|
|
||||||
public var state(default, null):Signal<NetworkState>;
|
|
||||||
|
|
||||||
private var reconnectTimer:ReconnectTimer;
|
|
||||||
|
|
||||||
public function new(connection:IConnection<Dynamic, Dynamic>) {
|
|
||||||
this.reconnectTimer = new ReconnectTimer(5.0);
|
|
||||||
connection.handler.connect(onConnectionChange);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function reconnect() {
|
|
||||||
return this.reconnectTimer.connect().then(() => {
|
|
||||||
state.emit(CONNECT);
|
|
||||||
connection.connect();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private function onConnectionChange(event:ConnectionEvent):Void {
|
|
||||||
switch event {
|
|
||||||
case CONNECTED:
|
|
||||||
state.emit(ACTIVE);
|
|
||||||
case DISCONNECTED:
|
|
||||||
state.emit(DISCONNECT);
|
|
||||||
case ERROR(error):
|
|
||||||
state.emit(ERROR(error));
|
|
||||||
this.reconnect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user