@Override protected boolean payload(AppendableByteWriter<?> payload, GraphManager gm, ChannelReader params, HTTPVerbDefaults verb) { jsonRenderer.render(payload, params.structured()); return true; }
public void read(HTTPHeader value, ChannelReader reader, long fieldId) { read(value,reader.structured().read(fieldId)); }
@Override public void read(ChannelReader reader) { if (reader.available()<1) { //error return; } int age = reader.structured().readInt(Fields.AGE); String name = reader.structured().readText(Fields.NAME); Appendables.appendValue(console.append(name).append(" "),age).append("\n"); } };
ChannelWriter outStream = Pipe.openOutputStream(output); BlockingWorkerOperation<T> operation = inStream.structured().structAssociatedObject(); assert( inStream.structured().associatedFieldObject(StructuredReader.structType(inStream.structured()), 0).toString().equalsIgnoreCase("connection")); assert( inStream.structured().associatedFieldObject(StructuredReader.structType(inStream.structured()), 1).toString().equalsIgnoreCase("sequence")); int copyLimit = inStream.structured().dataPositionFromIndexOffset(2); assert(inStream.structured().dataPositionFromIndexOffset(0)<copyLimit) : "Connection must appear before business fields"; assert(inStream.structured().dataPositionFromIndexOffset(1)<copyLimit) : "Sequence must appear before business fields";
private int echoHeaders(DataOutputBlobWriter<NetPayloadSchema> outputStream, int len, final int blobMask, byte[] blob, final int bytePosition, ChannelReader reader) { HTTPHeader[] headersToEcho = conStruct.headersToEcho(); if (null!=headersToEcho) { int newLinePos = (bytePosition+len-2); assert(blob[newLinePos&blobMask]=='\r'); assert(blob[(1+newLinePos)&blobMask]=='\n'); if (blob[newLinePos&blobMask]=='\r') { len-=2;//confirm it is \r\n? add assert! DataOutputBlobWriter.write(outputStream, blob, bytePosition, len, blobMask); len = 0;//so the following write will not write a second time. for(int i=0; i<headersToEcho.length; i++) { HTTPHeader header = headersToEcho[i]; if (!reader.structured().isNull(header)) { System.err.println("echo header "+header); spec.writeHeader(outputStream, header, reader.structured().read(header)); } //TODO: confirm works with chunked and not } outputStream.write(BYTES_NEWLINE); } } return len; }
@Override public boolean message(CharSequence topic, ChannelReader payload) { StructuredReader struct = payload.structured(); return responseService.publishHTTPResponse( struct.readLong(Field.CONNECTION), struct.readLong(Field.SEQUENCE), struct.readInt(Field.STATUS), HTTPContentTypeDefaults.JSON, w->{ struct.readText(Field.PAYLOAD, w); }); }
StructuredReader reader = payload.structured(); if (!reader.hasAttachedObject(fieldIdAssoc)) {