RemObjects.InternetPack.Connection.BeginReadLine C# (CSharp) Method

BeginReadLine() public method

public BeginReadLine ( AsyncCallback callback, Object state ) : IAsyncResult
callback AsyncCallback
state Object
return IAsyncResult
		public IAsyncResult BeginReadLine(AsyncCallback callback, Object state)
		{
			if (!BufferedAsync)
				throw new Exception("BufferedAsync must be true to use BeginReadLine");

			AsyncReadLineRequest lRequest;
			if (fBuffer != null)
			{
				for (Int32 i = fBufferStart; i < fBufferEnd; i++)
				{
					if (fBuffer[i] != 10)
						continue;

					Int32 lLen = i - fBufferStart;

					if (lLen > 0 && fBuffer[i - 1] == 13)
						lLen--;

					lRequest = new AsyncReadLineRequest(state, callback);
					lRequest.Data.Write(fBuffer, fBufferStart, lLen);

					lRequest.State = AsyncReadLineState.SyncDone;
					fBufferStart = i + 1;

					callback(lRequest);

					return lRequest;
				}
			}

			lRequest = new AsyncReadLineRequest(state, callback);
			if (fBuffer != null)
				lRequest.Data.Write(fBuffer, fBufferStart, fBufferEnd - fBufferStart);
			else
				fBuffer = new Byte[BUFFER_SIZE];

			fBufferStart = 0;
			fBufferEnd = 0;

			try
			{
				IntBeginRead(fBuffer, 0, fBuffer.Length, IntReadLineCallback, lRequest);
			}
			catch (ObjectDisposedException) // disconnect from this side
			{
				TriggerAsyncDisconnect();
				throw;
			}
			catch (SocketException) // disconnect
			{
				TriggerAsyncDisconnect();
				throw;
			}

			return lRequest;
		}