1 module hunt.http.server.Http2ServerDecoder; 2 3 import hunt.http.server.Http2ServerConnection; 4 import hunt.http.HttpConnection; 5 6 import hunt.collection; 7 import hunt.io.ByteBuffer; 8 import hunt.io.channel; 9 import hunt.net.codec.Decoder; 10 import hunt.net.Connection; 11 import hunt.logging; 12 13 14 15 class Http2ServerDecoder : DecoderChain { 16 17 this() { 18 super(null); 19 } 20 21 override 22 DataHandleStatus decode(ByteBuffer buffer, Connection session) { 23 DataHandleStatus resultStatus = DataHandleStatus.Done; 24 25 if (!buffer.hasRemaining()) { 26 return resultStatus; 27 } 28 29 version(HUNT_HTTP_DEBUG) { 30 tracef("buffer: %s", buffer.toString()); 31 tracef("the server session %s received the %s bytes", session.getId(), buffer.remaining()); 32 } 33 34 Http2ServerConnection connection = cast(Http2ServerConnection) session.getAttribute(HttpConnection.NAME); 35 connection.getParser().parse(BufferUtils.toHeapBuffer(buffer)); 36 //connection.getParser().parse(buffer); 37 BufferUtils.clear(buffer); 38 39 return resultStatus; 40 } 41 42 43 44 // public void decode(ByteBuffer buffer, Session session) { 45 // if (!buffer.hasRemaining()) { 46 // return; 47 // } 48 // 49 // if (log.isDebugEnabled()) { 50 // log.debug("the server session {} received the {} bytes", session.getSessionId(), buffer.remaining()); 51 // } 52 // 53 // HTTP2ServerConnection connection = (HTTP2ServerConnection) session.getAttachment(); 54 // connection.getParser().parse(toHeapBuffer(buffer)); 55 //} 56 57 }