[Satellite] Satellite metrics to capture pending message count per datagram type.

Bug:381007377
Flag: EXEMPT MetricEnhance
Test: Built successfully and verified manually
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:9685ac17f9fe2a6ae236c8eb4740e2fed2be2029)
Merged-In: I77f6dfd75cf9d4642843d08087bb4e9cb546d381
Change-Id: I77f6dfd75cf9d4642843d08087bb4e9cb546d381
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
index 8c36a2c..e21d560 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
@@ -44,6 +44,8 @@
 import android.telephony.Rlog;
 import android.telephony.satellite.SatelliteDatagram;
 import android.telephony.satellite.SatelliteManager;
+import android.telephony.satellite.SatelliteSessionStats;
+import android.util.Log;
 
 import com.android.internal.R;
 import com.android.internal.annotations.GuardedBy;
@@ -1421,4 +1423,23 @@
             mPersistentLogger.error(TAG, log);
         }
     }
+
+    public void updateSessionStatsWithPendingUserMsgCount(SatelliteSessionStats datagramStats) {
+        Log.d("SessionMetricsStats1",
+                " mPendingEmergencyDatagramsMap size = " + mPendingEmergencyDatagramsMap.size());
+        Log.d("SessionMetricsStats1", " mPendingNonEmergencyDatagramsMap size = "
+                + mPendingNonEmergencyDatagramsMap.size());
+        for (Entry<Long, SendSatelliteDatagramArgument> entry :
+                mPendingEmergencyDatagramsMap.entrySet()) {
+            SendSatelliteDatagramArgument argument = entry.getValue();
+            Log.d("SessionMetricsStats1", "DataGramType1 =  " + argument.datagramType);
+            datagramStats.updateCountOfUserMessagesInQueueToBeSent(argument.datagramType);
+        }
+        for (Entry<Long, SendSatelliteDatagramArgument> entry :
+                mPendingNonEmergencyDatagramsMap.entrySet()) {
+            SendSatelliteDatagramArgument argument = entry.getValue();
+            Log.d("SessionMetricsStats1", "DataGramType2 =  " + argument.datagramType);
+            datagramStats.updateCountOfUserMessagesInQueueToBeSent(argument.datagramType);
+        }
+    }
 }
diff --git a/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java b/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java
index 0a82b99..4faacdc 100644
--- a/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java
+++ b/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java
@@ -37,7 +37,7 @@
  */
 public class SessionMetricsStats {
     private static final String TAG = SessionMetricsStats.class.getSimpleName();
-    private static final boolean DBG = false;
+    private static final boolean DBG = true;
 
     private static SessionMetricsStats sInstance = null;
     private @SatelliteManager.SatelliteResult int mInitializationResult;
@@ -62,11 +62,11 @@
     private int mCountOfSatelliteNotificationDisplayed;
     private int mCountOfAutoExitDueToScreenOff;
     private int mCountOfAutoExitDueToTnNetwork;
-    private SatelliteSessionStats datagramStats;
+    private SatelliteSessionStats mDatagramStats;
 
     private SessionMetricsStats() {
         initializeSessionMetricsParam();
-        datagramStats = new SatelliteSessionStats();
+        mDatagramStats = new SatelliteSessionStats();
     }
 
     /**
@@ -133,7 +133,9 @@
     public SessionMetricsStats addCountOfSuccessfulOutgoingDatagram(
             @NonNull @SatelliteManager.DatagramType int datagramType,
             long datagramTransmissionTime) {
-        datagramStats.recordSuccessfulOutgoingDatagramStats(datagramType, datagramTransmissionTime);
+        logd("addCountOfSuccessfulOutgoingDatagram: datagramType=" + datagramType);
+        mDatagramStats.recordSuccessfulOutgoingDatagramStats(datagramType,
+                datagramTransmissionTime);
         if (datagramType == SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE) {
             // Ignore KEEP_ALIVE messages
             return this;
@@ -141,8 +143,6 @@
 
         mCountOfSuccessfulOutgoingDatagram++;
         mShadowCountOfSuccessfulOutgoingDatagram++;
-        logd("addCountOfSuccessfulOutgoingDatagram: current count="
-                + mCountOfSuccessfulOutgoingDatagram);
         return this;
     }
 
@@ -150,7 +150,9 @@
     public SessionMetricsStats addCountOfFailedOutgoingDatagram(
             @NonNull @SatelliteManager.DatagramType int datagramType,
             @NonNull @SatelliteManager.SatelliteResult int resultCode) {
-        datagramStats.addCountOfUnsuccessfulUserMessages(datagramType, resultCode);
+        logd("addCountOfFailedOutgoingDatagram: datagramType=" + datagramType + "  resultCode = "
+                + resultCode);
+        mDatagramStats.addCountOfUnsuccessfulUserMessages(datagramType, resultCode);
         if (datagramType == SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE) {
             // Ignore KEEP_ALIVE messages
             return this;
@@ -158,14 +160,11 @@
 
         mCountOfFailedOutgoingDatagram++;
         mShadowCountOfFailedOutgoingDatagram++;
-        logd("addCountOfFailedOutgoingDatagram: current count=" + mCountOfFailedOutgoingDatagram);
-
         if (resultCode == SatelliteManager.SATELLITE_RESULT_NOT_REACHABLE) {
             addCountOfTimedOutUserMessagesWaitingForConnection(datagramType);
         } else if (resultCode == SatelliteManager.SATELLITE_RESULT_MODEM_TIMEOUT) {
             addCountOfTimedOutUserMessagesWaitingForAck(datagramType);
         }
-
         return this;
     }
 
@@ -304,9 +303,9 @@
                 .build();
         bundle.putParcelable(SatelliteManager.KEY_SESSION_STATS, sessionStats);
 
-        // TODO b/381007377 should retrieve MessagesInQueueToBeSent count per messageType and add
-        //  to datagramStats
-        bundle.putParcelable(KEY_SESSION_STATS_V2, datagramStats);
+        DatagramDispatcher.getInstance().updateSessionStatsWithPendingUserMsgCount(mDatagramStats);
+        bundle.putParcelable(KEY_SESSION_STATS_V2, mDatagramStats);
+        Log.i(TAG, "[END] DatagramStats = " +mDatagramStats);
         result.send(SATELLITE_RESULT_SUCCESS, bundle);
     }
 
@@ -347,7 +346,7 @@
         mShadowCountOfFailedOutgoingDatagram = 0;
         mShadowCountOfTimedOutUserMessagesWaitingForConnection = 0;
         mShadowCountOfTimedOutUserMessagesWaitingForAck = 0;
-        datagramStats.clear();
+        mDatagramStats.clear();
     }
 
     private static void logd(@NonNull String log) {