Beispiel #1
0
 public void AddClientsToFile(stDatosFuente[] sources,byte[] FileHash)
 {
     foreach (stDatosFuente source in sources)
     {
     AddClientToFile(source.IP,source.Port,source.ServerIP,source.ServerPort,FileHash);
     }
 }
Beispiel #2
0
 private string m_ExtractSourcesInfo(string elink)
 {
     Regex regex =
     new Regex(@"\/\|sources(?<sources>.*)\|(?<rest>.*)",
               RegexOptions.IgnoreCase
               | RegexOptions.Multiline
               | RegexOptions.IgnorePatternWhitespace
               | RegexOptions.Compiled
              );
     Match m=regex.Match(elink);
     if (m.Success)
     {
     string sources=m.Result("${sources}");
     ArrayList sourcesList=new ArrayList();
     while (sources.Length>0)
     {
         regex=new Regex(@",(?<ip>[0-9.]+\.[0-9.]+\.[0-9.]+\.[0-9.]+):(?<port>[0-9]+)(?<sources>.*)",
                         RegexOptions.IgnoreCase
                         | RegexOptions.Multiline
                         | RegexOptions.IgnorePatternWhitespace
                         | RegexOptions.Compiled
                        );
         m=regex.Match(sources);
         if (m.Success)
         {
             stDatosFuente sourcefound=new stDatosFuente();
             IPAddress ip = System.Net.IPAddress.Parse(m.Result("${ip}"));
             sourcefound.IP=BitConverter.ToUInt32(ip.GetAddressBytes(),0);
             sourcefound.Port=Convert.ToUInt16(m.Result("${port}"));
             sourcesList.Add(sourcefound);
             sources=m.Result("${sources}");
         } else break;
     }
     if (sourcesList.Count>0)
     {
         m_clients=new stDatosFuente[sourcesList.Count];
         int i=0;
         foreach (stDatosFuente src in sourcesList)
         {
             m_clients[i]=src;
             i++;
         }
     }
     return sources;
     }
     else return "";
 }
Beispiel #3
0
 public void AddFile(string name, uint size, byte[] Hash, stDatosFuente[] sources)
 {
     CElement Element;
     if (this.m_Contains(Hash))
     {
     CLog.Log(Constants.Log.Notify,"FIL_DUP",name);
     Element=(CElement)this[Hash];
     }
     else
     {
     CFile file=new CFile(Hash,name,size);
     Element=new CElement();
     Element.File=file;
     Element.Statistics=new CFileStatistics();
     m_FileList.Add(Element);
     CKernel.NewFile(Element);
     CLog.Log(Constants.Log.Notify,"FIL_ADDED",name);
     }
     if ((Element.SourcesList==null)&&((Element.File.FileStatus==Protocol.FileState.Ready)||(Element.File.FileStatus==Protocol.FileState.Completing)))
     {
     CSourcesList sourcesList=new CSourcesList(Element);
     Element.SourcesList=sourcesList;
     if (CKernel.ServersList.ActiveServer!=null) CKernel.ServersList.ActiveServer.RequestSources(Element.File.FileHash);
     }
     if ((Element.SourcesList!=null)&&
         ((Element.File.FileStatus==Protocol.FileState.Ready)||(Element.File.FileStatus==Protocol.FileState.Completing))&&
         (sources!=null))
     CKernel.ClientsList.AddClientsToFile(sources,Hash);
 }