#include <set>
#include "base/basictypes.h"
+#include "base/bind.h"
#include "base/message_loop/message_loop.h"
#include "base/metrics/histogram.h"
#include "base/strings/string_number_conversions.h"
#include "base/time/clock.h"
#include "base/time/time.h"
+#include "base/timer/timer.h"
#include "google_apis/gcm/base/mcs_util.h"
#include "google_apis/gcm/base/socket_stream.h"
#include "google_apis/gcm/engine/connection_factory.h"
base::Clock* clock,
ConnectionFactory* connection_factory,
GCMStore* gcm_store,
- GCMStatsRecorder* recorder)
+ GCMStatsRecorder* recorder,
+ scoped_ptr<base::Timer> heartbeat_timer)
: version_string_(version_string),
clock_(clock),
state_(UNINITIALIZED),
stream_id_out_(0),
stream_id_in_(0),
gcm_store_(gcm_store),
+ heartbeat_manager_(heartbeat_timer.Pass()),
recorder_(recorder),
weak_ptr_factory_(this) {
}
}
if (send) {
- SendMessage(
- MCSMessage(kDataMessageStanzaTag,
- response.PassAs<const google::protobuf::MessageLite>()));
+ SendMessage(MCSMessage(kDataMessageStanzaTag, response.Pass()));
}
}
if (unacked_server_ids_.size() > 0 &&
unacked_server_ids_.size() % kUnackedMessageBeforeStreamAck == 0) {
- SendMessage(MCSMessage(kIqStanzaTag,
- BuildStreamAck().
- PassAs<const google::protobuf::MessageLite>()));
+ SendMessage(MCSMessage(kIqStanzaTag, BuildStreamAck()));
}
// The connection is alive, treat this message as a heartbeat ack.
base::MessageLoop::current()->PostTask(
FROM_HERE,
base::Bind(message_received_callback_,
- MCSMessage(tag,
- protobuf.PassAs<
- const google::protobuf::MessageLite>())));
+ MCSMessage(tag, protobuf.Pass())));
// If there are pending messages, attempt to send one.
if (!to_send_.empty()) {
base::MessageLoop::current()->PostTask(
FROM_HERE,
base::Bind(message_received_callback_,
- MCSMessage(tag,
- protobuf.PassAs<
- const google::protobuf::MessageLite>())));
+ MCSMessage(tag, protobuf.Pass())));
return;
}
default: