blob: 115300e1b3db3c41a9332183e0ff6ecc1933b5d6 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_COPRESENCE_ENDPOINTS_COPRESENCE_SOCKET_H_
#define COMPONENTS_COPRESENCE_ENDPOINTS_COPRESENCE_SOCKET_H_
#include <string>
#include "base/macros.h"
namespace net {
class IOBuffer;
}
namespace copresence_endpoints {
// A CopresenceSocket is an object that is used to send receive data to and
// from CopresencePeers.
// TODO(rkc): Add the ability to connect to a remote CopresencePeer.
class CopresenceSocket {
public:
typedef base::Callback<void(const scoped_refptr<net::IOBuffer>& buffer,
int buffer_size)> ReceiveCallback;
CopresenceSocket() {}
virtual ~CopresenceSocket() {}
// Send data on this socket. If unable to send the data, return false. This
// operation only guarantees that if the return value is a success, the send
// was started. It does not make any guarantees about the completion of the
// operation.
// TODO(rkc): Expand the bool into more a more detailed failures enum.
virtual bool Send(const scoped_refptr<net::IOBuffer>& buffer,
int buffer_size) = 0;
virtual void Receive(const ReceiveCallback& callback) = 0;
private:
DISALLOW_COPY_AND_ASSIGN(CopresenceSocket);
};
} // namespace copresence_endpoints
#endif // COMPONENTS_COPRESENCE_ENDPOINTS_COPRESENCE_SOCKET_H_