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.GameJoinRequest;
|
||||
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.NotificationResponse;
|
||||
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