private void createResponseType() {

    createInfoType();

    FieldCreate fieldCreate = FieldFactory.getFieldCreate();

    String[] names = new String[1];
    Field[] fields = new Field[1];

    names[0] = "channels";
    fields[0] = fieldCreate.createStructureArray(infoType);

    responseType = fieldCreate.createStructure(names, fields);
  }
  private void createRequestType() {

    FieldCreate fieldCreate = FieldFactory.getFieldCreate();

    String[] names = new String[3];
    Field[] fields = new Field[3];

    names[0] = "command";
    fields[0] = fieldCreate.createScalar(ScalarType.pvString);

    names[1] = "key";
    fields[1] = fieldCreate.createScalar(ScalarType.pvInt);

    names[2] = "pattern";
    fields[2] = fieldCreate.createScalar(ScalarType.pvString);

    requestType = fieldCreate.createStructure(names, fields);
  }
  /** Initialize data stuctures. */
  private void initialize() {
    FieldCreate fieldCreate = PVFactory.getFieldCreate();
    PVDataCreate pvDataCreate = PVFactory.getPVDataCreate();
    // TODO hierarchy can be used...
    String[] fieldNames =
        new String[] {
          "connections",
          "allocatedMemory",
          "freeMemory",
          "threads",
          "deadlocks",
          "averageSystemLoad"
        };

    Field[] fields = new Field[6];
    fields[0] = fieldCreate.createScalar(ScalarType.pvInt);
    fields[1] = fieldCreate.createScalar(ScalarType.pvLong);
    fields[2] = fieldCreate.createScalar(ScalarType.pvLong);
    fields[3] = fieldCreate.createScalar(ScalarType.pvInt);
    fields[4] = fieldCreate.createScalar(ScalarType.pvInt);
    fields[5] = fieldCreate.createScalar(ScalarType.pvDouble);

    status = pvDataCreate.createPVStructure(fieldCreate.createStructure(fieldNames, fields));
  }
  private void createInfoType() {

    FieldCreate fieldCreate = FieldFactory.getFieldCreate();

    String[] names = new String[5];
    Field[] fields = new Field[5];

    names[0] = "name";
    fields[0] = fieldCreate.createScalar(ScalarType.pvString);

    names[1] = "start_sec";
    fields[1] = fieldCreate.createScalar(ScalarType.pvInt);

    names[2] = "start_nano";
    fields[2] = fieldCreate.createScalar(ScalarType.pvInt);

    names[3] = "end_sec";
    fields[3] = fieldCreate.createScalar(ScalarType.pvInt);

    names[4] = "end_nano";
    fields[4] = fieldCreate.createScalar(ScalarType.pvInt);

    infoType = fieldCreate.createStructure(names, fields);
  }