forked from LeenkxTeam/LNXSDK
P2P cx index
This commit is contained in:
@ -74,7 +74,7 @@ class CreateLeenkxNode extends LogicNode {
|
|||||||
lnxCn.isRelay = property1 == true;
|
lnxCn.isRelay = property1 == true;
|
||||||
|
|
||||||
lnxCn.onOpen = function() {
|
lnxCn.onOpen = function() {
|
||||||
Leenkx.data.set(net_Url, lnxCn.lastPeerCount);
|
Leenkx.data.set(net_Url, lnxCn.lastPeerIndex);
|
||||||
Leenkx.id.set(net_Url, lnxCn.lastPeerId);
|
Leenkx.id.set(net_Url, lnxCn.lastPeerId);
|
||||||
sock.onopen();
|
sock.onopen();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -23,7 +23,6 @@ class LeenkxCloseConnectionNode extends LogicNode {
|
|||||||
var id:String = inputs.length > 2 ? inputs[2].get() : null;
|
var id:String = inputs.length > 2 ? inputs[2].get() : null;
|
||||||
if (id != null && lnxCn != null) {
|
if (id != null && lnxCn != null) {
|
||||||
lnxCn.peers.remove(id);
|
lnxCn.peers.remove(id);
|
||||||
lnxCn.seenFired.remove(id);
|
|
||||||
}
|
}
|
||||||
runOutput(0);
|
runOutput(0);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -26,11 +26,11 @@ class LeenkxClient {
|
|||||||
|
|
||||||
public var peers:Map<String, PeerInfo> = [];
|
public var peers:Map<String, PeerInfo> = [];
|
||||||
public var seen:Map<String, Float> = [];
|
public var seen:Map<String, Float> = [];
|
||||||
public var seenFired:Map<String, Bool> = [];
|
|
||||||
public var pkToAddress:Map<String, String> = [];
|
public var pkToAddress:Map<String, String> = [];
|
||||||
public var isRelay:Bool = false;
|
public var isRelay:Bool = false;
|
||||||
public var lastPeerCount:Null<Int> = null;
|
public var lastPeerCount:Null<Int> = null;
|
||||||
public var lastPeerId:String = null;
|
public var lastPeerId:String = null;
|
||||||
|
public var lastPeerIndex:Int = 0;
|
||||||
|
|
||||||
public var serverAddress:String = null;
|
public var serverAddress:String = null;
|
||||||
public var heartbeatTimer:Null<haxe.Timer> = null;
|
public var heartbeatTimer:Null<haxe.Timer> = null;
|
||||||
@ -545,21 +545,19 @@ class LeenkxClient {
|
|||||||
function sawPeer(pk:String, ek:String, identifier:String):Void {
|
function sawPeer(pk:String, ek:String, identifier:String):Void {
|
||||||
var t = now();
|
var t = now();
|
||||||
var addr = addressFromPk(pk);
|
var addr = addressFromPk(pk);
|
||||||
var myAddr = address();
|
if (addr == address()) return;
|
||||||
var isSelf = (addr == myAddr);
|
|
||||||
var alreadySeen = seenFired.exists(addr);
|
|
||||||
if (!isSelf) {
|
|
||||||
if (!peers.exists(addr) || peers[addr].last + timeout < t) {
|
if (!peers.exists(addr) || peers[addr].last + timeout < t) {
|
||||||
peers.set(addr, {pk: pk, ek: ek, last: t});
|
var index = 0;
|
||||||
var packet = makePacket({y: PacketType.Ping});
|
var taken = true;
|
||||||
sendRaw(packet);
|
while (taken) {
|
||||||
} else {
|
taken = false;
|
||||||
var p = peers.get(addr);
|
index++;
|
||||||
p.ek = ek;
|
for (k in peers.keys()) {
|
||||||
p.last = t;
|
if (peers[k].index == index) { taken = true; break; }
|
||||||
}
|
}
|
||||||
if (!alreadySeen) {
|
}
|
||||||
seenFired.set(addr, true);
|
peers.set(addr, {pk: pk, ek: ek, last: t, index: index});
|
||||||
|
lastPeerIndex = index;
|
||||||
lastPeerId = addr;
|
lastPeerId = addr;
|
||||||
if (onOpen != null) onOpen();
|
if (onOpen != null) onOpen();
|
||||||
if (onSeen != null) onSeen(addr);
|
if (onSeen != null) onSeen(addr);
|
||||||
@ -567,7 +565,12 @@ class LeenkxClient {
|
|||||||
serverAddress = addr;
|
serverAddress = addr;
|
||||||
if (onServer != null) onServer(addr);
|
if (onServer != null) onServer(addr);
|
||||||
}
|
}
|
||||||
}
|
var packet = makePacket({y: PacketType.Ping});
|
||||||
|
sendRaw(packet);
|
||||||
|
} else {
|
||||||
|
var p = peers.get(addr);
|
||||||
|
p.ek = ek;
|
||||||
|
p.last = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,7 @@ typedef PeerInfo = {
|
|||||||
var pk:String;
|
var pk:String;
|
||||||
var ek:String;
|
var ek:String;
|
||||||
var last:Float;
|
var last:Float;
|
||||||
|
var index:Int;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef Packet = {
|
typedef Packet = {
|
||||||
|
|||||||
Reference in New Issue
Block a user