public IScrapeTransport CreateTransport(IScrapeRequest request) { UdpScrapeRequestPacket requestPacket = new UdpScrapeRequestPacket(); if (request is IScrapeRequest2) { IScrapeRequest2 request2 = (IScrapeRequest2)request; if (request2.InfoHashList.Count > UdpScrapeTransport.MultiScrapeRange) throw new ArgumentOutOfRangeException("request", String.Format("UdpTransport supports IScrapeRequest2 with up to {0} items using MTU=1500 - {2} items specified", UdpScrapeTransport.MultiScrapeRange, 1500, request2.InfoHashList.Count)); requestPacket.info_hash = request2.InfoHashList.ToArray(); } else { requestPacket.info_hash = new InfoHash[1] { request.InfoHash }; } UdpScrapeTransport transport = new UdpScrapeTransport(Tracker.Ip, Tracker.AnnounceUrl.Port, 60, requestPacket); transport.Request = request; return transport; }
public UdpScrapeTransport(IPAddress address, int port, int timeout, UdpScrapeRequestPacket udpRequest) : base(address, port, timeout) { UdpRequset = udpRequest; }