private static SftpMessage Load(uint protocolVersion, SftpMessageTypes messageType, byte[] data, int offset, int count, Encoding encoding)
{
SftpMessage message;
switch (messageType)
{
case SftpMessageTypes.Version:
message = new SftpVersionResponse();
break;
case SftpMessageTypes.Status:
message = new SftpStatusResponse(protocolVersion);
break;
case SftpMessageTypes.Data:
message = new SftpDataResponse(protocolVersion);
break;
case SftpMessageTypes.Handle:
message = new SftpHandleResponse(protocolVersion);
break;
case SftpMessageTypes.Name:
message = new SftpNameResponse(protocolVersion, encoding);
break;
case SftpMessageTypes.Attrs:
message = new SftpAttrsResponse(protocolVersion);
break;
case SftpMessageTypes.ExtendedReply:
message = new SftpExtendedReplyResponse(protocolVersion);
break;
default:
throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, "Message type '{0}' is not supported.", messageType));
}
message.Load(data, offset, count);
return message;
}