Line data Source code
1 : /* 2 : * 3 : * Copyright (c) 2020 Project CHIP Authors 4 : * 5 : * Licensed under the Apache License, Version 2.0 (the "License"); 6 : * you may not use this file except in compliance with the License. 7 : * You may obtain a copy of the License at 8 : * 9 : * http://www.apache.org/licenses/LICENSE-2.0 10 : * 11 : * Unless required by applicable law or agreed to in writing, software 12 : * distributed under the License is distributed on an "AS IS" BASIS, 13 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 : * See the License for the specific language governing permissions and 15 : * limitations under the License. 16 : */ 17 : 18 : #pragma once 19 : 20 : #include <lib/dnssd/minimal_mdns/records/ResourceRecord.h> 21 : 22 : namespace mdns { 23 : namespace Minimal { 24 : 25 : class SrvResourceRecord : public ResourceRecord 26 : { 27 : public: 28 8 : SrvResourceRecord(const FullQName & qName, const FullQName & serverName, uint16_t port) : 29 8 : ResourceRecord(QType::SRV, qName), mServerName(serverName), mPort(port) 30 8 : {} 31 127 : SrvResourceRecord(const SrvResourceRecord & other) = default; 32 : SrvResourceRecord & operator=(const SrvResourceRecord & other) = default; 33 : 34 : FullQName GetServerName() const { return mServerName; } 35 : uint16_t GetPort() const { return mPort; } 36 : uint16_t GetPriority() const { return mPriority; } 37 : uint16_t GetWeight() const { return mWeight; } 38 : 39 : void SetPriority(uint16_t value) { mPriority = value; } 40 : void SetWeight(uint16_t value) { mWeight = value; } 41 : 42 : protected: 43 48 : bool WriteData(RecordWriter & out) const override 44 : { 45 48 : return out.Put16(mPriority).Put16(mWeight).Put16(mPort).WriteQName(mServerName).Fit(); 46 : } 47 : 48 : private: 49 : FullQName mServerName; 50 : uint16_t mPort; 51 : uint16_t mPriority = 0; 52 : uint16_t mWeight = 0; 53 : }; 54 : 55 : } // namespace Minimal 56 : } // namespace mdns