// ----------------------------------------------------------
  void insertIntoByteArray(LogicalByteArray buf) {
    buf.insertString(datasourceBytes);
    buf.insertString(catalogBytes);
    buf.insertString(schemaBytes);
    buf.insertString(locationBytes);
    buf.insertString(userRoleBytes);

    buf.insertShort(accessMode);
    buf.insertShort(autoCommit);
    buf.insertInt(queryTimeoutSec);
    buf.insertInt(idleTimeoutSec);
    buf.insertInt(loginTimeoutSec);
    buf.insertShort(txnIsolationLevel);
    buf.insertShort(rowSetSize);

    buf.insertInt(diagnosticFlag);
    buf.insertInt(processId);

    buf.insertString(computerNameBytes);
    buf.insertString(windowTextBytes);

    buf.insertInt(ctxACP);
    buf.insertInt(ctxDataLang);
    buf.insertInt(ctxErrorLang);
    buf.insertShort(ctxCtrlInferNXHAR);

    buf.insertShort(cpuToUse);
    buf.insertShort(cpuToUseEnd);
    buf.insertString(connectOptionsBytes);

    clientVersionList.insertIntoByteArray(buf);
  }
  // ----------------------------------------------------------
  int sizeOf(InterfaceConnection ic) throws CharacterCodingException, UnsupportedCharsetException {
    int size = 0;

    datasourceBytes = ic.encodeString(datasource, InterfaceUtilities.SQLCHARSETCODE_UTF8);
    catalogBytes = ic.encodeString(catalog, InterfaceUtilities.SQLCHARSETCODE_UTF8);
    schemaBytes = ic.encodeString(schema, InterfaceUtilities.SQLCHARSETCODE_UTF8);
    locationBytes = ic.encodeString(location, 1);
    userRoleBytes = ic.encodeString(userRole, 1);
    computerNameBytes = ic.encodeString(computerName, InterfaceUtilities.SQLCHARSETCODE_UTF8);
    windowTextBytes = ic.encodeString(windowText, InterfaceUtilities.SQLCHARSETCODE_UTF8);
    connectOptionsBytes = ic.encodeString(connectOptions, 1);

    size = TRANSPORT.size_bytes(datasourceBytes);
    size += TRANSPORT.size_bytes(catalogBytes);
    size += TRANSPORT.size_bytes(schemaBytes);
    size += TRANSPORT.size_bytes(locationBytes);
    size += TRANSPORT.size_bytes(userRoleBytes);

    size += TRANSPORT.size_short; // accessMode
    size += TRANSPORT.size_short; // autoCommit
    size += TRANSPORT.size_int; // queryTimeoutSec
    size += TRANSPORT.size_int; // idleTimeoutSec
    size += TRANSPORT.size_int; // loginTimeoutSec
    size += TRANSPORT.size_short; // txnIsolationLevel
    size += TRANSPORT.size_short; // rowSetSize

    size += TRANSPORT.size_short; // diagnosticFlag
    size += TRANSPORT.size_int; // processId

    size += TRANSPORT.size_bytes(computerNameBytes);
    size += TRANSPORT.size_bytes(windowTextBytes);

    size += TRANSPORT.size_int; // ctxACP
    size += TRANSPORT.size_int; // ctxDataLang
    size += TRANSPORT.size_int; // ctxErrorLang
    size += TRANSPORT.size_short; // ctxCtrlInferNCHAR

    size += TRANSPORT.size_short; // cpuToUse
    size += TRANSPORT.size_short; // cpuToUseEnd
    size += TRANSPORT.size_bytes(connectOptionsBytes);

    size += clientVersionList.sizeOf();

    return size;
  }