Exemple #1
0
        private void FinishCurrentWrite()
        {
            if (current_write_op == null)
            {
                return;
            }

            current_write_op.EndWrite(this);
            current_write_op.Dispose();

            if (write_ops.Count > 0)
            {
                IWriteOperation op = write_ops.Dequeue();
                op.BeginWrite(this);
                current_write_op = op;
            }
            else
            {
                current_write_op = null;
                DisableWriting();
            }
        }
Exemple #2
0
 public void HandleWrite(IIOStream stream)
 {
     this.stream = (ISocketStream)stream;
     if (currentPrefixBlock != null && !currentPrefixBlock.IsComplete)
     {
         currentPrefixBlock.HandleWrite(stream);
         if (currentPrefixBlock.IsComplete)
         {
             currentPrefixBlock.EndWrite(stream);
             currentPrefixBlock.Dispose();
             currentPrefixBlock = null;
         }
     }
     if (fd == -1)
     {
         OpenFile();
     }
     else if (Length == -1)
     {
         if (!Chunked)
         {
             stream.DisableWriting();
         }
         else
         {
             InitializeTransfer();
         }
     }
     else if (position != Length)
     {
         SendNextBlock();
     }
     else
     {
         OnComplete(0, 0);
     }
 }