Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
 public PeerEventData(PeerEventStatus eventStatus, PeerEventType peerEventType, long length, byte[] payload, string errorMsg = null)
 {
     EventStatus  = eventStatus;
     EventType    = peerEventType;
     Length       = length;
     Payload      = payload;
     ErrorMessage = errorMsg;
 }
Exemplo n.º 4
0
 void onPeerEventCallback(FunapiRpcPeer peer, PeerEventType type)
 {
     lock (peer_event_lock_)
     {
         if (peer_event_handler_ != null)
         {
             peer_event_handler_(peer.peer_id, type);
         }
     }
 }
Exemplo n.º 5
0
        void onEvent(PeerEventType type)
        {
            logInfo("Event: {0}", type);

            lock (event_lock)
            {
                if (event_handler_ != null)
                {
                    event_handler_(this, type);
                }
            }
        }
Exemplo n.º 6
0
        private PeerEventDataWrapper ParsePeerEvent(long length, PeerEventType eventType, byte[] unparsedPayload)
        {
            var leftovers = new List <byte>();
            var payload   = new byte[length - 1];
            int index     = 0;

            foreach (var unsortedByte in unparsedPayload)
            {
                if (index == length - 1)
                {
                    leftovers.Add(unsortedByte);
                    continue;
                }

                payload[index] = unsortedByte;
                index++;
            }

            var peerEventData = new PeerEventData(PeerEventStatus.Ok, eventType, length, payload);

            return(new PeerEventDataWrapper(peerEventData, leftovers.ToArray()));
        }
Exemplo n.º 7
0
 public PeerEventArgs(IPeer peer, PeerEventType actiontype)
 {
     Peer       = peer;
     Actiontype = actiontype;
 }
Exemplo n.º 8
0
 void onDisconnect(PeerEventType type)
 {
     onClose();
     onEvent(type);
 }