[xmppd-dev] commit r1559 - trunk/jabberd14/resolver

mail at jabberd.org mail at jabberd.org
Mon Oct 19 20:33:45 CEST 2009


Author: mawis
Date: Mon Oct 19 20:33:44 2009
New Revision: 1559

Log:
Logging start and end of jobs

Modified:
   trunk/jabberd14/resolver/resolver.cc
   trunk/jabberd14/resolver/resolver.h
   trunk/jabberd14/resolver/resolver_job.cc

Modified: trunk/jabberd14/resolver/resolver.cc
==============================================================================
--- trunk/jabberd14/resolver/resolver.cc	Sun Mar 22 02:40:21 2009	(r1558)
+++ trunk/jabberd14/resolver/resolver.cc	Mon Oct 19 20:33:44 2009	(r1559)
@@ -157,7 +157,7 @@
 
 		// drop type='error', bounce everything else
 		if (packet_type && Glib::ustring(packet_type) == "error") {
-		    log_warn(dp->host, "Looping DNS request. Dropped: %s", xmlnode_serialize_string(dp->x, xmppd::ns_decl_list(), 0));
+		    log(xmppd::warn) << "Looping DNS request. Dropped: " << xmlnode_serialize_string(dp->x, xmppd::ns_decl_list(), 0);
 		    xmlnode_free(dp->x);
 		} else {
 		    deliver_fail(dp, N_("Looping DNS request. Dropped."));
@@ -174,6 +174,7 @@
 
 	    // store the packet, so that we can forward it when it has been resolved, and start resolving
 	    pending_jobs[dp->host] = new resolver_job(*this, dp);
+	    log(xmppd::notice) << "Created new resolver job: " << *(pending_jobs[dp->host]);
 	    pending_jobs[dp->host]->register_result_callback(sigc::mem_fun(*this, &xmppd::resolver::resolver::handle_completed_job));
 	    return r_DONE;
 	}
@@ -188,7 +189,7 @@
 		    dnsresultto = to.c_str();
 		}
 
-		pkt = xmlnode_wrap_ns(pkt, "route", NULL, NULL);
+		pkt = xmlnode_wrap_ns(pkt, "route", NULL, NS_SERVER);
 		xmlnode_put_attrib_ns(pkt, "to", NULL, NULL, dnsresultto);
 		xmlnode_put_attrib_ns(pkt, "ip", NULL, NULL, ips.c_str());
 	    }
@@ -210,6 +211,8 @@
 	    // get the resolved ips
 	    Glib::ustring ips = job.get_result();
 
+	    log(xmppd::notice) << "Finished resolver job: " << job;
+
 	    // resend the packets
 	    for (std::list<dpacket>::const_iterator p = packets.begin(); p != packets.end(); ++p) {
 		resend_packet((*p)->x, ips, resend_host);

Modified: trunk/jabberd14/resolver/resolver.h
==============================================================================
--- trunk/jabberd14/resolver/resolver.h	Sun Mar 22 02:40:21 2009	(r1558)
+++ trunk/jabberd14/resolver/resolver.h	Mon Oct 19 20:33:44 2009	(r1559)
@@ -240,8 +240,27 @@
 		 * listeners to get notified if the resolver_job is finished
 		 */
 		std::list<sigc::signal<void, resolver_job&> > result_listeners;
+
+		/**
+		 * timestamp when the resolver job has been generated
+		 */
+		time_t timestamp;
+
+		/**
+		 * ID of the resolver job
+		 */
+		long serial;
+
+		/**
+		 * the next serial that will be used for a new job
+		 */
+		static long next_serial;
+
+		friend std::ostream& operator<<(std::ostream& out, resolver_job& job);
 	};
 
+	std::ostream& operator<<(std::ostream& out, resolver_job& job);
+
 	/**
 	 * @brief resolver component implementation
 	 *

Modified: trunk/jabberd14/resolver/resolver_job.cc
==============================================================================
--- trunk/jabberd14/resolver/resolver_job.cc	Sun Mar 22 02:40:21 2009	(r1558)
+++ trunk/jabberd14/resolver/resolver_job.cc	Mon Oct 19 20:33:44 2009	(r1559)
@@ -34,7 +34,12 @@
 
 namespace xmppd {
     namespace resolver {
-	resolver_job::resolver_job(resolver& owner, dpacket dp) : owner(owner) {
+	long resolver_job::next_serial = 1;
+
+	resolver_job::resolver_job(resolver& owner, dpacket dp) : owner(owner), serial(next_serial++) {
+	    // remember when this job has been generated
+	    std::time(&timestamp);
+
 	    // sanity check
 	    if (!dp->host) {
 		throw std::invalid_argument("dpacket has no host");
@@ -283,5 +288,12 @@
 	xmppd::jabberid resolver_job::get_resend_host() const {
 	    return current_service->get_resend_host();
 	}
+
+	std::ostream& operator<<(std::ostream& out, resolver_job& job) {
+	    time_t now = std::time(NULL);
+	    out << "JOB#" << job.serial << "(" << (now-job.timestamp) << " s): ";
+	    out << job.destination << " " << job.get_result();
+	    return out;
+	}
     }
 }


More information about the dev mailing list