コード例 #1
0
  private Param readHeader() throws IOException {
    if (sequenceMatcher.isEOF()) {
      return null;
    }

    if (headersHandler == null) {
      headersHandler = new HeadersHandler();
    } else {
      headersHandler.reset();
    }

    sequenceMatcher.setBytesHandler(headersHandler);
    sequenceMatcher.findSequence(-1, CR_LF);

    if (sequenceMatcher.isMatchedAndNotEOF() && !headersHandler.dataEquals(HYPHENS)) {
      headersHandler.reset();

      sequenceMatcher.findSequence(-1, CR_LF, CR_LF);

      if (!sequenceMatcher.isMatchedAndNotEOF()) {
        throw new IOException("Request header cannot be read");
      }

      String headersString = headersHandler.asString();
      Map<String, String> headers = new HashMap<String, String>();
      String[] split = headersString.split("\r\n");
      for (String headerString : split) {
        parseParams(headerString, "; ", headers);
      }

      return createParam(headers);
    }

    return null;
  }
コード例 #2
0
 private void readData(final Param param) throws IOException {
   sequenceMatcher.setBytesHandler(param);
   sequenceMatcher.findSequence(CHUNK_SIZE, CR_LF, HYPHENS, boundaryMarker);
   if (!this.sequenceMatcher.isMatchedAndNotEOF()) {
     throw new IOException("Request data cannot be read");
   }
 }
コード例 #3
0
 private void readProlog() throws IOException {
   sequenceMatcher.setBytesHandler(NOOP_HANDLER);
   sequenceMatcher.findSequence(-1, HYPHENS, boundaryMarker);
   if (!sequenceMatcher.isMatchedAndNotEOF()) {
     throw new IOException("Request prolog cannot be read");
   }
 }