SecureDelete.FileSearch.FileSearcher.SendFiles C# (CSharp) Method

SendFiles() private method

private SendFiles ( string files, bool forced ) : void
files string
forced bool
return void
        private void SendFiles(string[] files, bool forced)
        {
            int position = 0;

            // special case
            if(forced) {
                SendResultChunk(files, false);
                lastSendTime = DateTime.Now;
                return;
            }

            if(unsentFiles.Count > 0) {
                if(unsentFiles.Count + files.Length >= _resultChunkLength) {
                    // send a chunk
                    string[] chunk = new string[_resultChunkLength];
                    unsentFiles.CopyTo(chunk, 0);

                    for(int i = unsentFiles.Count; i < _resultChunkLength; i++) {
                        chunk[i] = files[i - unsentFiles.Count];
                    }

                    position = _resultChunkLength - unsentFiles.Count;
                    unsentFiles.Clear();

                    SendResultChunk(chunk, false);
                    if(GetStop() == true) {
                        return;
                    }
                }
            }

            // send full chuncks
            int chunkCount = (files.Length - position) / _resultChunkLength;
            for(int i = 0; i < chunkCount; i++) {
                string[] chunk = new string[_resultChunkLength];
                int lastIndex = position + _resultChunkLength;

                for(int j = position; j < lastIndex; j++) {
                    chunk[j - position] = files[j];
                }

                position += _resultChunkLength;
                SendResultChunk(chunk, false);

                if(GetStop() == true) {
                    return;
                }
            }

            // send or store last files
            if(position != files.Length) {
                for(int i = position; i < files.Length; i++) {
                    unsentFiles.Enqueue(files[i]);
                }
            }

            stop = false;
            lastSendTime = DateTime.Now;
        }