From 1f839fe2a64878e041c66a90aed55765bc4f730e Mon Sep 17 00:00:00 2001
From: Kay Kurokawa <kay@lbry.io>
Date: Thu, 5 Oct 2017 13:59:27 -0400
Subject: [PATCH] add blob announcement information to session_status

---
 lbrynet/core/BlobManager.py | 9 +++++++++
 lbrynet/daemon/Daemon.py    | 6 ++++++
 2 files changed, 15 insertions(+)

diff --git a/lbrynet/core/BlobManager.py b/lbrynet/core/BlobManager.py
index 6293db4ff..91097d06e 100644
--- a/lbrynet/core/BlobManager.py
+++ b/lbrynet/core/BlobManager.py
@@ -88,6 +88,9 @@ class DiskBlobManager(DHTHashSupplier):
     def hashes_to_announce(self):
         return self._get_blobs_to_announce()
 
+    def count_should_announce_blobs(self):
+        return self._count_should_announce_blobs()
+
     def set_should_announce(self, blob_hash, should_announce):
         if blob_hash in self.blobs:
             blob = self.blobs[blob_hash]
@@ -215,6 +218,12 @@ class DiskBlobManager(DHTHashSupplier):
                                              (blob_hash,))
         defer.returnValue(result[0][0])
 
+    @rerun_if_locked
+    @defer.inlineCallbacks
+    def _count_should_announce_blobs(self):
+        result = yield self.db_conn.runQuery("select count(*) from blobs where should_announce=1")
+        defer.returnValue(result[0][0])
+
     @defer.inlineCallbacks
     def _completed_blobs(self, blobhashes_to_check):
         """Returns of the blobhashes_to_check, which are valid"""
diff --git a/lbrynet/daemon/Daemon.py b/lbrynet/daemon/Daemon.py
index 2555a5821..59e344b25 100644
--- a/lbrynet/daemon/Daemon.py
+++ b/lbrynet/daemon/Daemon.py
@@ -1029,6 +1029,8 @@ class Daemon(AuthJSONRPCServer):
                     'session_status': {
                         'managed_blobs': count of blobs in the blob manager,
                         'managed_streams': count of streams in the file manager
+                        'announce_queue_size': number of blobs currently queued to be announced
+                        'should_announce_blobs': number of blobs that should be announced
                     }
 
                 If given the dht status option:
@@ -1077,9 +1079,13 @@ class Daemon(AuthJSONRPCServer):
         }
         if session_status:
             blobs = yield self.session.blob_manager.get_all_verified_blobs()
+            announce_queue_size = self.session.hash_announcer.hash_queue_size()
+            should_announce_blobs = yield self.session.blob_manager.count_should_announce_blobs()
             response['session_status'] = {
                 'managed_blobs': len(blobs),
                 'managed_streams': len(self.lbry_file_manager.lbry_files),
+                'announce_queue_size': announce_queue_size,
+                'should_announce_blobs': should_announce_blobs,
             }
         if dht_status:
             response['dht_status'] = self.session.dht_node.get_bandwidth_stats()