示例#1
0
        public void Remove(VirtualSensor virtualSensor)
        {
            VirtualClient virtualClient = virtualSensor.VirtualClient;

            this.vcGroup.Remove(virtualClient);
            this.station.TransmitInstantDisappearance(virtualClient);
            virtualSensor.SetVersion(this.station.ID, this.station.PermanentAppearanceVersion);
        }
示例#2
0
        public void Add(VirtualSensor virtualSensor)
        {
            VirtualClient virtualClient = virtualSensor.VirtualClient;

            this.vcGroup.Add(virtualClient);
            this.station.TransmitPermanentAppearance(virtualClient, virtualSensor.GetVersion(this.station.ID));
            this.station.TransmitInstantAppearance(virtualClient);
        }
示例#3
0
        private void TransferMessage(int id, EventArgs <ArraySegment <byte> > e)
        {
            VirtualClient virtualClient = this.virtualClientList[id & 65535];

            if (virtualClient != null && virtualClient.ID == id)
            {
                virtualClient.ProcessReceive(e);
            }
        }
示例#4
0
        private void RemoveVirtualClient(int id)
        {
            VirtualClient virtualClient = this.virtualClientList[id & 65535];

            if (virtualClient != null && virtualClient.ID == id)
            {
                virtualClient.ProcessDisconnect();
                this.virtualClientList[id & 65535] = null;
            }
        }
        public void Remove(VirtualClient virtualClient)
        {
            if (virtualClient.Server != this.server)
            {
                throw new ArgumentException("Different virtual server.");
            }
            Packet packet = new Packet(0)
            {
                InstanceId = (long)VirtualPacketFlag.GenerateFlag(TransrouterMessage.RemoveClientGroupMember, virtualClient.ID)
            };

            VirtualPacketFlag.SetSecondaryTargetID(packet, this.id);
            this.server.Transmit(packet);
        }
示例#6
0
        private VirtualClient AddVirtualClient(int id, int ip, int port)
        {
            VirtualClient virtualClient = this.virtualClientList[id & 65535];

            if (virtualClient != null)
            {
                if (virtualClient.ID == id)
                {
                    return(virtualClient);
                }
                this.RemoveVirtualClient(virtualClient.ID);
            }
            virtualClient = new VirtualClient(this, id, ip, port);
            this.virtualClientList[id & 65535] = virtualClient;
            EventHandler <EventArgs <VirtualClient> > clientAccept = this.ClientAccept;

            if (clientAccept != null)
            {
                clientAccept(this, new EventArgs <VirtualClient>(virtualClient));
            }
            return(virtualClient);
        }
示例#7
0
 public VirtualSensor(VirtualClient virtualClient)
 {
     this.virtualClient = virtualClient;
     this.versionList   = new SortedDictionary <int, long>();
 }