13 #include "pugixml/pugixml.hpp"
18 using process::ConnectionType;
19 using process::ConnectionStatus;
25 std::string xmpp_server, uint8_t xs_idx)
26 : channel_(NULL), xmpp_server_(xmpp_server), xs_idx_(xs_idx),
59 pugi->LoadXmlDoc(msg_pugi->
doc());
75 pugi::xml_node node =
pugi->FindNode(
"dns");
81 code, xmpp_data.get())) {
97 std::unique_ptr<XmlBase> dummy_dom;
101 std::move(dummy_dom),
116 bool update_list =
false;
119 for (; iter != end; iter++) {
120 std::vector<string> server;
121 boost::split(server, *iter, boost::is_any_of(
":"));
124 if (iter + 1 == end)
break;
125 std::rotate(iter, iter + 1, end);
158 boost::asio::ip::tcp::endpoint ep;
159 boost::system::error_code ec;
160 std::string last_state_name;
164 ep.address().to_string();
171 ConnectionStatus::UP, ep,
175 ConnectionStatus::DOWN, ep,
IpAddress AddressFromString(const std::string &ip_address_str, boost::system::error_code *ec)
void ReceiveDnsMessage(std::unique_ptr< XmlBase > impl)
virtual bool SendMsg(uint8_t *msg, std::size_t len)
static void XmppClientChannelEvent(AgentDnsXmppChannel *peer, xmps::PeerState state)
virtual std::string ToString() const
void ReceiveInternal(const XmppStanza::XmppMessage *msg)
static void set_dns_message_handler_cb(DnsMessageHandler cb)
uint8_t GetXmppServerIdx()
void UpdateConnectionInfo(xmps::PeerState state)
boost::function< void(AgentDnsXmppChannel *)> DnsXmppEventHandler
static DnsMessageHandler dns_message_handler_cb_
std::string GetXmppServer()
virtual void WriteReadyCb(const boost::system::error_code &ec)
AgentDnsXmppChannel(Agent *agent, std::string xmpp_server, uint8_t xs_idx)
virtual void ReceiveMsg(const XmppStanza::XmppMessage *msg)
XmppChannel * GetXmppChannel()
void RegisterXmppChannel(XmppChannel *channel)
boost::function< void(DnsUpdateData *, DnsAgentXmpp::XmppType, VmInterface const *, bool)> DnsMessageHandler
static void set_dns_xmpp_event_handler_cb(DnsXmppEventHandler cb)
virtual ~AgentDnsXmppChannel()
static void HandleXmppClientChannelEvent(AgentDnsXmppChannel *peer, xmps::PeerState state)
static DnsXmppEventHandler dns_xmpp_event_handler_cb_
VNController * controller() const
const std::string & dns_server(uint8_t idx) const
const uint16_t dns_server_port(uint8_t idx) const
static const std::string & xmpp_dns_server_prefix()
std::vector< string > & GetDnslist()
process::ConnectionState * connection_state() const
static bool DnsAgentXmppDecode(const pugi::xml_node dns, XmppType &type, uint32_t &xid, uint16_t &resp_code, DnsUpdateData *data, std::string source_name="")
void Enqueue(ControllerWorkQueueDataType data)
void ReConnectDnsServer()
const pugi::xml_document & doc()
virtual void RegisterReceive(xmps::PeerId, ReceiveCb)=0
virtual void UnRegisterReceive(xmps::PeerId)=0
virtual const std::string & ToString() const =0
virtual xmps::PeerState GetPeerState() const =0
virtual std::string LastStateName() const =0
virtual void UnRegisterWriteReady(xmps::PeerId id)=0
virtual bool Send(const uint8_t *, size_t, xmps::PeerId, SendReadyCb)=0
std::unique_ptr< XmlBase > dom
static int compare(const Type &lhs, const Type &rhs)
static XmppXmlImplFactory * Instance()