@Override public int readUnsignedShort() { return buf.readUnsignedShort(); }
@Override public int readUnsignedShort() { return buf.readUnsignedShort(); }
@Override public int readUnsignedShort() { return buf.readUnsignedShort(); }
@Override public int readUnsignedShort() { return buffer.readUnsignedShort(); }
public static Integer parseRecordShallow(ByteBuf bb) { final int start = bb.readerIndex(); int usedTemplateId = bb.readUnsignedShort(); int length = bb.readUnsignedShort(); int end = bb.readerIndex() - 4 + length; bb.readerIndex(end); return usedTemplateId; }
@Override public int readUnsignedShort() { checkReadableBytes(2); return buffer.readUnsignedShort(); }
@Override public int readUnsignedShort() { checkReadableBytes(2); return buffer.readUnsignedShort(); }
private static double decodeCoordinate(ByteBuf buf) { double degrees = buf.getUnsignedShort(buf.readerIndex()) / 100; double minutes = buf.readUnsignedShort() % 100 + buf.readUnsignedShort() * 0.0001; degrees += minutes / 60; byte hemisphere = buf.readByte(); if (hemisphere == 'S' || hemisphere == 'W') { degrees = -degrees; } return degrees; }
@Override public int readUnsignedShort() { checkReadableBytes(2); return buffer.readUnsignedShort(); }
@Override public final DnsQuestion decodeQuestion(ByteBuf in) throws Exception { String name = decodeName(in); DnsRecordType type = DnsRecordType.valueOf(in.readUnsignedShort()); int qClass = in.readUnsignedShort(); return new DefaultDnsQuestion(name, type, qClass); }
@Override protected Object decode( Channel channel, SocketAddress remoteAddress, Object msg) throws Exception { ByteBuf buf = (ByteBuf) msg; buf.skipBytes(3); // header buf.readUnsignedShort(); // length String sentence = buf.toString(buf.readerIndex(), buf.readableBytes() - 3, StandardCharsets.US_ASCII); buf.skipBytes(3); // footer return decodeMessage(channel, remoteAddress, sentence); }
private List<Position> decodeLocationBatch(DeviceSession deviceSession, ByteBuf buf) { List<Position> positions = new LinkedList<>(); int count = buf.readUnsignedShort(); buf.readUnsignedByte(); // location type for (int i = 0; i < count; i++) { int endIndex = buf.readUnsignedShort() + buf.readerIndex(); positions.add(decodeLocation(deviceSession, buf)); buf.readerIndex(endIndex); } return positions; }
private Object decodeUdp(Channel channel, SocketAddress remoteAddress, ByteBuf buf) throws Exception { buf.readUnsignedShort(); // length buf.readUnsignedShort(); // packet id buf.readUnsignedByte(); // packet type int locationPacketId = buf.readUnsignedByte(); String imei = buf.readSlice(buf.readUnsignedShort()).toString(StandardCharsets.US_ASCII); return parseData(channel, remoteAddress, buf, locationPacketId, imei); }
@Override public final DnsQuestion decodeQuestion(ByteBuf in) throws Exception { String name = decodeName(in); DnsRecordType type = DnsRecordType.valueOf(in.readUnsignedShort()); int qClass = in.readUnsignedShort(); return new DefaultDnsQuestion(name, type, qClass); }
@Override protected void decode(ChannelHandlerContext ctx, DatagramPacket packet, List<Object> out) throws Exception { final ByteBuf buf = packet.content(); final DnsQuery query = newQuery(packet, buf); boolean success = false; try { final int questionCount = buf.readUnsignedShort(); final int answerCount = buf.readUnsignedShort(); final int authorityRecordCount = buf.readUnsignedShort(); final int additionalRecordCount = buf.readUnsignedShort(); decodeQuestions(query, buf, questionCount); decodeRecords(query, DnsSection.ANSWER, buf, answerCount); decodeRecords(query, DnsSection.AUTHORITY, buf, authorityRecordCount); decodeRecords(query, DnsSection.ADDITIONAL, buf, additionalRecordCount); out.add(query); success = true; } finally { if (!success) { query.release(); } } }
private long readValue(ByteBuf buf, int length, boolean signed) { switch (length) { case 1: return signed ? buf.readByte() : buf.readUnsignedByte(); case 2: return signed ? buf.readShort() : buf.readUnsignedShort(); case 4: return signed ? buf.readInt() : buf.readUnsignedInt(); default: return buf.readLong(); } }
private static DnsQuery newQuery(DatagramPacket packet, ByteBuf buf) { final int id = buf.readUnsignedShort(); final int flags = buf.readUnsignedShort(); if (flags >> 15 == 1) { throw new CorruptedFrameException("not a query"); } final DnsQuery query = new DatagramDnsQuery( packet.sender(), packet.recipient(), id, DnsOpCode.valueOf((byte) (flags >> 11 & 0xf))); query.setRecursionDesired((flags >> 8 & 1) == 1); query.setZ(flags >> 4 & 0x7); return query; }
private static DnsResponse newResponse(DatagramPacket packet, ByteBuf buf) { final int id = buf.readUnsignedShort(); final int flags = buf.readUnsignedShort(); if (flags >> 15 == 0) { throw new CorruptedFrameException("not a response"); } final DnsResponse response = new DatagramDnsResponse( packet.sender(), packet.recipient(), id, DnsOpCode.valueOf((byte) (flags >> 11 & 0xf)), DnsResponseCode.valueOf((byte) (flags & 0xf))); response.setRecursionDesired((flags >> 8 & 1) == 1); response.setAuthoritativeAnswer((flags >> 10 & 1) == 1); response.setTruncated((flags >> 9 & 1) == 1); response.setRecursionAvailable((flags >> 7 & 1) == 1); response.setZ(flags >> 4 & 0x7); return response; }
public Date readTime(ByteBuf buf) { long weekTime = (long) (readFloat(buf) * 1000); if (weekNumber == 0) { weekNumber = buf.readUnsignedShort(); } DateBuilder dateBuilder = new DateBuilder().setDate(1980, 1, 6); dateBuilder.addMillis(weekNumber * 7 * 24 * 60 * 60 * 1000 + weekTime); return dateBuilder.getDate(); }
private Date decodeTime(ByteBuf buf) { DateBuilder dateBuilder = new DateBuilder() .setDate(buf.readUnsignedShort(), buf.readUnsignedByte(), buf.readUnsignedByte()) .setTime(buf.readUnsignedByte(), buf.readUnsignedByte(), buf.readUnsignedByte()); return dateBuilder.getDate(); }