public void process(Interest interest) { RequestInfo rp = request.getRequestProcessor(); rp.setStage(org.apache.coyote.Constants.STAGE_PARSE); error = false; // keepAlive = true; // setting up the I/O // this.interest = interest; // outputBuffer.recycle(); inputBuffer.setInterest(interest); inputBuffer.setCCNConnector(endpoint.getCCNConnector()); outputBuffer.setInterest(interest); outputBuffer.setCCNConnector(endpoint.getCCNConnector()); outputBuffer.setUriHashMap(endpoint.getCCNConnector().getUriHashMap()); // outputBuffer.setCcnhandle(endpoint.getCcnhandle()); // step1: parse CCN header // step2: put the header content into Request // while (!error && !endpoint.isPaused()&&keepAlive) { if (!error) { rp.setStage(org.apache.coyote.Constants.STAGE_PREPARE); inputBuffer.parseRequet(); // outputBuffer.setUri(inputBuffer.getOriginalUri()); outputBuffer.setUri(inputBuffer.getUri()); outputBuffer.initCCNOutputStream(); request.setStartTime(System.currentTimeMillis()); // step3: call service(request,response) rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE); try { adapter.service(request, response); // keepAlive = false; } catch (Exception e) { // TODO Auto-generated catch block error = true; e.printStackTrace(); } // step4: Finish the handling of the request rp.setStage(org.apache.coyote.Constants.STAGE_ENDINPUT); inputBuffer.endRequest(); // step5: next request // inputBuffer.nextRequest(); // outputBuffer.nextRequest(); } rp.setStage(org.apache.coyote.Constants.STAGE_ENDED); // Recycle inputBuffer.recycle(); outputBuffer.recycle(); // this.interest = null; }
/** * When committing the response, we have to validate the set of headers, as well as setup the * response filters. */ protected void prepareResponse() { /** * nan * * <p>copy header info into InternCCNOutputBuffer. * * <p>create CCNOutputStream ??? */ String uri = inputBuffer.getUri(); // get the file name; int index = uri.indexOf("."); String fileInfo = null; String rootPath = endpoint.getCCNConnector().getRootPath(); String filepath = rootPath + uri; File file = new File(filepath); file.length(); // 注意:当response.getContentLenthlog()为负数时,会有意向不到的问题。 /* if(index !=-1){ fileInfo = "Type:" + MapFileFormat(uri.substring(index + 1)) + "\nLength:" + response.getContentLengthLong() + "\r\n"; }else{ // no format fileInfo = "Type:" + "text/html" + "\nLength:" + response.getContentLengthLong() + "\r\n"; } */ if (index != -1) { fileInfo = "Type:" + MapFileFormat(uri.substring(index + 1)) + "\nLength:" + file.length() + "\r\n"; } else { // no format fileInfo = "Type:" + "text/html" + "\nLength:" + file.length() + "\r\n"; } // System.out.println("Before set Pos, Buffer pos value is: // "+String.valueOf(outputBuffer.getPos())); outputBuffer.setPos(0); // System.out.println("After set Pos, Buffer pos value is: // "+String.valueOf(outputBuffer.getPos())); outputBuffer.write(fileInfo.getBytes()); outputBuffer.addActiveFilter(); }