示例#1
0
 public virtual void ProcessEvent(Node node, Event e)
 {
     switch (e.Type)
     {
         case EventType.RECV:
             node.Recv((Packet)e.Obj);
             break;
         case EventType.SND_BCN:
             ((Reader)node).SendBeacon(currentTime);
             break;
         case EventType.SND_DATA:
             Packet pkg = (Packet)e.Obj;
             if (pkg.SrcSenderSeq < 0 && node.type == NodeType.READER)//未定该数据包的id
                 ((Reader)node).InitPacketSeq(pkg);
             node.SendData(pkg);
             break;
         case EventType.CHK_NB:
             ((Reader)node).CheckNeighbors();
             break;
         case EventType.CHK_NEAR_OBJ:
             ((Reader)node).CheckNearObjects();
             break;
         case EventType.CHK_PEND_PKT:
             ((Reader)node).CheckPendingPackets();
             break;
         case EventType.QRY_LOCATION:
             ((Querier)node).SendQueryRequest((int)e.Obj);
             break;
         default:
             throw new Exception("Unknown event type: " + e.Type);
     }
 }