XdccSend() public méthode

public XdccSend ( Packet aPacket ) : void
aPacket XG.Model.Domain.Packet
Résultat void
Exemple #1
0
        void RequestFromBot(Bot aBot)
        {
            if (aBot.State == Bot.States.Idle)
            {
                // check if the packet is already downloaded, or active - than disable it and get the next one
                Packet tPacket = aBot.OldestActivePacket();
                while (tPacket != null)
                {
                    File tFile = FileActions.TryGetFile(tPacket.RealName != "" ? tPacket.RealName : tPacket.Name, tPacket.RealSize != 0 ? tPacket.RealSize : tPacket.Size);
                    if (tFile != null && tFile.Connected)
                    {
                        _log.Warn("RequestFromBot(" + aBot + ") packet " + tPacket + " is already in use");
                        tPacket.Enabled = false;
                        tPacket         = aBot.OldestActivePacket();
                    }
                    else
                    {
                        string name = XG.Model.Domain.Helper.ShrinkFileName(tPacket.RealName != "" ? tPacket.RealName : tPacket.Name, 0);
                        _latestPacketRequests.RemoveExpiredItems();
                        if (_latestPacketRequests.Contains(name))
                        {
                            double time = _latestPacketRequests.GetMissingSeconds(name);
                            _log.Warn("RequestFromBot(" + aBot + ") packet name " + tPacket.Name + " is blocked for " + time + "ms");
                            AddBotToQueue(aBot, (int)time + 1);
                            return;
                        }

                        if (_server.Connected)
                        {
                            _log.Info("RequestFromBot(" + aBot + ") requesting packet #" + tPacket.Id + " (" + tPacket.Name + ")");
                            _client.XdccSend(tPacket);
                            _latestPacketRequests.Add(name, DateTime.Now.AddSeconds(Settings.Default.SamePacketRequestTime));

                            FireNotificationAdded(Notification.Types.PacketRequested, tPacket);
                        }

                        // create a timer to re request if the bot didnt recognized the privmsg
                        AddBotToQueue(aBot, Settings.Default.BotWaitTime);
                        break;
                    }
                }
            }
        }