void onPeerEvent(FunapiRpcPeer peer, PeerEventType type) { onPeerEventCallback(peer, type); if (!active_) { return; } if (type == PeerEventType.kDisconnected || type == PeerEventType.kConnectionFailed || type == PeerEventType.kConnectionTimedOut) { if (!peer.abort && peer_list_.Exists(peer.uid)) { peer.Reconnect(); } if (peer == master_peer_) { onMasterDisconnected(peer); return; } } }
void onPeerEventBeforeConnect(FunapiRpcPeer peer, PeerEventType type) { onPeerEventCallback(peer, type); if (type == PeerEventType.kConnected) { peer.SetEventHandler(onPeerEvent); } else { int index = 0; if ((cur_index_ + 1) < option_.Addrs.Count) { index = cur_index_ + 1; } if (index == cur_index_) { if (!peer.abort) { peer.Reconnect(); } } else { peer_list_.Remove(peer); event_.Add(delegate { onConnect(index); }, 0.5f); } } }