private ByteBuf encodeContent(long deviceId, short type, ByteBuf content) { ByteBuf buf = Unpooled.buffer(0); String uniqueId = Context.getIdentityManager().getById(deviceId).getUniqueId(); buf.writeByte('@'); buf.writeByte('@'); buf.writeShortLE(2 + 2 + 1 + 20 + 2 + content.readableBytes() + 2 + 2); // length buf.writeByte(1); // protocol version buf.writeBytes(uniqueId.getBytes(StandardCharsets.US_ASCII)); buf.writeZero(20 - uniqueId.length()); buf.writeShort(type); buf.writeBytes(content); buf.writeShortLE(Checksum.crc16(Checksum.CRC16_X25, buf.nioBuffer())); buf.writeByte('\r'); buf.writeByte('\n'); return buf; }
private void sendReply(Channel channel, SocketAddress remoteAddress, long deviceId, byte packetNumber) { if (channel != null) { ByteBuf reply = Unpooled.buffer(28); reply.writeByte('M'); reply.writeByte('C'); reply.writeByte('G'); reply.writeByte('P'); reply.writeByte(MSG_SERVER_ACKNOWLEDGE); reply.writeIntLE((int) deviceId); reply.writeByte(commandCount++); reply.writeIntLE(0); // authentication code reply.writeByte(0); reply.writeByte(packetNumber); reply.writeZero(11); byte checksum = 0; for (int i = 4; i < 27; i++) { checksum += reply.getByte(i); } reply.writeByte(checksum); channel.writeAndFlush(new NetworkMessage(reply, remoteAddress)); } }
public static void formatTlv(final int type,final ByteBuf body, final ByteBuf out) { out.writeShort(type); out.writeShort(body.writerIndex()); out.writeBytes(body); out.writeZero(getPadding(HEADER_SIZE + body.writerIndex(), PADDED_TO)); }
public static void serializePrefixAttributes(final Flags flags, final Algorithm algorithm, final SidLabelIndex sidLabelIndex, final ByteBuf buffer) { final BitArray bitFlags = serializePrefixFlags(flags, sidLabelIndex); bitFlags.toByteBuf(buffer); buffer.writeByte(algorithm.getIntValue()); buffer.writeZero(RESERVED_PREFIX); buffer.writeBytes(SidLabelIndexParser.serializeSidValue(sidLabelIndex)); }
private void serializeTableBody(final MultipartReplyBody body, final ByteBuf outBuffer) { MultipartReplyTableCase tableCase = (MultipartReplyTableCase) body; MultipartReplyTable table = tableCase.getMultipartReplyTable(); for (TableStats tableStats : table.getTableStats()) { outBuffer.writeByte(tableStats.getTableId()); outBuffer.writeZero(TABLE_PADDING); outBuffer.writeInt(tableStats.getActiveCount().intValue()); outBuffer.writeLong(tableStats.getLookupCount().longValue()); outBuffer.writeLong(tableStats.getMatchedCount().longValue()); } }
@Override public void serialize(Instruction instruction, ByteBuf outBuffer) { outBuffer.writeShort(getType()); outBuffer.writeShort(InstructionConstants.STANDARD_INSTRUCTION_LENGTH); outBuffer.writeByte(((GotoTableCase) instruction.getInstructionChoice()) .getGotoTable().getTableId()); outBuffer.writeZero(InstructionConstants.PADDING_IN_GOTO_TABLE); }
private static void serializeQueueBody(final MultipartRequestBody multipartRequestBody, final ByteBuf output) { MultipartRequestQueueCase queueCase = (MultipartRequestQueueCase) multipartRequestBody; MultipartRequestQueue queue = queueCase.getMultipartRequestQueue(); output.writeShort(queue.getPortNo().intValue()); output.writeZero(PADING_IN_QUEUE_BODY); output.writeInt(queue.getQueueId().intValue()); }
private void serializeExperimenterBody(ExperimenterIdQueueProperty body, ByteBuf outBuffer) { // TODO: Experimenter Data is vendor specific that should implement its // own serializer outBuffer.writeInt(body.getExperimenter().getValue().intValue()); outBuffer.writeZero(PROPERTY_EXPERIMENTER_PADDING); } }
@Override public void serialize(Instruction instruction, ByteBuf outBuffer) { outBuffer.writeShort(getType()); outBuffer.writeShort(InstructionConstants.WRITE_METADATA_LENGTH); outBuffer.writeZero(InstructionConstants.PADDING_IN_WRITE_METADATA); WriteMetadata metadata = ((WriteMetadataCase) instruction.getInstructionChoice()) .getWriteMetadata(); outBuffer.writeBytes(metadata.getMetadata()); outBuffer.writeBytes(metadata.getMetadataMask()); }
private void encode(ByteBuf buffer) { int serviceCount = currentServices.size(); buffer.writeShort(serviceCount); int[] offsets = new int[serviceCount]; int offsetsStartIndex = buffer.writerIndex(); buffer.writeZero(serviceCount * 2); for (int i = 0; i < serviceCount; i++) { offsets[i] = buffer.writerIndex() - offsetsStartIndex + 2; currentServices.get(i).encodeRequest(buffer); } buffer.markWriterIndex(); buffer.writerIndex(offsetsStartIndex); for (int offset : offsets) { buffer.writeShort(offset); } buffer.resetWriterIndex(); }
private static void serializePortBody(final MultipartRequestBody multipartRequestBody, final ByteBuf output) { MultipartRequestPortStatsCase portstatsCase = (MultipartRequestPortStatsCase) multipartRequestBody; MultipartRequestPortStats portstats = portstatsCase.getMultipartRequestPortStats(); output.writeShort(portstats.getPortNo().intValue()); output.writeZero(PADDING_IN_MULTIPART_REQUEST_PORT_BODY); }
int lengthStartIndex = buffer.writerIndex(); buffer.writeByte(0); buffer.writeZero(1); int dataStartIndex = buffer.writerIndex(); int bytesWritten = buffer.writerIndex() - dataStartIndex; int wordsWritten = bytesWritten / 2; buffer.markWriterIndex(); buffer.writerIndex(lengthStartIndex); buffer.writeByte(wordsWritten); buffer.resetWriterIndex();
@Override public void serialize(HelloInput message, ByteBuf outBuffer) { int startWriterIndex = outBuffer.writerIndex(); ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH); serializeElementsList(message, outBuffer); int endWriterIndex = outBuffer.writerIndex(); int paddingRemainder = (endWriterIndex - startWriterIndex) % EncodeConstants.PADDING; if (paddingRemainder != 0) { outBuffer.writeZero(EncodeConstants.PADDING - paddingRemainder); } ByteBufUtils.updateOFHeaderLength(outBuffer); }
@Override protected void encode(ChannelHandlerContext ctx, TFrame frame, ByteBuf out) throws Exception { // size:2 out.writeShort(frame.size + TFrame.FRAME_HEADER_LENGTH); // type:1 out.writeByte(frame.type); // reserved:1 out.writeZero(1); // id:4 out.writeInt((int) frame.id); // reserved:8 out.writeZero(8); // payload:16+ out.writeBytes(frame.payload); }
static ByteBuf serializeOrigRouteIp(final IpAddress origRouteIp) { final ByteBuf body = Unpooled.buffer(); if (origRouteIp.getIpv4Address() != null) { body.writeByte(Ipv4Util.IP4_BITS_LENGTH); body.writeBytes(Ipv4Util.bytesForAddress(origRouteIp.getIpv4Address())); } else if (origRouteIp.getIpv6Address() != null) { body.writeByte(Ipv6Util.IPV6_BITS_LENGTH); body.writeBytes(Ipv6Util.bytesForAddress(origRouteIp.getIpv6Address())); } else { body.writeZero(ZERO_BYTE); } return body; } }
@Override public void serialize(GetFeaturesOutput message, ByteBuf outBuffer) { ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH); outBuffer.writeLong(message.getDatapathId().longValue()); outBuffer.writeInt(message.getBuffers().intValue()); outBuffer.writeByte(message.getTables().intValue()); outBuffer.writeByte(message.getAuxiliaryId().intValue()); outBuffer.writeZero(PADDING); writeCapabilities(message.getCapabilities(), outBuffer); outBuffer.writeInt(message.getReserved().intValue()); ByteBufUtils.updateOFHeaderLength(outBuffer); }
ByteBufWriteUtil.writeMinimalPrefix(prefix, withdrawnRoutesBuf); messageBody.writeShort(withdrawnRoutesBuf.writerIndex()); messageBody.writeBytes(withdrawnRoutesBuf); } else { messageBody.writeZero(WITHDRAWN_ROUTES_LENGTH_SIZE); messageBody.writeShort(pathAttributesBuf.writerIndex()); messageBody.writeBytes(pathAttributesBuf); } else { messageBody.writeZero(TOTAL_PATH_ATTR_LENGTH_SIZE);
static void serializeLearnHeader(final ByteBuf outBuffer, ActionLearn action) { outBuffer.writeShort(action.getNxActionLearn().getIdleTimeout().shortValue()); outBuffer.writeShort(action.getNxActionLearn().getHardTimeout().shortValue()); outBuffer.writeShort(action.getNxActionLearn().getPriority().shortValue()); outBuffer.writeLong(action.getNxActionLearn().getCookie().longValue()); outBuffer.writeShort(action.getNxActionLearn().getFlags().shortValue()); outBuffer.writeByte(action.getNxActionLearn().getTableId().byteValue()); outBuffer.writeZero(1); outBuffer.writeShort(action.getNxActionLearn().getFinIdleTimeout().shortValue()); outBuffer.writeShort(action.getNxActionLearn().getFinHardTimeout().shortValue()); }
@Override public void serialize(final Action input, final ByteBuf outBuffer) { ActionOutputReg action = ((ActionOutputReg) input.getActionChoice()); serializeHeader(LENGTH, SUBTYPE, outBuffer); outBuffer.writeShort(action.getNxActionOutputReg().getNBits().shortValue()); outBuffer.writeInt(action.getNxActionOutputReg().getSrc().intValue()); outBuffer.writeShort(action.getNxActionOutputReg().getMaxLen().shortValue()); outBuffer.writeZero(6); }