// 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 #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& 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& 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_