public CElement this[byte[] key] { get { try { CElement result = null; lock (m_FileList.SyncRoot) { foreach (CElement element in m_FileList) { if (CKernel.SameHash(ref key, ref element.File.FileHash)) { result = element; break; } } } return(result); } catch { return(null); } } }
private int m_FindFriend(uint ID, byte[] ClientHash, ushort Port) { //First: i try to locate Friend with UserHash if (ClientHash != null) { for (int n = 0; n != List.Count; n++) { byte[] hashFriend = (byte[])((SFriend)List[n]).UserHash; if (hashFriend != null) { if (CKernel.SameHash(ref ClientHash, ref hashFriend)) { return(n); } } } } //If i did not locate Friend with UserHash, i try to locate Friend with IP&Port for (int n = 0; n != List.Count; n++) { if ((((SFriend)List[n]).ID == ID) && (((SFriend)List[n]).Port == Port)) { return(n); } } return(-1); }
private bool m_Contains(byte[] fileHash) { foreach (CElement element in m_FileList) { if (CKernel.SameHash(ref fileHash, ref element.File.FileHash)) { return(true); } } return(false); }
public CSourceOld GetSourceOld(byte[] UserHash) { lock (m_ArrayList.SyncRoot) { foreach (CSourceOld sourceOld in m_ArrayList) { if (CKernel.SameHash(ref UserHash, ref sourceOld.UserHash)) { return(sourceOld); } } } return(null); }
public void AddClientToFile(CClient client, byte[] FileHash) { if (client.DownFileHash == null) { client.DownFileHash = FileHash; CKernel.FilesList.AddSource(FileHash, ref client); } else { if (CKernel.SameHash(ref FileHash, ref client.DownFileHash)) { CKernel.FilesList.AddSource(FileHash, ref client); } else { client.AddOtherDownloadFile(CKernel.HashToString(FileHash)); } } }
public CCCmdCachedMultiBlockFile(ArrayList cachedBlocks, uint IPProxy, byte[] fileHash, byte[] fileStatus, MemoryStream buffer) { if ((cachedBlocks != null) && (cachedBlocks.Count != 0)) { BinaryWriter writer1 = new BinaryWriter(buffer); DonkeyHeader header1 = new DonkeyHeader(0x21, writer1, Protocol.ProtocolType.Ant); this.n = 0; writer1.Write(this.n); writer1.Write(IPProxy); writer1.Write(fileHash); foreach (CCachedBlock block1 in cachedBlocks) { if (((block1.Element == null) || (block1.Element.File == null)) || !CKernel.SameHash(ref fileHash, ref block1.Element.File.FileHash)) { continue; } uint num1 = CHash.GetChunkNumberAt(block1.StartOffset); if (fileStatus[(int)((IntPtr)num1)] == 0) { writer1.Write(block1.IPClient); writer1.Write(block1.PortClient); writer1.Write(block1.StartOffset); writer1.Write(block1.EndOffset); writer1.Write(block1.Key); writer1.Write(block1.ID); this.n = (ushort)(this.n + 1); } } header1.Packetlength = (((uint)writer1.BaseStream.Length) - header1.Packetlength) + 1; writer1.Seek(0, SeekOrigin.Begin); header1.Serialize(writer1); writer1.Write(this.n); } }