Search in sources :

Example 11 with Pipeline

use of streamer.Pipeline in project cloudstack by apache.

the class ClientMCSErectDomainRequest method main.

/**
     * Example.
     * @see http://msdn.microsoft.com/en-us/library/cc240837.aspx
     */
public static void main(String[] args) {
    // System.setProperty("streamer.Link.debug", "true");
    System.setProperty("streamer.Element.debug", "true");
    // System.setProperty("streamer.Pipeline.debug", "true");
    /* @formatter:off */
    byte[] packet = new byte[] { //  TPKT Header (length = 12 bytes)
    0x03, //  TPKT Header (length = 12 bytes)
    0x00, //  TPKT Header (length = 12 bytes)
    0x00, //  TPKT Header (length = 12 bytes)
    0x0c, //  X.224 Data TPDU
    0x02, //  X.224 Data TPDU
    (byte) 0xf0, //  X.224 Data TPDU
    (byte) 0x80, // PER encoded (ALIGNED variant of BASIC-PER) PDU contents:
    0x04, 0x01, 0x00, 0x01, 0x00 };
    /* @formatter:on */
    MockSource source = new MockSource("source", ByteBuffer.convertByteArraysToByteBuffers(new byte[] { 1, 2, 3 }));
    Element todo = new ClientMCSErectDomainRequest("TODO");
    Element x224 = new ClientX224DataPDU("x224");
    Element tpkt = new ClientTpkt("tpkt");
    Element sink = new MockSink("sink", ByteBuffer.convertByteArraysToByteBuffers(packet));
    Element mainSink = new MockSink("mainSink", ByteBuffer.convertByteArraysToByteBuffers(new byte[] { 1, 2, 3 }));
    Pipeline pipeline = new PipelineImpl("test");
    pipeline.add(source, todo, x224, tpkt, sink, mainSink);
    pipeline.link("source", "TODO", "mainSink");
    pipeline.link("TODO >" + OTOUT, "x224", "tpkt", "sink");
    pipeline.runMainLoop("source", STDOUT, false, false);
}
Also used : MockSource(streamer.debug.MockSource) MockSink(streamer.debug.MockSink) PipelineImpl(streamer.PipelineImpl) Element(streamer.Element) Pipeline(streamer.Pipeline)

Example 12 with Pipeline

use of streamer.Pipeline in project cloudstack by apache.

the class ClientSynchronizePDU method main.

/**
     * Example.
     *
     * @see http://msdn.microsoft.com/en-us/library/cc240841.aspx
     */
public static void main(String[] args) {
    // System.setProperty("streamer.Link.debug", "true");
    System.setProperty("streamer.Element.debug", "true");
    // System.setProperty("streamer.Pipeline.debug", "true");
    /* @formatter:off */
    byte[] packet = new byte[] { // TPKT
    (byte) 0x03, (byte) 0x00, // TPKT length: 37 bytes
    (byte) 0x00, (byte) 0x25, // X224 Data PDU
    (byte) 0x02, (byte) 0xf0, (byte) 0x80, // MCS send data request
    (byte) 0x64, // Initiator: 1004 (1001+3)
    (byte) 0x00, (byte) 0x03, // Channel ID: 1003 (I/O Channel)
    (byte) 0x03, (byte) 0xeb, // Data priority: high (0x40), segmentation: begin (0x20) | end (0x10)
    (byte) 0x70, // Data length:  22 bytes (0x16, variable length field)
    (byte) 0x80, (byte) 0x16, // RDP: total length: 22 bytes (LE)
    (byte) 0x16, (byte) 0x00, // PDU type: PDUTYPE_DATAPDU (0x7), TS_PROTOCOL_VERSION (0x10) (LE)
    (byte) 0x17, (byte) 0x00, // PDU source: 1007 (LE)
    (byte) 0xec, (byte) 0x03, // Share ID: 0x000103ea (LE)
    (byte) 0xea, (byte) 0x03, (byte) 0x01, (byte) 0x00, // Padding: 1 byte
    (byte) 0x00, // Stream ID: STREAM_LOW (1)
    (byte) 0x01, // uncompressedLength : 8 bytes (LE)
    (byte) 0x08, (byte) 0x00, // pduType2 = PDUTYPE2_SYNCHRONIZE (31)
    (byte) 0x1f, // generalCompressedType: 0
    (byte) 0x00, // generalCompressedLength: 0 (LE?)
    (byte) 0x00, (byte) 0x00, //  messageType: SYNCMSGTYPE_SYNC (1) (LE)
    (byte) 0x01, (byte) 0x00, // targetUser: 0x03ea
    (byte) 0xea, (byte) 0x03 };
    /* @formatter:on */
    MockSource source = new MockSource("source", ByteBuffer.convertByteArraysToByteBuffers(new byte[] { 1, 2, 3 }));
    Element todo = new ClientSynchronizePDU("TODO");
    Element x224 = new ClientX224DataPDU("x224");
    Element tpkt = new ClientTpkt("tpkt");
    Element sink = new MockSink("sink", ByteBuffer.convertByteArraysToByteBuffers(packet));
    Element mainSink = new MockSink("mainSink", ByteBuffer.convertByteArraysToByteBuffers(new byte[] { 1, 2, 3 }));
    Pipeline pipeline = new PipelineImpl("test");
    pipeline.add(source, todo, x224, tpkt, sink, mainSink);
    pipeline.link("source", "TODO", "mainSink");
    pipeline.link("TODO >" + OTOUT, "x224", "tpkt", "sink");
    pipeline.runMainLoop("source", STDOUT, false, false);
}
Also used : MockSource(streamer.debug.MockSource) MockSink(streamer.debug.MockSink) PipelineImpl(streamer.PipelineImpl) Element(streamer.Element) Pipeline(streamer.Pipeline)

Example 13 with Pipeline

use of streamer.Pipeline in project cloudstack by apache.

the class ClientInfoPDU method main.

/**
     * Example.
     */
public static void main(String[] args) {
    // System.setProperty("streamer.Link.debug", "true");
    System.setProperty("streamer.Element.debug", "true");
    // System.setProperty("streamer.Pipeline.debug", "true");
    /* @formatter:off */
    byte[] packet = new byte[] { // TPKT
    (byte) 0x03, (byte) 0x00, // TPKT length: 343 bytes
    (byte) 0x01, (byte) 0x57, // X224 Data PDU
    (byte) 0x02, (byte) 0xf0, (byte) 0x80, // MCS Send Data Request PDU
    (byte) 0x64, // Initiator: 0x03 + 1001 = 1004
    (byte) 0x00, (byte) 0x03, // Channel ID: 1003 (IO Channel)
    (byte) 0x03, (byte) 0xeb, // Data priority: high, segmentation: begin | end (0x40 | 0x20 | 0x10 = 0x70)
    (byte) 0x70, // User data length: 328  (0x148) bytes, variable length field
    (byte) 0x81, (byte) 0x48, // Flags: SEC_INFO_PKT (0x4000)
    (byte) 0x40, (byte) 0x00, // TS_SECURITY_HEADER::flagsHi - ignored
    (byte) 0x00, (byte) 0x00, // Codepage: 0 (UNKNOWN, LE) (use  0x04090409  (1033,1033) for EN_US)
    (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // INFO_MOUSE_HAS_WHEEL (0x00020000), INFO_NOAUDIOPLAYBACK (0x00080000),
    (byte) 0x73, (byte) 0x01, (byte) 0x0a, (byte) 0x00, // cbDomain length: 0 bytes (LE) (NOT including size of mandatory NULL terminator)
    (byte) 0x00, (byte) 0x00, // cbUserName length: 16 bytes (0x10, LE) (NOT including size of mandatory NULL terminator)
    (byte) 0x10, (byte) 0x00, // cbPassword length: 0 bytes (LE) (NOT including size of mandatory NULL terminator)
    (byte) 0x00, (byte) 0x00, // cbAlternateShell:  0 bytes (LE) (NOT including size of mandatory NULL terminator)
    (byte) 0x00, (byte) 0x00, // cbWorkingDir: 0 bytes (LE) (NOT including size of mandatory NULL terminator)
    (byte) 0x00, (byte) 0x00, // Domain: "" (UCS2), see cbDomain
    (byte) 0x00, (byte) 0x00, // User name: "vlisivka" (UCS2), see cbUserName
    (byte) 0x76, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x69, (byte) 0x00, (byte) 0x73, (byte) 0x00, (byte) 0x69, (byte) 0x00, (byte) 0x76, (byte) 0x00, (byte) 0x6b, (byte) 0x00, (byte) 0x61, (byte) 0x00, (byte) 0x00, (byte) 0x00, // Password: "" (UCS2), see cbPassword
    (byte) 0x00, (byte) 0x00, // Alternate shell: "" (UCS2), see cbAlternateShell
    (byte) 0x00, (byte) 0x00, // Working directory: "" (UCS2), see cbWorkingDir
    (byte) 0x00, (byte) 0x00, // Client address family: 2 (AF_INET, LE)
    (byte) 0x02, (byte) 0x00, // cbClientAddress = 28 bytes (0x1c, LE) (including the size of the mandatory NULL terminator)
    (byte) 0x1c, (byte) 0x00, // Client address: "192.168.0.100" (UCS2)
    (byte) 0x31, (byte) 0x00, (byte) 0x39, (byte) 0x00, (byte) 0x32, (byte) 0x00, (byte) 0x2e, (byte) 0x00, (byte) 0x31, (byte) 0x00, (byte) 0x36, (byte) 0x00, (byte) 0x38, (byte) 0x00, (byte) 0x2e, (byte) 0x00, (byte) 0x30, (byte) 0x00, (byte) 0x2e, (byte) 0x00, (byte) 0x31, (byte) 0x00, (byte) 0x30, (byte) 0x00, (byte) 0x30, (byte) 0x00, (byte) 0x00, (byte) 0x00, // cbClientDir: 64 bytes (0x40, LE) (including the size of the mandatory NULL terminator)
    (byte) 0x40, (byte) 0x00, // Client directory: "C:\Windows\System32\mstscax.dll" (UCS2)
    (byte) 0x43, (byte) 0x00, (byte) 0x3a, (byte) 0x00, (byte) 0x5c, (byte) 0x00, (byte) 0x57, (byte) 0x00, (byte) 0x69, (byte) 0x00, (byte) 0x6e, (byte) 0x00, (byte) 0x64, (byte) 0x00, (byte) 0x6f, (byte) 0x00, (byte) 0x77, (byte) 0x00, (byte) 0x73, (byte) 0x00, (byte) 0x5c, (byte) 0x00, (byte) 0x53, (byte) 0x00, (byte) 0x79, (byte) 0x00, (byte) 0x73, (byte) 0x00, (byte) 0x74, (byte) 0x00, (byte) 0x65, (byte) 0x00, (byte) 0x6d, (byte) 0x00, (byte) 0x33, (byte) 0x00, (byte) 0x32, (byte) 0x00, (byte) 0x5c, (byte) 0x00, (byte) 0x6d, (byte) 0x00, (byte) 0x73, (byte) 0x00, (byte) 0x74, (byte) 0x00, (byte) 0x73, (byte) 0x00, (byte) 0x63, (byte) 0x00, (byte) 0x61, (byte) 0x00, (byte) 0x78, (byte) 0x00, (byte) 0x2e, (byte) 0x00, (byte) 0x64, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x00, (byte) 0x00, // Bias: 0 minutes (LE)
    (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // Standard name: "EET, Standard Time" (fixed string: 64 bytes, UCS2)
    (byte) 0x45, (byte) 0x00, (byte) 0x45, (byte) 0x00, (byte) 0x54, (byte) 0x00, (byte) 0x2c, (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x53, (byte) 0x00, (byte) 0x74, (byte) 0x00, (byte) 0x61, (byte) 0x00, (byte) 0x6e, (byte) 0x00, (byte) 0x64, (byte) 0x00, (byte) 0x61, (byte) 0x00, (byte) 0x72, (byte) 0x00, (byte) 0x64, (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x54, (byte) 0x00, (byte) 0x69, (byte) 0x00, (byte) 0x6d, (byte) 0x00, (byte) 0x65, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // wYear: 0 (LE)
    (byte) 0x00, (byte) 0x00, // wMonth: unknown (LE)
    (byte) 0x00, (byte) 0x00, // wDayOfWeek: Sunday (LE)
    (byte) 0x00, (byte) 0x00, // wDay: unknown (LE)
    (byte) 0x00, (byte) 0x00, // wHour: 0 (LE)
    (byte) 0x00, (byte) 0x00, // wMinute: 0 (LE)
    (byte) 0x00, (byte) 0x00, // wSecond: 0 (LE)
    (byte) 0x00, (byte) 0x00, // wMilliseconds: 0
    (byte) 0x00, (byte) 0x00, // StandardBias: 0 minutes (LE)
    (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // Daylight name: "EET, Summer Time" (fixed string: 64 bytes, UCS2)
    (byte) 0x45, (byte) 0x00, (byte) 0x45, (byte) 0x00, (byte) 0x54, (byte) 0x00, (byte) 0x2c, (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x53, (byte) 0x00, (byte) 0x75, (byte) 0x00, (byte) 0x6d, (byte) 0x00, (byte) 0x6d, (byte) 0x00, (byte) 0x65, (byte) 0x00, (byte) 0x72, (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x54, (byte) 0x00, (byte) 0x69, (byte) 0x00, (byte) 0x6d, (byte) 0x00, (byte) 0x65, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // wYear: 0 (LE)
    (byte) 0x00, (byte) 0x00, // wMonth: unknown (LE)
    (byte) 0x00, (byte) 0x00, // wDayOfWeek: Sunday (LE)
    (byte) 0x00, (byte) 0x00, // wDay: unknown (LE)
    (byte) 0x00, (byte) 0x00, // wHour: 0 (LE)
    (byte) 0x00, (byte) 0x00, // wMinute: 0 (LE)
    (byte) 0x00, (byte) 0x00, // wSecond: 0 (LE)
    (byte) 0x00, (byte) 0x00, // wMilliseconds: 0
    (byte) 0x00, (byte) 0x00, // Daylight bias: 60 minutes (LE)
    (byte) 0x3c, (byte) 0x00, (byte) 0x00, (byte) 0x00, // Client session ID: 0x00000000 (LE)
    (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // Performance flags: 0x7 (LE) = PERF_DISABLE_WALLPAPER (0x1), PERF_DISABLE_FULLWINDOWDRAG (0x2), PERF_DISABLE_MENUANIMATIONS (0x4)
    (byte) 0x07, (byte) 0x00, (byte) 0x00, (byte) 0x00, // cbAutoReconnectCookie: 0 bytes (LE)
    (byte) 0x00, (byte) 0x00 };
    /* @formatter:on */
    MockSource source = new MockSource("source", ByteBuffer.convertByteArraysToByteBuffers(new byte[] { 1, 2, 3 }));
    Element client_info = new ClientInfoPDU("client_info", "vlisivka");
    Element x224 = new ClientX224DataPDU("x224");
    Element tpkt = new ClientTpkt("tpkt");
    Element sink = new MockSink("sink", ByteBuffer.convertByteArraysToByteBuffers(packet));
    Element mainSink = new MockSink("mainSink", ByteBuffer.convertByteArraysToByteBuffers(new byte[] { 1, 2, 3 }));
    Pipeline pipeline = new PipelineImpl("test");
    pipeline.add(source, client_info, x224, tpkt, sink, mainSink);
    pipeline.link("source", "client_info", "mainSink");
    pipeline.link("client_info >" + OTOUT, "x224", "tpkt", "sink");
    pipeline.runMainLoop("source", STDOUT, false, false);
}
Also used : MockSource(streamer.debug.MockSource) MockSink(streamer.debug.MockSink) PipelineImpl(streamer.PipelineImpl) Element(streamer.Element) Pipeline(streamer.Pipeline)

Example 14 with Pipeline

use of streamer.Pipeline in project cloudstack by apache.

the class ServerDemandActivePDU method main.

/**
     * Example.
     *
     */
public static void main(String[] args) {
    // System.setProperty("streamer.Link.debug", "true");
    System.setProperty("streamer.Element.debug", "true");
    // System.setProperty("streamer.Pipeline.debug", "true");
    /* @formatter:off */
    byte[] packet = new byte[] { //  TS_SHARECONTROLHEADER::totalLength = 0x0167 = 359 bytes
    0x67, //  TS_SHARECONTROLHEADER::totalLength = 0x0167 = 359 bytes
    0x01, //  TS_SHARECONTROLHEADER::pduType = 0x0011 0x0011 = 0x0010 | 0x0001  = TS_PROTOCOL_VERSION | PDUTYPE_DEMANDACTIVEPDU
    0x11, //  TS_SHARECONTROLHEADER::pduType = 0x0011 0x0011 = 0x0010 | 0x0001  = TS_PROTOCOL_VERSION | PDUTYPE_DEMANDACTIVEPDU
    0x00, //  TS_SHARECONTROLHEADER::pduSource = 0x03ea (1002)
    (byte) 0xea, //  TS_SHARECONTROLHEADER::pduSource = 0x03ea (1002)
    0x03, //  TS_DEMAND_ACTIVE_PDU::shareId
    (byte) 0xea, //  TS_DEMAND_ACTIVE_PDU::shareId
    0x03, //  TS_DEMAND_ACTIVE_PDU::shareId
    0x01, //  TS_DEMAND_ACTIVE_PDU::shareId
    0x00, //  TS_DEMAND_ACTIVE_PDU::lengthSourceDescriptor = 4 bytes
    0x04, //  TS_DEMAND_ACTIVE_PDU::lengthSourceDescriptor = 4 bytes
    0x00, //  TS_DEMAND_ACTIVE_PDU::lengthCombinedCapabilities = 0x151 = 337 bytes
    0x51, //  TS_DEMAND_ACTIVE_PDU::lengthCombinedCapabilities = 0x151 = 337 bytes
    0x01, //  TS_DEMAND_ACTIVE_PDU::sourceDescriptor = "RDP"
    0x52, //  TS_DEMAND_ACTIVE_PDU::sourceDescriptor = "RDP"
    0x44, //  TS_DEMAND_ACTIVE_PDU::sourceDescriptor = "RDP"
    0x50, //  TS_DEMAND_ACTIVE_PDU::sourceDescriptor = "RDP"
    0x00, //  TS_DEMAND_ACTIVE_PDU::numberCapabilities = 13
    0x0d, //  TS_DEMAND_ACTIVE_PDU::numberCapabilities = 13
    0x00, //  TS_DEMAND_ACTIVE_PDU::pad2octets
    0x00, //  TS_DEMAND_ACTIVE_PDU::pad2octets
    0x00, //  TS_SHARE_CAPABILITYSET::capabilitySetType = CAPSTYPE_SHARE (9)
    0x09, //  TS_SHARE_CAPABILITYSET::capabilitySetType = CAPSTYPE_SHARE (9)
    0x00, //  TS_SHARE_CAPABILITYSET::lengthCapability = 8 bytes
    0x08, //  TS_SHARE_CAPABILITYSET::lengthCapability = 8 bytes
    0x00, //  TS_SHARE_CAPABILITYSET::nodeID = 0x03ea (1002)
    (byte) 0xea, //  TS_SHARE_CAPABILITYSET::nodeID = 0x03ea (1002)
    0x03, //  TS_SHARE_CAPABILITYSET::pad2octets
    (byte) 0xdc, //  TS_SHARE_CAPABILITYSET::pad2octets
    (byte) 0xe2, //  TS_GENERAL_CAPABILITYSET::capabilitySetType = CAPSTYPE_GENERAL (1)
    0x01, //  TS_GENERAL_CAPABILITYSET::capabilitySetType = CAPSTYPE_GENERAL (1)
    0x00, //  TS_GENERAL_CAPABILITYSET::lengthCapability = 24 bytes
    0x18, //  TS_GENERAL_CAPABILITYSET::lengthCapability = 24 bytes
    0x00, //  TS_GENERAL_CAPABILITYSET::osMajorType = TS_OSMAJORTYPE_WINDOWS (1)
    0x01, //  TS_GENERAL_CAPABILITYSET::osMajorType = TS_OSMAJORTYPE_WINDOWS (1)
    0x00, //  TS_GENERAL_CAPABILITYSET::osMinorType = TS_OSMINORTYPE_WINDOWS_NT (3)
    0x03, //  TS_GENERAL_CAPABILITYSET::osMinorType = TS_OSMINORTYPE_WINDOWS_NT (3)
    0x00, //  TS_GENERAL_CAPABILITYSET::protocolVersion = TS_CAPS_PROTOCOLVERSION (0x0200)
    0x00, //  TS_GENERAL_CAPABILITYSET::protocolVersion = TS_CAPS_PROTOCOLVERSION (0x0200)
    0x02, //  TS_GENERAL_CAPABILITYSET::pad2octetsA
    0x00, //  TS_GENERAL_CAPABILITYSET::pad2octetsA
    0x00, //  TS_GENERAL_CAPABILITYSET::generalCompressionTypes = 0
    0x00, //  TS_GENERAL_CAPABILITYSET::generalCompressionTypes = 0
    0x00, //  TS_GENERAL_CAPABILITYSET::extraFlags = 0x041d = 0x0400 | 0x0010 | 0x0008 | 0x0004 | 0x0001 = NO_BITMAP_COMPRESSION_HDR | ENC_SALTED_CHECKSUM | AUTORECONNECT_SUPPORTED | LONG_CREDENTIALS_SUPPORTED | FASTPATH_OUTPUT_SUPPORTED
    0x1d, //  TS_GENERAL_CAPABILITYSET::extraFlags = 0x041d = 0x0400 | 0x0010 | 0x0008 | 0x0004 | 0x0001 = NO_BITMAP_COMPRESSION_HDR | ENC_SALTED_CHECKSUM | AUTORECONNECT_SUPPORTED | LONG_CREDENTIALS_SUPPORTED | FASTPATH_OUTPUT_SUPPORTED
    0x04, //  TS_GENERAL_CAPABILITYSET::updateCapabilityFlag = 0
    0x00, //  TS_GENERAL_CAPABILITYSET::updateCapabilityFlag = 0
    0x00, //  TS_GENERAL_CAPABILITYSET::remoteUnshareFlag = 0
    0x00, //  TS_GENERAL_CAPABILITYSET::remoteUnshareFlag = 0
    0x00, //  TS_GENERAL_CAPABILITYSET::generalCompressionLevel = 0
    0x00, //  TS_GENERAL_CAPABILITYSET::generalCompressionLevel = 0
    0x00, //  TS_GENERAL_CAPABILITYSET::refreshRectSupport = TRUE
    0x01, //  TS_GENERAL_CAPABILITYSET::suppressOutputSupport = TRUE
    0x01, //  TS_VIRTUALCHANNEL_CAPABILITYSET::capabilitySetType = CAPSTYPE_VIRTUALCHANNEL (20)
    0x14, //  TS_VIRTUALCHANNEL_CAPABILITYSET::capabilitySetType = CAPSTYPE_VIRTUALCHANNEL (20)
    0x00, //  TS_VIRTUALCHANNEL_CAPABILITYSET::lengthCapability = 8 bytes
    0x08, //  TS_VIRTUALCHANNEL_CAPABILITYSET::lengthCapability = 8 bytes
    0x00, //  TS_VIRTUALCHANNEL_CAPABILITYSET::vccaps1 = 0x00000002 = VCCAPS_COMPR_CS_8K
    0x02, //  TS_VIRTUALCHANNEL_CAPABILITYSET::vccaps1 = 0x00000002 = VCCAPS_COMPR_CS_8K
    0x00, //  TS_VIRTUALCHANNEL_CAPABILITYSET::vccaps1 = 0x00000002 = VCCAPS_COMPR_CS_8K
    0x00, //  TS_VIRTUALCHANNEL_CAPABILITYSET::vccaps1 = 0x00000002 = VCCAPS_COMPR_CS_8K
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::capabilitySetType = CAPSTYPE_DRAWGDIPLUS (22)
    0x16, //  TS_DRAW_GDIPLUS_CAPABILITYSET::capabilitySetType = CAPSTYPE_DRAWGDIPLUS (22)
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::lengthCapability = 40 bytes
    0x28, //  TS_DRAW_GDIPLUS_CAPABILITYSET::lengthCapability = 40 bytes
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::drawGdiplusSupportLevel = TS_DRAW_GDIPLUS_DEFAULT (0)
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::drawGdiplusSupportLevel = TS_DRAW_GDIPLUS_DEFAULT (0)
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::drawGdiplusSupportLevel = TS_DRAW_GDIPLUS_DEFAULT (0)
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::drawGdiplusSupportLevel = TS_DRAW_GDIPLUS_DEFAULT (0)
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::GdipVersion (not initialized by server)
    0x70, //  TS_DRAW_GDIPLUS_CAPABILITYSET::GdipVersion (not initialized by server)
    (byte) 0xf6, //  TS_DRAW_GDIPLUS_CAPABILITYSET::GdipVersion (not initialized by server)
    0x13, //  TS_DRAW_GDIPLUS_CAPABILITYSET::GdipVersion (not initialized by server)
    (byte) 0xf3, //  TS_DRAW_GDIPLUS_CAPABILITYSET::drawGdiplusCacheLevel  = TS_DRAW_GDIPLUS_CACHE_LEVEL_ONE (1)
    0x01, //  TS_DRAW_GDIPLUS_CAPABILITYSET::drawGdiplusCacheLevel  = TS_DRAW_GDIPLUS_CACHE_LEVEL_ONE (1)
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::drawGdiplusCacheLevel  = TS_DRAW_GDIPLUS_CACHE_LEVEL_ONE (1)
    0x00, //  TS_DRAW_GDIPLUS_CAPABILITYSET::drawGdiplusCacheLevel  = TS_DRAW_GDIPLUS_CACHE_LEVEL_ONE (1)
    0x00, //  TS_GDIPLUS_CACHE_ENTRIES::GdipGraphicsCacheEntries  (not initialized by server)
    0x01, //  TS_GDIPLUS_CACHE_ENTRIES::GdipGraphicsCacheEntries  (not initialized by server)
    0x00, //  TS_GDIPLUS_CACHE_ENTRIES::GdipObjectBrushCacheEntries (not initialized by server)
    0x00, //  TS_GDIPLUS_CACHE_ENTRIES::GdipObjectBrushCacheEntries (not initialized by server)
    0x00, //  TS_GDIPLUS_CACHE_ENTRIES::GdipObjectPenCacheEntries (not initialized by server)
    0x18, //  TS_GDIPLUS_CACHE_ENTRIES::GdipObjectPenCacheEntries (not initialized by server)
    0x00, //  TS_GDIPLUS_CACHE_ENTRIES::GdipObjectImageCacheEntries (not initialized by server)
    0x00, //  TS_GDIPLUS_CACHE_ENTRIES::GdipObjectImageCacheEntries (not initialized by server)
    0x00, //  TS_GDIPLUS_CACHE_ENTRIES::GdipObjectImageAttributesCacheEntries (not initialized by server)
    (byte) 0x9c, //  TS_GDIPLUS_CACHE_ENTRIES::GdipObjectImageAttributesCacheEntries (not initialized by server)
    (byte) 0xf6, //  TS_GDIPLUS_CACHE_CHUNK_SIZE::GdipGraphicsCacheChunkSize  (not initialized by server)
    0x13, //  TS_GDIPLUS_CACHE_CHUNK_SIZE::GdipGraphicsCacheChunkSize  (not initialized by server)
    (byte) 0xf3, //  TS_GDIPLUS_CACHE_CHUNK_SIZE::GdipObjectBrushCacheChunkSize (not initialized by server)
    0x61, //  TS_GDIPLUS_CACHE_CHUNK_SIZE::GdipObjectBrushCacheChunkSize (not initialized by server)
    (byte) 0xa6, //  TS_GDIPLUS_CACHE_CHUNK_SIZE::GdipObjectPenCacheChunkSize (not initialized by server)
    (byte) 0x82, //  TS_GDIPLUS_CACHE_CHUNK_SIZE::GdipObjectPenCacheChunkSize (not initialized by server)
    (byte) 0x80, //   TS_GDIPLUS_CACHE_CHUNK_SIZE::GdipObjectImageAttributesCacheChunkSize (not initialized by server)
    0x00, //   TS_GDIPLUS_CACHE_CHUNK_SIZE::GdipObjectImageAttributesCacheChunkSize (not initialized by server)
    0x00, //  TS_GDIPLUS_IMAGE_CACHE_PROPERTIES::GdipObjectImageCacheChunkSize  (not initialized by server)
    0x00, //  TS_GDIPLUS_IMAGE_CACHE_PROPERTIES::GdipObjectImageCacheChunkSize  (not initialized by server)
    0x00, //  TS_GDIPLUS_IMAGE_CACHE_PROPERTIES::GdipObjectImageCacheTotalSize  (not initialized by server)
    0x00, //  TS_GDIPLUS_IMAGE_CACHE_PROPERTIES::GdipObjectImageCacheTotalSize  (not initialized by server)
    0x50, //  TS_GDIPLUS_IMAGE_CACHE_PROPERTIES::GdipObjectImageCacheMaxSize (not initialized by server)
    (byte) 0x91, //  TS_GDIPLUS_IMAGE_CACHE_PROPERTIES::GdipObjectImageCacheMaxSize (not initialized by server)
    (byte) 0xbf, //  TS_FONT_CAPABILITYSET::capabilitySetType = CAPSTYPE_FONT (14)
    0x0e, //  TS_FONT_CAPABILITYSET::capabilitySetType = CAPSTYPE_FONT (14)
    0x00, //  TS_FONT_CAPABILITYSET::lengthCapability = 4 bytes
    0x04, //  TS_FONT_CAPABILITYSET::lengthCapability = 4 bytes
    0x00, //  TS_BITMAP_CAPABILITYSET::capabilitySetType = CAPSTYPE_BITMAP (2)
    0x02, //  TS_BITMAP_CAPABILITYSET::capabilitySetType = CAPSTYPE_BITMAP (2)
    0x00, //  TS_BITMAP_CAPABILITYSET::lengthCapability = 28 bytes
    0x1c, //  TS_BITMAP_CAPABILITYSET::lengthCapability = 28 bytes
    0x00, //  TS_BITMAP_CAPABILITYSET::preferredBitsPerPixel = 24 bpp
    0x18, //  TS_BITMAP_CAPABILITYSET::preferredBitsPerPixel = 24 bpp
    0x00, //  TS_BITMAP_CAPABILITYSET::receive1BitPerPixel = TRUE
    0x01, //  TS_BITMAP_CAPABILITYSET::receive1BitPerPixel = TRUE
    0x00, //  TS_BITMAP_CAPABILITYSET::receive4BitsPerPixel = TRUE
    0x01, //  TS_BITMAP_CAPABILITYSET::receive4BitsPerPixel = TRUE
    0x00, //  TS_BITMAP_CAPABILITYSET::receive8BitsPerPixel = TRUE
    0x01, //  TS_BITMAP_CAPABILITYSET::receive8BitsPerPixel = TRUE
    0x00, //  TS_BITMAP_CAPABILITYSET::desktopWidth = 1280 pixels
    0x00, //  TS_BITMAP_CAPABILITYSET::desktopWidth = 1280 pixels
    0x05, //  TS_BITMAP_CAPABILITYSET::desktopHeight = 1024 pixels
    0x00, //  TS_BITMAP_CAPABILITYSET::desktopHeight = 1024 pixels
    0x04, //  TS_BITMAP_CAPABILITYSET::pad2octets
    0x00, //  TS_BITMAP_CAPABILITYSET::pad2octets
    0x00, //  TS_BITMAP_CAPABILITYSET::desktopResizeFlag = TRUE
    0x01, //  TS_BITMAP_CAPABILITYSET::desktopResizeFlag = TRUE
    0x00, //  TS_BITMAP_CAPABILITYSET::bitmapCompressionFlag = TRUE
    0x01, //  TS_BITMAP_CAPABILITYSET::bitmapCompressionFlag = TRUE
    0x00, //  TS_BITMAP_CAPABILITYSET::highColorFlags = 0
    0x00, //  TS_BITMAP_CAPABILITYSET::pad1octet
    0x00, //  TS_BITMAP_CAPABILITYSET::multipleRectangleSupport = TRUE
    0x01, //  TS_BITMAP_CAPABILITYSET::multipleRectangleSupport = TRUE
    0x00, //  TS_BITMAP_CAPABILITYSET::pad2octetsB
    0x00, //  TS_BITMAP_CAPABILITYSET::pad2octetsB
    0x00, //  TS_ORDER_CAPABILITYSET::capabilitySetType = CAPSTYPE_ORDER (3)
    0x03, //  TS_ORDER_CAPABILITYSET::capabilitySetType = CAPSTYPE_ORDER (3)
    0x00, //  TS_ORDER_CAPABILITYSET::lengthCapability = 88 bytes
    0x58, //  TS_ORDER_CAPABILITYSET::lengthCapability = 88 bytes
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, // TS_ORDER_CAPABILITYSET::terminalDescriptor = ""
    0x00, //  TS_ORDER_CAPABILITYSET::pad4octetsA
    0x40, //  TS_ORDER_CAPABILITYSET::pad4octetsA
    0x42, //  TS_ORDER_CAPABILITYSET::pad4octetsA
    0x0f, //  TS_ORDER_CAPABILITYSET::pad4octetsA
    0x00, //  TS_ORDER_CAPABILITYSET::desktopSaveXGranularity = 1
    0x01, //  TS_ORDER_CAPABILITYSET::desktopSaveXGranularity = 1
    0x00, //  TS_ORDER_CAPABILITYSET::desktopSaveYGranularity = 20
    0x14, //  TS_ORDER_CAPABILITYSET::desktopSaveYGranularity = 20
    0x00, //  TS_ORDER_CAPABILITYSET::pad2octetsA
    0x00, //  TS_ORDER_CAPABILITYSET::pad2octetsA
    0x00, //  TS_ORDER_CAPABILITYSET::maximumOrderLevel = ORD_LEVEL_1_ORDERS (1)
    0x01, //  TS_ORDER_CAPABILITYSET::maximumOrderLevel = ORD_LEVEL_1_ORDERS (1)
    0x00, //  TS_ORDER_CAPABILITYSET::numberFonts = 0
    0x00, //  TS_ORDER_CAPABILITYSET::numberFonts = 0
    0x00, //  TS_ORDER_CAPABILITYSET::orderFlags = 0x0022 = 0x0020 | 0x0002 = COLORINDEXSUPPORT | NEGOTIATEORDERSUPPORT
    0x22, //  TS_ORDER_CAPABILITYSET::orderFlags = 0x0022 = 0x0020 | 0x0002 = COLORINDEXSUPPORT | NEGOTIATEORDERSUPPORT
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_DSTBLT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_PATBLT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_SCRBLT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MEMBLT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MEM3BLT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_ATEXTOUT_INDEX] = FALSE
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_AEXTTEXTOUT_INDEX] = FALSE
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_DRAWNINEGRID_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_LINETO_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MULTI_DRAWNINEGRID_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_OPAQUERECT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_SAVEBITMAP_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_WTEXTOUT_INDEX] = FALSE
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MEMBLT_R2_INDEX] = FALSE
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MEM3BLT_R2_INDEX] = FALSE
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MULTIDSTBLT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MULTIPATBLT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MULTISCRBLT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_MULTIOPAQUERECT_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_FAST_INDEX_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_POLYGON_SC_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_POLYGON_CB_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_POLYLINE_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[23] = 0
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_FAST_GLYPH_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_ELLIPSE_SC_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_ELLIPSE_CB_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_INDEX_INDEX] = TRUE
    0x01, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_WEXTTEXTOUT_INDEX] = FALSE
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_WLONGTEXTOUT_INDEX] = FALSE
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[TS_NEG_WLONGEXTTEXTOUT_INDEX] = FALSE
    0x00, //  TS_ORDER_CAPABILITYSET::orderSupport[24] = 0
    0x00, //  TS_ORDER_CAPABILITYSET::textFlags = 0x06a1
    (byte) 0xa1, //  TS_ORDER_CAPABILITYSET::textFlags = 0x06a1
    0x06, //  TS_ORDER_CAPABILITYSET::pad2octetsB
    0x00, //  TS_ORDER_CAPABILITYSET::pad2octetsB
    0x00, //  TS_ORDER_CAPABILITYSET::pad4octetsB
    0x40, //  TS_ORDER_CAPABILITYSET::pad4octetsB
    0x42, //  TS_ORDER_CAPABILITYSET::pad4octetsB
    0x0f, //  TS_ORDER_CAPABILITYSET::pad4octetsB
    0x00, //  TS_ORDER_CAPABILITYSET::desktopSaveSize = 0xf4240 = 1000000
    0x40, //  TS_ORDER_CAPABILITYSET::desktopSaveSize = 0xf4240 = 1000000
    0x42, //  TS_ORDER_CAPABILITYSET::desktopSaveSize = 0xf4240 = 1000000
    0x0f, //  TS_ORDER_CAPABILITYSET::desktopSaveSize = 0xf4240 = 1000000
    0x00, //  TS_ORDER_CAPABILITYSET::pad2octetsC
    0x01, //  TS_ORDER_CAPABILITYSET::pad2octetsC
    0x00, //  TS_ORDER_CAPABILITYSET::pad2octetsD
    0x00, //  TS_ORDER_CAPABILITYSET::pad2octetsD
    0x00, //  TS_ORDER_CAPABILITYSET::textANSICodePage
    0x00, //  TS_ORDER_CAPABILITYSET::textANSICodePage
    0x00, //  TS_ORDER_CAPABILITYSET::pad2octetsE
    0x00, //  TS_ORDER_CAPABILITYSET::pad2octetsE
    0x00, //  TS_COLORTABLECACHE_CAPABILITYSET::capabilitySetType = CAPSTYPE_COLORCACHE (10)
    0x0a, //  TS_COLORTABLECACHE_CAPABILITYSET::capabilitySetType = CAPSTYPE_COLORCACHE (10)
    0x00, //  TS_COLORTABLECACHE_CAPABILITYSET::lengthCapability = 8 bytes
    0x08, //  TS_COLORTABLECACHE_CAPABILITYSET::lengthCapability = 8 bytes
    0x00, //  TS_COLORTABLECACHE_CAPABILITYSET::colorTableCacheSize = 6
    0x06, //  TS_COLORTABLECACHE_CAPABILITYSET::colorTableCacheSize = 6
    0x00, //  TS_COLORTABLECACHE_CAPABILITYSET::pad2octets
    0x00, //  TS_COLORTABLECACHE_CAPABILITYSET::pad2octets
    0x00, //  TS_BITMAPCACHE_CAPABILITYSET_HOSTSUPPORT::capabilitySetType  = CAPSTYPE_BITMAPCACHE_HOSTSUPPORT (18)
    0x12, //  TS_BITMAPCACHE_CAPABILITYSET_HOSTSUPPORT::capabilitySetType  = CAPSTYPE_BITMAPCACHE_HOSTSUPPORT (18)
    0x00, //  TS_BITMAPCACHE_CAPABILITYSET_HOSTSUPPORT::lengthCapability  = 8 bytes
    0x08, //  TS_BITMAPCACHE_CAPABILITYSET_HOSTSUPPORT::lengthCapability  = 8 bytes
    0x00, //  TS_BITMAPCACHE_CAPABILITYSET_HOSTSUPPORT::CacheVersion = 1  (corresponds to rev. 2 capabilities)
    0x01, //  TS_BITMAPCACHE_CAPABILITYSET_HOSTSUPPORT::Pad1
    0x00, //  TS_BITMAPCACHE_CAPABILITYSET_HOSTSUPPORT::Pad2
    0x00, //  TS_BITMAPCACHE_CAPABILITYSET_HOSTSUPPORT::Pad2
    0x00, //  TS_POINTER_CAPABILITYSET::capabilitySetType = CAPSTYPE_POINTER (8)
    0x08, //  TS_POINTER_CAPABILITYSET::capabilitySetType = CAPSTYPE_POINTER (8)
    0x00, //  TS_POINTER_CAPABILITYSET::lengthCapability = 10 bytes
    0x0a, //  TS_POINTER_CAPABILITYSET::lengthCapability = 10 bytes
    0x00, //  TS_POINTER_CAPABILITYSET::colorPointerFlag = TRUE
    0x01, //  TS_POINTER_CAPABILITYSET::colorPointerFlag = TRUE
    0x00, //  TS_POINTER_CAPABILITYSET::colorPointerCacheSize = 25
    0x19, //  TS_POINTER_CAPABILITYSET::colorPointerCacheSize = 25
    0x00, //  TS_POINTER_CAPABILITYSET::pointerCacheSize = 25
    0x19, //  TS_POINTER_CAPABILITYSET::pointerCacheSize = 25
    0x00, //  TS_INPUT_CAPABILITYSET::capabilitySetType = CAPSTYPE_INPUT (13)
    0x0d, //  TS_INPUT_CAPABILITYSET::capabilitySetType = CAPSTYPE_INPUT (13)
    0x00, //  TS_INPUT_CAPABILITYSET::lengthCapability = 88 bytes
    0x58, //  TS_INPUT_CAPABILITYSET::lengthCapability = 88 bytes
    0x00, //  TS_INPUT_CAPABILITYSET::inputFlags = 0x0035 = 0x0020 | 0x0010 | 0x0004 | 0x0001 = INPUT_FLAG_FASTPATH_INPUT2 | INPUT_FLAG_VKPACKET | INPUT_FLAG_MOUSEX | INPUT_FLAG_SCANCODES
    0x35, //  TS_INPUT_CAPABILITYSET::inputFlags = 0x0035 = 0x0020 | 0x0010 | 0x0004 | 0x0001 = INPUT_FLAG_FASTPATH_INPUT2 | INPUT_FLAG_VKPACKET | INPUT_FLAG_MOUSEX | INPUT_FLAG_SCANCODES
    0x00, //  TS_INPUT_CAPABILITYSET::pad2octetsA
    0x00, //  TS_INPUT_CAPABILITYSET::pad2octetsA
    0x00, //  TS_INPUT_CAPABILITYSET::keyboardLayout (not initialized by server)
    (byte) 0xa1, //  TS_INPUT_CAPABILITYSET::keyboardLayout (not initialized by server)
    0x06, //  TS_INPUT_CAPABILITYSET::keyboardLayout (not initialized by server)
    0x00, //  TS_INPUT_CAPABILITYSET::keyboardLayout (not initialized by server)
    0x00, //  TS_INPUT_CAPABILITYSET::keyboardType (not initialized by server)
    0x40, //  TS_INPUT_CAPABILITYSET::keyboardType (not initialized by server)
    0x42, //  TS_INPUT_CAPABILITYSET::keyboardType (not initialized by server)
    0x0f, //  TS_INPUT_CAPABILITYSET::keyboardType (not initialized by server)
    0x00, //  TS_INPUT_CAPABILITYSET::keyboardSubType  (not initialized by server)
    0x0c, //  TS_INPUT_CAPABILITYSET::keyboardSubType  (not initialized by server)
    (byte) 0xf6, //  TS_INPUT_CAPABILITYSET::keyboardSubType  (not initialized by server)
    0x13, //  TS_INPUT_CAPABILITYSET::keyboardSubType  (not initialized by server)
    (byte) 0xf3, //  TS_INPUT_CAPABILITYSET::keyboardFunctionKey (not initialized by server)
    (byte) 0x93, //  TS_INPUT_CAPABILITYSET::keyboardFunctionKey (not initialized by server)
    0x5a, //  TS_INPUT_CAPABILITYSET::keyboardFunctionKey (not initialized by server)
    0x37, //  TS_INPUT_CAPABILITYSET::keyboardFunctionKey (not initialized by server)
    (byte) 0xf3, // TS_INPUT_CAPABILITYSET::imeFileName (not initialized by server)
    0x00, (byte) 0x90, 0x30, (byte) 0xe1, 0x34, 0x1c, 0x38, (byte) 0xf3, 0x40, (byte) 0xf6, 0x13, (byte) 0xf3, 0x04, 0x00, 0x00, 0x00, 0x4c, 0x54, (byte) 0xdc, (byte) 0xe2, 0x08, 0x50, (byte) 0xdc, (byte) 0xe2, 0x01, 0x00, 0x00, 0x00, 0x08, 0x50, (byte) 0xdc, (byte) 0xe2, 0x00, 0x00, 0x00, 0x00, 0x38, (byte) 0xf6, 0x13, (byte) 0xf3, 0x2e, 0x05, 0x38, (byte) 0xf3, 0x08, 0x50, (byte) 0xdc, (byte) 0xe2, 0x2c, (byte) 0xf6, 0x13, (byte) 0xf3, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x19, 0x00, //  TS_RAIL_CAPABILITYSET::capabilitySetType = CAPSTYPE_RAIL (23)
    0x17, //  TS_RAIL_CAPABILITYSET::capabilitySetType = CAPSTYPE_RAIL (23)
    0x00, //  TS_RAIL_CAPABILITYSET::lengthCapability = 8 bytes
    0x08, //  TS_RAIL_CAPABILITYSET::lengthCapability = 8 bytes
    0x00, //  TS_RAIL_CAPABILITYSET::railSupportLevel = TS_RAIL_LEVEL_DEFAULT (0)
    0x00, //  TS_RAIL_CAPABILITYSET::railSupportLevel = TS_RAIL_LEVEL_DEFAULT (0)
    0x00, //  TS_RAIL_CAPABILITYSET::railSupportLevel = TS_RAIL_LEVEL_DEFAULT (0)
    0x00, //  TS_RAIL_CAPABILITYSET::railSupportLevel = TS_RAIL_LEVEL_DEFAULT (0)
    0x00, //  TS_WINDOW_CAPABILITYSET::capabilitySetType =  CAPSTYPE_WINDOW (24)
    0x18, //  TS_WINDOW_CAPABILITYSET::capabilitySetType =  CAPSTYPE_WINDOW (24)
    0x00, //  TS_WINDOW_CAPABILITYSET::lengthCapability = 11 bytes
    0x0b, //  TS_WINDOW_CAPABILITYSET::lengthCapability = 11 bytes
    0x00, //  TS_WINDOW_CAPABILITYSET::wndSupportLevel = TS_WINDOW_LEVEL_DEFAULT (0)
    0x00, //  TS_WINDOW_CAPABILITYSET::wndSupportLevel = TS_WINDOW_LEVEL_DEFAULT (0)
    0x00, //  TS_WINDOW_CAPABILITYSET::wndSupportLevel = TS_WINDOW_LEVEL_DEFAULT (0)
    0x00, //  TS_WINDOW_CAPABILITYSET::wndSupportLevel = TS_WINDOW_LEVEL_DEFAULT (0)
    0x00, //  TS_WINDOW_CAPABILITYSET::nIconCaches = 0
    0x00, //  TS_WINDOW_CAPABILITYSET::nIconCacheEntries = 0
    0x00, //  TS_WINDOW_CAPABILITYSET::nIconCacheEntries = 0
    0x00, //  TS_DEMAND_ACTIVE_PDU::sessionId = 0
    0x00, //  TS_DEMAND_ACTIVE_PDU::sessionId = 0
    0x00, //  TS_DEMAND_ACTIVE_PDU::sessionId = 0
    0x00, //  TS_DEMAND_ACTIVE_PDU::sessionId = 0
    0x00 };
    /* @formatter:on */
    RdpState rdpState = new RdpState();
    ScreenDescription screenDescription = new ScreenDescription();
    MockSource source = new MockSource("source", ByteBuffer.convertByteArraysToByteBuffers(packet));
    Element demandActive = new ServerDemandActivePDU("demand_active", screenDescription, rdpState);
    Element sink = new FakeSink("sink");
    Pipeline pipeline = new PipelineImpl("test");
    pipeline.add(source, demandActive, sink);
    pipeline.link("source", "demand_active", "sink");
    pipeline.runMainLoop("source", STDOUT, false, false);
}
Also used : MockSource(streamer.debug.MockSource) FakeSink(streamer.debug.FakeSink) PipelineImpl(streamer.PipelineImpl) ScreenDescription(common.ScreenDescription) Element(streamer.Element) BaseElement(streamer.BaseElement) Pipeline(streamer.Pipeline)

Example 15 with Pipeline

use of streamer.Pipeline in project cloudstack by apache.

the class AprSocketWrapperImpl method main.

/**
     * Example.
     */
public static void main(String[] args) {
    try {
        System.setProperty("streamer.Link.debug", "true");
        System.setProperty("streamer.Element.debug", "true");
        System.setProperty("rdpclient.MockServer.debug", "true");
        Pipeline pipeline = new PipelineImpl("echo client");
        AprSocketWrapperImpl socketWrapper = new AprSocketWrapperImpl("socket", null);
        pipeline.add(socketWrapper);
        pipeline.add(new BaseElement("echo"));
        // To decouple input and output
        pipeline.add(new Queue("queue"));
        pipeline.link("socket", "echo", "queue", "socket");
        final byte[] mockData = new byte[] { 0x01, 0x02, 0x03 };
        MockServer server = new MockServer(new Packet[] { new Packet("Server hello") {

            {
                type = SERVER;
                data = mockData;
            }
        }, new Packet("Client hello") {

            {
                type = CLIENT;
                data = mockData;
            }
        }, new Packet("Server hello") {

            {
                type = SERVER;
                data = mockData;
            }
        }, new Packet("Client hello") {

            {
                type = CLIENT;
                data = mockData;
            }
        } });
        server.start();
        InetSocketAddress address = server.getAddress();
        socketWrapper.connect(address);
    } catch (Exception e) {
        e.printStackTrace(System.err);
    }
}
Also used : BaseElement(streamer.BaseElement) Packet(streamer.debug.MockServer.Packet) PipelineImpl(streamer.PipelineImpl) MockServer(streamer.debug.MockServer) InetSocketAddress(java.net.InetSocketAddress) Queue(streamer.Queue) IOException(java.io.IOException) Pipeline(streamer.Pipeline)

Aggregations

Pipeline (streamer.Pipeline)32 PipelineImpl (streamer.PipelineImpl)32 Element (streamer.Element)28 MockSource (streamer.debug.MockSource)25 MockSink (streamer.debug.MockSink)24 BaseElement (streamer.BaseElement)14 ByteBuffer (streamer.ByteBuffer)7 ScreenDescription (common.ScreenDescription)6 FakeSink (streamer.debug.FakeSink)3 InetSocketAddress (java.net.InetSocketAddress)2 SSLState (streamer.ssl.SSLState)2 RdpBufferedImageCanvas (com.cloud.consoleproxy.rdp.RdpBufferedImageCanvas)1 BufferedImageCanvas (common.BufferedImageCanvas)1 SizeChangeListener (common.SizeChangeListener)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 RdpClient (rdpclient.RdpClient)1 ServerBitmapUpdate (rdpclient.rdp.ServerBitmapUpdate)1