/// <summary> /// Reads the server data from an BinaryReader. /// </summary> /// <param name="reader">Specify the BinaryReader to load the server data.</param> public void Load(BinaryReader reader) { uint parameters; CParameterReader parameterReader; parameters = reader.ReadUInt32(); for (uint i = 0; i != parameters; i++) { parameterReader = new CParameterReader(reader); switch ((Protocol.ServerTag)parameterReader.id) { case Protocol.ServerTag.Name: m_Name = parameterReader.valorString; break; case Protocol.ServerTag.Description: m_Description = parameterReader.valorString; break; case Protocol.ServerTag.Preference: m_Preference = (Constants.ServerPriority)parameterReader.valorNum; break; case Protocol.ServerTag.Ping: m_LastPingTime = parameterReader.valorNum; break; case Protocol.ServerTag.DynIP: m_DynamicIP = parameterReader.valorString; break; case Protocol.ServerTag.Fails: m_nFails = parameterReader.valorNum; break; case Protocol.ServerTag.MaxUsers: m_MaxUsers = parameterReader.valorNum; break; default: if (parameterReader.nombreParam == null) { break; } if (parameterReader.nombreParam.Equals("users")) { m_Users = parameterReader.valorNum; } else if (parameterReader.nombreParam.Equals("files")) { m_Files = parameterReader.valorNum; } break; } } }
private uint m_ExtractResult(BinaryReader reader, CSearcher search) { CParameterReader parameterReader; byte[] HashEncontrado = reader.ReadBytes(16); uint ip = reader.ReadUInt32(); ushort port = reader.ReadUInt16(); uint nParametros = reader.ReadUInt32(); string fileName = "?"; uint fileSize = 0; uint nSources = 1; string codec = ""; uint bitrate = 0; string length = ""; bool complete = false; for (uint param = 0; param != nParametros; param++) { parameterReader = new CParameterReader(reader); switch ((Protocol.FileTag)parameterReader.id) { case Protocol.FileTag.Name: fileName = parameterReader.valorString; break; case Protocol.FileTag.Size: fileSize = parameterReader.valorNum; break; case Protocol.FileTag.Sources: nSources = parameterReader.valorNum; break; case Protocol.FileTag.Completed: complete = parameterReader.valorNum > 0; break; default: if (parameterReader.nombreParam == Protocol.FileExtraTags.codec.ToString()) { codec = parameterReader.valorString; } else if (parameterReader.nombreParam == Protocol.FileExtraTags.length.ToString()) { length = parameterReader.valorString; } else if (parameterReader.nombreParam == Protocol.FileExtraTags.bitrate.ToString()) { bitrate = parameterReader.valorNum; } //Debug.WriteLine(parameterReader.id+" name: "+parameterReader.nombreParam+" valString:"+parameterReader.valorString+" valNum: "+parameterReader.valorNum); break; } } if (fileSize < Protocol.PartSize) { complete = true; } search.AddFileFound(HashEncontrado, fileName, fileSize, nSources, codec, length, bitrate, complete, ip, port); return(nSources); }
private bool m_LoadKnownFiles(string filefullpath, bool showErrorMessage) { FileStream knownmet = null; BinaryReader reader = null; if (filefullpath.Length == 0) { filefullpath = Path.Combine(CKernel.DllDirectory, "known.met"); } try { knownmet = File.OpenRead(filefullpath); reader = new BinaryReader(knownmet); if (!Enum.IsDefined(typeof(Protocol.KnownMet), reader.ReadByte())) // if (reader.ReadByte() != 0x0E) { reader.Close(); knownmet.Close(); CLog.Log(Constants.Log.Notify, "KNWMET_INVALID"); return(false); } int nFiles = reader.ReadInt32(); m_KnownMetList = new Hashtable(nFiles); for (uint i = 0; i != nFiles; i++) { CKnownFileAttributes attributesKnownFile = new CKnownFileAttributes(); attributesKnownFile.Date = new DateTime(((long)reader.ReadUInt32() * 10000000L) + 621355968000000000L); attributesKnownFile.FileHash = reader.ReadBytes(16); ushort nChunks = reader.ReadUInt16(); attributesKnownFile.HashSet = new ArrayList(nChunks); for (uint chunk = 0; chunk != nChunks; chunk++) { attributesKnownFile.HashSet.Add(reader.ReadBytes(16)); } CParameterReader ParameterReader; uint nparameters = reader.ReadUInt32(); for (uint parameter = 0; parameter != nparameters; parameter++) { ParameterReader = new CParameterReader(reader); switch ((Protocol.FileTag)ParameterReader.id) { case Protocol.FileTag.Name: attributesKnownFile.FileName = ParameterReader.valorString; break; case Protocol.FileTag.Size: attributesKnownFile.Size = ParameterReader.valorNum; break; case Protocol.FileTag.Priority: attributesKnownFile.Priority = (Constants.Priority)ParameterReader.valorNum; break; case Protocol.FileTag.Permissions: attributesKnownFile.Permisions = (byte)ParameterReader.valorNum; break; case Protocol.FileTag.Comment: attributesKnownFile.Comment = ParameterReader.valorString; break; case Protocol.FileTag.Rating: attributesKnownFile.Rating = (byte)ParameterReader.valorNum; break; default: break; //faltan los parametros para las estadisticas.... } } if (!m_KnownMetList.ContainsKey(attributesKnownFile.FileName + (attributesKnownFile.Date.Ticks / 10000000L).ToString())) { m_KnownMetList.Add(attributesKnownFile.FileName + (attributesKnownFile.Date.Ticks / 10000000L).ToString(), attributesKnownFile); } } reader.Close(); knownmet.Close(); return(true); } catch (Exception e) { Debug.WriteLine(e.ToString()); if (showErrorMessage) { CLog.Log(Constants.Log.Notify, "Can not load known.met, hashing shared files"); } try { if (reader != null) { reader.Close(); } if (knownmet != null) { knownmet.Close(); } } catch {}; return(false); } }