Update the connected field to metrics for DoT

The "connected" field for DoT is supported now. It is beneficial
to further tell the difference from sending a query via a new connection
and sending a query via an existing connection.

Bug: 144881031
Test: atest
Test: Manually added some logs to check the result
Change-Id: I3cc97660e8d5851af39d91f74d63babaa88179f8
diff --git a/DnsTlsDispatcher.cpp b/DnsTlsDispatcher.cpp
index 7ca0464..e961b9f 100644
--- a/DnsTlsDispatcher.cpp
+++ b/DnsTlsDispatcher.cpp
@@ -101,14 +101,17 @@
     for (const auto& server : orderedServers) {
         DnsQueryEvent* dnsQueryEvent =
                 statp->event->mutable_dns_query_events()->add_dns_query_event();
+
+        bool connectTriggered = false;
         Stopwatch queryStopwatch;
-        code = this->query(server, statp->_mark, query, ans, resplen);
+        code = this->query(server, statp->_mark, query, ans, resplen, &connectTriggered);
 
         dnsQueryEvent->set_latency_micros(saturate_cast<int32_t>(queryStopwatch.timeTakenUs()));
         dnsQueryEvent->set_dns_server_index(serverCount++);
         dnsQueryEvent->set_ip_version(ipFamilyToIPVersion(server.ss.ss_family));
         dnsQueryEvent->set_protocol(PROTO_DOT);
         dnsQueryEvent->set_type(getQueryType(query.base(), query.size()));
+        dnsQueryEvent->set_connected(connectTriggered);
 
         switch (code) {
             // These response codes are valid responses and not expected to
@@ -141,8 +144,9 @@
 }
 
 DnsTlsTransport::Response DnsTlsDispatcher::query(const DnsTlsServer& server, unsigned mark,
-                                                  const Slice query,
-                                                  const Slice ans, int *resplen) {
+                                                  const Slice query, const Slice ans, int* resplen,
+                                                  bool* connectTriggered) {
+    uint32_t connectCounter;
     const Key key = std::make_pair(mark, server);
     Transport* xport;
     {
@@ -155,6 +159,7 @@
             xport = it->second.get();
         }
         ++xport->useCount;
+        connectCounter = xport->transport.getConnectCounter();
     }
 
     LOG(DEBUG) << "Sending query of length " << query.size();
@@ -178,6 +183,7 @@
     auto now = std::chrono::steady_clock::now();
     {
         std::lock_guard guard(sLock);
+        *connectTriggered = (xport->transport.getConnectCounter() > connectCounter);
         --xport->useCount;
         xport->lastUsed = now;
         cleanup(now);