public static void ConnectToPeer(HumbleNet.PeerId peer) { if (peer != _myPeer && !_pendingPeers.Contains(peer) && !_remotePlayers.ContainsKey(peer)) { _pendingPeers.Add(peer); } }
void processKnownPeers(TestClient.HelloPeer message) { for (var i = 0; i < message.PeersLength; ++i) { HumbleNet.PeerId newPeer = (HumbleNet.PeerId)message.GetPeers(i); connectToPeer(newPeer); } }
void connectToPeer(HumbleNet.PeerId peer) { if (peer != myPeer && !pendingPeers.Contains(peer) && !connectedPeers.Contains(peer)) { Console.WriteLine("Connecting to Peer {0}", peer); pendingPeers.Insert(0, peer); } }
public static void AddConnectedPeer(HumbleNet.PeerId peer, GameObject obj) { _pendingPeers.Remove(peer); if (!_remotePlayers.ContainsKey(peer)) { _remotePlayers.Add(peer, obj); } }
void connectedToPeer(HumbleNet.PeerId peer) { pendingPeers.Remove(peer); if (!connectedPeers.Contains(peer)) { Console.WriteLine("Connected to Peer {0}", peer); connectedPeers.Insert(0, peer); } }
private void CheckPeer() { if (_myPeer.isInvalid()) { _myPeer = HumbleNetAPI.myPeer; if (_myPeer.isValid()) { peerIdText.text = string.Format("Peer ID: {0}", _myPeer); } } }
public static bool SendHello(HumbleNet.PeerId peer, bool is_response = false) { var fbb = new FlatBufferBuilder(16); var knownPeers = buildKnownPeers(fbb); var hello = Networking.HelloPeer.CreateHelloPeer(fbb, knownPeers, is_response); var msg = Networking.Message.CreateMessage(fbb, Networking.MessageSwitch.HelloPeer, hello.Value); Networking.Message.FinishMessageBuffer(fbb, msg); return(HumbleNet.P2P.SendTo(getFlatBufferData(fbb), peer, HumbleNet.SendMode.SEND_RELIABLE, CHANNEL) >= 0); }
bool sendHello(HumbleNet.PeerId peer) { Console.WriteLine("Try Hello {0}", peer); var fbb = new FlatBufferBuilder(1); var knownPeers = buildKnownPeers(fbb); var pos = TestClient.HelloPeer.CreateHelloPeer(fbb, knownPeers); var outmsg = TestClient.Message.CreateMessage(fbb, TestClient.MessageSwitch.HelloPeer, pos.Value); TestClient.Message.FinishMessageBuffer(fbb, outmsg); return(sendMessage(peer, getFlatBufferData(fbb)) >= 0); }
static public void Shutdown() { #if !UNITY_WEBGL && USE_THREAD Poller.Shutdown(); #endif if (_isInitialized) { HumbleNet.Shutdown(); _isInitialized = false; _isConnected = false; _myPeer = HumbleNet.PeerId.Invalid; } }
public static void DropPeer(HumbleNet.PeerId peer) { Console.WriteLine("Dropping peer: {0}", peer); // peer disconnected so we should remove them from the available peers. if (_remotePlayers.ContainsKey(peer)) { GameObject obj = _remotePlayers[peer]; _remotePlayers.Remove(peer); Destroy(obj); } _pendingPeers.Remove(peer); HumbleNet.P2P.DisconnectPeer(peer); }
// Use this for initialization static public void Init(string server) { if (!_isInitialized) { _myPeer = HumbleNet.PeerId.Invalid; if (!HumbleNet.Init()) { throw new System.DllNotFoundException(string.Format("Could not locate HumbleNet! : {0}", HumbleNet.getError())); } HumbleNet.P2P.Initialize(server, "WebGLRoller", "<WebGLRoller secret>", null); HumbleNet.P2P.Wait(0); #if !UNITY_WEBGL && USE_THREAD Poller.Init(); #endif _isInitialized = true; } }
void processMessage(HumbleNet.PeerId peer, byte[] data) { var bb = new ByteBuffer(data); var msg = TestClient.Message.GetRootAsMessage(bb); switch (msg.MessageType) { case TestClient.MessageSwitch.HelloPeer: { var hello = (TestClient.HelloPeer)msg.GetMessage(new TestClient.HelloPeer()); Console.WriteLine("Received hello from peer {0} response {1}", peer, hello.IsResponse); connectedToPeer(peer); processKnownPeers(hello); if (!hello.IsResponse) { var fbb = new FlatBufferBuilder(1); var knownPeers = buildKnownPeers(fbb); var pos = TestClient.HelloPeer.CreateHelloPeer(fbb, knownPeers, true); var outmsg = TestClient.Message.CreateMessage(fbb, TestClient.MessageSwitch.HelloPeer, pos.Value); TestClient.Message.FinishMessageBuffer(fbb, outmsg); sendMessage(peer, getFlatBufferData(fbb)); } } break; case TestClient.MessageSwitch.Chat: { var chat = (TestClient.Chat)msg.GetMessage(new TestClient.Chat()); Console.WriteLine("Peer {0}: {1}", peer, chat.Message); } break; default: Console.WriteLine("Unexpected message {0}", msg.MessageType); break; } }
int sendMessage(HumbleNet.PeerId peer, byte[] data) { return(HumbleNet.P2P.SendTo(data, peer, HumbleNet.SendMode.SEND_RELIABLE, CHANNEL)); }
bool Run() { HumbleNet.P2P.Wait(100); if (myPeer.isInvalid()) { myPeer = HumbleNet.P2P.getMyPeerId(); if (myPeer.isValid()) { Console.WriteLine("My Peer is {0}", myPeer); connected = true; } } if (connected) { List <HumbleNet.PeerId> toRemove = null; bool done = false; while (!done) { byte[] data; HumbleNet.PeerId otherPeer; if (HumbleNet.P2P.RecvFrom(out data, out otherPeer, CHANNEL) > 0) { processMessage(otherPeer, data); } else if (otherPeer.isValid()) { if (toRemove == null) { toRemove = new List <HumbleNet.PeerId>(); } toRemove.Insert(0, otherPeer); } else { done = true; } } DateTime now = DateTime.UtcNow; var span = now.Subtract(last); if (span.TotalSeconds > 1) { foreach (var peer in pendingPeers) { if (!sendHello(peer)) { if (toRemove == null) { toRemove = new List <HumbleNet.PeerId>(); } toRemove.Insert(0, peer); } } last = now; } // disconnect lost peers if (toRemove != null) { foreach (var peer in toRemove) { disconnectPeer(peer); } } } return(_running); }
void disconnectPeer(HumbleNet.PeerId peer) { Console.WriteLine("Disconnecting Peer {0}", peer); pendingPeers.Remove(peer); connectedPeers.Remove(peer); }