#include <cassert>
#include "dnsutil.h"
#include "response.h"
Response::Response(bool i_bAA, bool i_bTC, RCode i_cd, RRListPtr &i_rlprAN, RRListPtr &i_rlprNS, RRListPtr &i_rlprAR) {
m_bAA = i_bAA;
m_bTC = i_bTC;
m_cd = i_cd;
m_rlpAN = i_rlprAN;
m_rlpNS = i_rlprNS;
m_rlpAR = i_rlprAR;
i_rlprAN = NULL;
i_rlprNS = NULL;
i_rlprAR = NULL;
}
Response::Response(RCode i_cd) {
m_bAA = true;
m_bTC = false;
m_cd = i_cd;
m_rlpAN = NULL;
m_rlpNS = NULL;
m_rlpAR = NULL;
}
Response::~Response() {
SoftDelete(m_rlpAN);
SoftDelete(m_rlpNS);
SoftDelete(m_rlpAR);
}
ostream& operator<<(ostream& io_smr, const Response &i_rsr) {
if (&i_rsr==NULL) {
io_smr << "[NULL RESPONSE]" << endl;
return io_smr;
}
if (i_rsr.GetAA()==true) io_smr << "AA ";
if (i_rsr.GetTC()==true) io_smr << "TC ";
io_smr << GetRCodeName(i_rsr.GetRCode()) << " ";
io_smr << endl << "AN Records:" << endl;
io_smr << *i_rsr.GetANList();
io_smr << "NS Records:" << endl;
io_smr << *i_rsr.GetNSList();
io_smr << "AR Records:" << endl;
io_smr << *i_rsr.GetARList();
io_smr << endl;
return io_smr;
}
ostream& operator<<(ostream& io_smr, ResponseConstPtr i_rsp) {
io_smr << *i_rsp;
return io_smr;
}