Chromium Code Reviews| Index: cloud_print/gcp20/prototype/dns_packet_parser.cc |
| diff --git a/cloud_print/gcp20/prototype/dns_packet_parser.cc b/cloud_print/gcp20/prototype/dns_packet_parser.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..be1e293ed4b9170ae001a56200f9eceaf598da1c |
| --- /dev/null |
| +++ b/cloud_print/gcp20/prototype/dns_packet_parser.cc |
| @@ -0,0 +1,37 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "cloud_print/gcp20/prototype/dns_packet_parser.h" |
| + |
| +#include "net/base/big_endian.h" |
| + |
| +DnsQueryRecord::DnsQueryRecord() { |
| +} |
| + |
| +DnsQueryRecord::~DnsQueryRecord() { |
| +} |
| + |
| +DnsPacketParser::DnsPacketParser() : packet_(NULL), length_(0) { |
| +} |
| + |
| +DnsPacketParser::DnsPacketParser(const char* packet, |
| + size_t length, |
| + size_t offset) |
| + : packet_(packet), length_(length), |
|
Vitaly Buka (NO REVIEWS)
2013/06/14 19:27:07
4 spaces before :
and one initializer per line.
maksymb
2013/06/14 22:17:14
Done.
|
| + record_parser_(packet, length, offset) { |
| +} |
| + |
| +bool DnsPacketParser::ReadRecord(DnsQueryRecord* out) { |
| + DCHECK(packet_); |
| + size_t consumed = ReadName(&out->qname); |
| + if (!consumed) |
| + return false; |
| + net::BigEndianReader reader(packet_ + GetOffset() + consumed, |
| + length_ - (GetOffset() + consumed)); |
| + if (reader.ReadU16(&out->qtype) && reader.ReadU16(&out->qclass)) |
| + return record_parser_.SkipQuestion(); // instead of |cur_ = reader.ptr();| |
| + |
| + return false; |
| +} |
| + |