Index: net/curvecp/client_packetizer.cc |
diff --git a/net/curvecp/client_packetizer.cc b/net/curvecp/client_packetizer.cc |
index 77ddfda984de73c237d9376d18193146af1f292f..9cafda29ea55c4eb5f504e9858b8eee25c41ccf0 100644 |
--- a/net/curvecp/client_packetizer.cc |
+++ b/net/curvecp/client_packetizer.cc |
@@ -33,12 +33,12 @@ ClientPacketizer::ClientPacketizer() |
: Packetizer(), |
next_state_(NONE), |
listener_(NULL), |
- old_user_callback_(NULL), |
current_address_(NULL), |
hello_attempts_(0), |
initiate_sent_(false), |
ALLOW_THIS_IN_INITIALIZER_LIST( |
- io_callback_(this, &ClientPacketizer::OnIOComplete)), |
+ io_callback_(base::Bind(&ClientPacketizer::OnIOComplete, |
+ base::Unretained(this)))), |
ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
// TODO(mbelshe): Initialize our keys and such properly. |
// for now we use random values to keep them unique. |
@@ -51,23 +51,7 @@ ClientPacketizer::~ClientPacketizer() { |
int ClientPacketizer::Connect(const AddressList& server, |
Packetizer::Listener* listener, |
- OldCompletionCallback* callback) { |
- DCHECK(!old_user_callback_); |
- DCHECK(!socket_.get()); |
- DCHECK(!listener_); |
- |
- listener_ = listener; |
- |
- addresses_ = server; |
- |
- old_user_callback_ = callback; |
- next_state_ = LOOKUP_COOKIE; |
- |
- return DoLoop(OK); |
-} |
-int ClientPacketizer::Connect(const AddressList& server, |
- Packetizer::Listener* listener, |
- const net::CompletionCallback& callback) { |
+ const CompletionCallback& callback) { |
DCHECK(user_callback_.is_null()); |
DCHECK(!socket_.get()); |
DCHECK(!listener_); |
@@ -85,7 +69,7 @@ int ClientPacketizer::Connect(const AddressList& server, |
int ClientPacketizer::SendMessage(ConnectionKey key, |
const char* data, |
size_t length, |
- OldCompletionCallback* callback) { |
+ const CompletionCallback& callback) { |
// We can't send messages smaller than 16 bytes. |
if (length < 16) |
return ERR_UNEXPECTED; |
@@ -114,7 +98,7 @@ int ClientPacketizer::SendMessage(ConnectionKey key, |
// TODO(mbelshe) - this is just broken to make it work with cleartext |
memcpy(&buffer->data()[sizeof(InitiatePacket)], data, length); |
int packet_length = sizeof(InitiatePacket) + length; |
- int rv = socket_->Write(buffer, packet_length, &io_callback_); |
+ int rv = socket_->Write(buffer, packet_length, io_callback_); |
if (rv <= 0) |
return rv; |
CHECK_EQ(packet_length, rv); // We must send all data. |
@@ -138,7 +122,7 @@ int ClientPacketizer::SendMessage(ConnectionKey key, |
// TODO(mbelshe): Fill in rest of message |
memcpy(&buffer->data()[sizeof(ClientMessagePacket)], data, length); |
int packet_length = sizeof(ClientMessagePacket) + length; |
- int rv = socket_->Write(buffer, packet_length, &io_callback_); |
+ int rv = socket_->Write(buffer, packet_length, io_callback_); |
if (rv <= 0) |
return rv; |
CHECK_EQ(packet_length, rv); // We must send all data. |
@@ -231,7 +215,7 @@ int ClientPacketizer::DoSendingHello() { |
sizeof(shortterm_public_key_)); |
// TODO(mbelshe): populate all other fields of the HelloPacket. |
- return socket_->Write(buffer, sizeof(struct HelloPacket), &io_callback_); |
+ return socket_->Write(buffer, sizeof(struct HelloPacket), io_callback_); |
} |
int ClientPacketizer::DoSendingHelloComplete(int rv) { |
@@ -254,7 +238,7 @@ int ClientPacketizer::DoWaitingCookie() { |
StartHelloTimer(kHelloTimeoutMs[hello_attempts_++]); |
read_buffer_ = new IOBuffer(kMaxPacketLength); |
- return socket_->Read(read_buffer_, kMaxPacketLength, &io_callback_); |
+ return socket_->Read(read_buffer_, kMaxPacketLength, io_callback_); |
} |
int ClientPacketizer::DoWaitingCookieComplete(int rv) { |
@@ -295,17 +279,11 @@ int ClientPacketizer::DoConnected(int rv) { |
void ClientPacketizer::DoCallback(int result) { |
DCHECK_NE(result, ERR_IO_PENDING); |
- DCHECK(old_user_callback_ || !user_callback_.is_null()); |
- |
- if (old_user_callback_) { |
- OldCompletionCallback* callback = old_user_callback_; |
- old_user_callback_ = NULL; |
- callback->Run(result); |
- } else { |
- CompletionCallback callback = user_callback_; |
- user_callback_.Reset(); |
- callback.Run(result); |
- } |
+ DCHECK(!user_callback_.is_null()); |
+ |
+ CompletionCallback callback = user_callback_; |
+ user_callback_.Reset(); |
+ callback.Run(result); |
} |
int ClientPacketizer::ConnectNextAddress() { |
@@ -391,7 +369,7 @@ int ClientPacketizer::ReadPackets() { |
while (true) { |
rv = socket_->Read(read_buffer_, |
kMaxPacketLength, |
- &io_callback_); |
+ io_callback_); |
if (rv <= 0) { |
if (rv != ERR_IO_PENDING) |
LOG(ERROR) << "Error reading socket:" << rv; |