Example #1
0
 public void AddChunksAvaibility(byte[] chunkStatus)
 {
     if (m_Avaibility == null)
     {
         m_Avaibility = new ushort[CHash.GetChunksCount(m_Element.File.FileSize)];
     }
     if ((chunkStatus == null) || (chunkStatus.Length != m_Avaibility.Length))
     {
         return;
     }
     for (int i = 0; i != chunkStatus.Length; i++)
     {
         if ((Protocol.ChunkState)chunkStatus[i] == Protocol.ChunkState.Complete)
         {
             m_Avaibility[i]++;
         }
     }
 }
Example #2
0
        public void UpdateChunksAvaibility()
        {
            byte[] DownFileChunks;
            if (m_Avaibility == null)
            {
                m_Avaibility = new ushort[CHash.GetChunksCount(m_Element.File.FileSize)];
            }
            ushort[] avaibilitytmp = new ushort[m_Avaibility.Length];
            if (m_Element == null)
            {
                return;
            }
            int nChunks = m_Element.File.NumChunks;

            for (int i = 0; i != avaibilitytmp.Length; i++)
            {
                avaibilitytmp[i] = 0;
            }
            lock (m_ArrayList.SyncRoot)
            {
                foreach (CClient source in m_ArrayList)
                {
                    if (m_Element == null)
                    {
                        return;
                    }
                    DownFileChunks = source.DownFileChunks;
                    if (DownFileChunks != null)
                    {
                        for (int i = 0; i != nChunks; i++)
                        {
                            if ((Protocol.ChunkState)DownFileChunks[i] == Protocol.ChunkState.Complete)
                            {
                                avaibilitytmp[i]++;
                            }
                        }
                    }
                }
            }
            m_Avaibility = avaibilitytmp;
        }
Example #3
0
 public void RemoveChunksAvaibility(byte[] chunkStatus)
 {
     if (m_Element == null)
     {
         return;                              //possible when stopping the file
     }
     if (m_Avaibility == null)
     {
         m_Avaibility = new ushort[CHash.GetChunksCount(m_Element.File.FileSize)];
     }
     if ((chunkStatus == null) || (chunkStatus.Length != m_Avaibility.Length))
     {
         return;
     }
     for (int i = 0; i != chunkStatus.Length; i++)
     {
         if (((Protocol.ChunkState)chunkStatus[i] == Protocol.ChunkState.Complete) &&
             (m_Avaibility[i] > 0))
         {
             m_Avaibility[i]--;
         }
     }
 }