@Override
  public AgentData unmarshalling(byte[] bdata, AgentData adata) {
    AgentInputStream ais = null;
    FileData data = (FileData) adata;

    try {
      ais = ObjectFactory.getObjectPool(AgentInputStream.class).borrowObject();
      ais.setInput(new ByteArrayInputStream(bdata));

      // fixed
      // 앞에 typeCd가 한번 더 붙어서 오기때문에 두번 read한다.
      data.setTypeCd((char) ais.read());
      data.setAgentId(ais.readString(APMConstants.AGENT_ID_LEN).trim());
      data.setTypeCd((char) ais.read());
      data.setReqId(ais.readString(APMConstants.REQ_ID_LEN).trim());
      data.setReqSeq(ais.readShort());
      data.setReqChkDtm(ais.readString(APMConstants.DTM_LEN).trim());
      data.setInOutCl(ais.readString(APMConstants.INOUT_CL_LEN).trim());
      data.setElapsedTime(ais.readInt());
      // 파일 타입일 때는 ip/port가 없으므로 VO에 담지 않는다.
      ais.readString(APMConstants.IP_LEN);
      ais.readInt();
      ais.readInt();
      data.setFilePath(ais.readString((byte) APMConstants.COL_DELIMITER));

      return data;
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        ObjectFactory.getObjectPool(AgentInputStream.class).returnObject(ais);
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
    return data;
  }