private void _sendInitialRequestSegment()
{
if (_request.Length > _device.MaxAppgramLength)
throw new Exception("Segmentation not supported... yet");
_sequenceNumber = 0;
_windowStart = 0;
_windowSize = MaxWindowSize;
ConfirmedRequestMessage message = new ConfirmedRequestMessage();
message.Segmented = false;
message.MoreFollows = false;
message.SegmentedResponseAccepted = true;
message.MaxSegmentsAccepted = int.MaxValue;
message.MaxAppgramLengthAccepted = (int)_device.MaxAppgramLength; // TODO: retrieve from local device?
message.InvokeId = _invokeId;
message.SequenceNumber = (byte)_windowStart;
message.ProposedWindowSize = (byte)_windowSize;
message.ServiceChoice = _serviceChoice;
_host.SendRaw(_device.Address, true, message,
new BufferSegment(_request, 0, _request.Length));
_transitionTo(ClientState.AwaitConfirmation);
}