Index: google_apis/gcm/engine/mcs_client.cc |
diff --git a/google_apis/gcm/engine/mcs_client.cc b/google_apis/gcm/engine/mcs_client.cc |
index da8300c799266957263fff5d38b676d114e8e1f8..a99a333a37e0d694c0a5233ef76012c9d89947d1 100644 |
--- a/google_apis/gcm/engine/mcs_client.cc |
+++ b/google_apis/gcm/engine/mcs_client.cc |
@@ -15,6 +15,7 @@ |
#include "google_apis/gcm/base/mcs_util.h" |
#include "google_apis/gcm/base/socket_stream.h" |
#include "google_apis/gcm/engine/connection_factory.h" |
+#include "google_apis/gcm/monitoring/gcm_stats_recorder.h" |
using namespace google::protobuf::io; |
@@ -128,6 +129,14 @@ ReliablePacketInfo::ReliablePacketInfo() |
} |
ReliablePacketInfo::~ReliablePacketInfo() {} |
+int MCSClient::GetSendQueueSize() const { |
+ return to_send_.size(); |
+} |
+ |
+int MCSClient::GetResendQueueSize() const { |
+ return to_resend_.size(); |
+} |
+ |
std::string MCSClient::GetStateString() const { |
switch(state_) { |
case UNINITIALIZED: |
@@ -147,7 +156,8 @@ std::string MCSClient::GetStateString() const { |
MCSClient::MCSClient(const std::string& version_string, |
base::Clock* clock, |
ConnectionFactory* connection_factory, |
- GCMStore* gcm_store) |
+ GCMStore* gcm_store, |
+ GCMStatsRecorder* recorder) |
: version_string_(version_string), |
clock_(clock), |
state_(UNINITIALIZED), |
@@ -160,6 +170,7 @@ MCSClient::MCSClient(const std::string& version_string, |
stream_id_out_(0), |
stream_id_in_(0), |
gcm_store_(gcm_store), |
+ recorder_(recorder), |
weak_ptr_factory_(this) { |
} |
@@ -495,6 +506,11 @@ void MCSClient::SendPacketToWire(ReliablePacketInfo* packet_info) { |
base::Time::kMicrosecondsPerSecond) - sent; |
DVLOG(1) << "Message was queued for " << queued << " seconds."; |
data_message->set_queued(queued); |
+ recorder_->RecordDataSentToWire( |
+ data_message->category(), |
+ data_message->to(), |
+ data_message->id(), |
+ queued); |
} |
// Set the proper last received stream id to acknowledge received server |
@@ -862,6 +878,13 @@ void MCSClient::NotifyMessageSendStatus( |
const mcs_proto::DataMessageStanza* data_message_stanza = |
reinterpret_cast<const mcs_proto::DataMessageStanza*>(&protobuf); |
+ recorder_->RecordNotifySendStatus( |
+ data_message_stanza->category(), |
+ data_message_stanza->to(), |
+ data_message_stanza->id(), |
+ status, |
+ protobuf.ByteSize(), |
+ data_message_stanza->ttl()); |
message_sent_callback_.Run( |
data_message_stanza->device_user_id(), |
data_message_stanza->category(), |