summaryrefslogtreecommitdiffstats
path: root/google_apis/gcm/engine/mcs_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'google_apis/gcm/engine/mcs_client.h')
-rw-r--r--google_apis/gcm/engine/mcs_client.h24
1 files changed, 21 insertions, 3 deletions
diff --git a/google_apis/gcm/engine/mcs_client.h b/google_apis/gcm/engine/mcs_client.h
index 1943be6..cc915e4 100644
--- a/google_apis/gcm/engine/mcs_client.h
+++ b/google_apis/gcm/engine/mcs_client.h
@@ -37,6 +37,7 @@ namespace gcm {
class CollapseKey;
class ConnectionFactory;
+class GCMStatsRecorder;
struct ReliablePacketInfo;
// An MCS client. This client is in charge of all communications with an
@@ -54,6 +55,8 @@ class GCM_EXPORT MCSClient {
CONNECTED, // Connected and running.
};
+ // Any change made to this enum should have corresponding change in the
+ // GetMessageSendStatusString(...) function in mcs_client.cc.
enum MessageSendStatus {
// Message was queued succcessfully.
QUEUED,
@@ -61,14 +64,19 @@ class GCM_EXPORT MCSClient {
SENT,
// Message not saved, because total queue size limit reached.
QUEUE_SIZE_LIMIT_REACHED,
- // Messgae not saved, because app queue size limit reached.
+ // Message not saved, because app queue size limit reached.
APP_QUEUE_SIZE_LIMIT_REACHED,
// Message too large to send.
MESSAGE_TOO_LARGE,
// Message not send becuase of TTL = 0 and no working connection.
NO_CONNECTION_ON_ZERO_TTL,
// Message exceeded TTL.
- TTL_EXCEEDED
+ TTL_EXCEEDED,
+
+ // NOTE: always keep this entry at the end. Add new status types only
+ // immediately above this line. Make sure to update the corresponding
+ // histogram enum accordingly.
+ SEND_STATUS_COUNT
};
// Callback for MCSClient's error conditions.
@@ -89,7 +97,8 @@ class GCM_EXPORT MCSClient {
MCSClient(const std::string& version_string,
base::Clock* clock,
ConnectionFactory* connection_factory,
- GCMStore* gcm_store);
+ GCMStore* gcm_store,
+ GCMStatsRecorder* recorder);
virtual ~MCSClient();
// Initialize the client. Will load any previous id/token information as well
@@ -127,6 +136,12 @@ class GCM_EXPORT MCSClient {
// Returns the current state of the client.
State state() const { return state_; }
+ // Returns the size of the send message queue.
+ int GetSendQueueSize() const;
+
+ // Returns the size of the resend messaage queue.
+ int GetResendQueueSize() const;
+
// Returns text representation of the state enum.
std::string GetStateString() const;
@@ -259,6 +274,9 @@ class GCM_EXPORT MCSClient {
// Manager to handle triggering/detecting heartbeats.
HeartbeatManager heartbeat_manager_;
+ // Recorder that records GCM activities for debugging purpose. Not owned.
+ GCMStatsRecorder* recorder_;
+
base::WeakPtrFactory<MCSClient> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(MCSClient);