• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef NET_SOCKET_SOCKET_H_
6 #define NET_SOCKET_SOCKET_H_
7 
8 #include "net/base/completion_callback.h"
9 
10 namespace net {
11 
12 class IOBuffer;
13 
14 // Represents a read/write socket.
15 class Socket {
16  public:
~Socket()17   virtual ~Socket() {}
18 
19   // Reads data, up to buf_len bytes, from the socket.  The number of bytes
20   // read is returned, or an error is returned upon failure.  Zero is returned
21   // to indicate end-of-file.  ERR_IO_PENDING is returned if the operation
22   // could not be completed synchronously, in which case the result will be
23   // passed to the callback when available. If the operation is not completed
24   // immediately, the socket acquires a reference to the provided buffer until
25   // the callback is invoked or the socket is destroyed.
26   virtual int Read(IOBuffer* buf, int buf_len,
27                    CompletionCallback* callback) = 0;
28 
29   // Writes data, up to buf_len bytes, to the socket.  Note: only part of the
30   // data may be written!  The number of bytes written is returned, or an error
31   // is returned upon failure.  ERR_IO_PENDING is returned if the operation
32   // could not be completed synchronously, in which case the result will be
33   // passed to the callback when available. If the operation is not completed
34   // immediately, the socket acquires a reference to the provided buffer until
35   // the callback is invoked or the socket is destroyed.
36   // Implementations of this method should not modify the contents of the actual
37   // buffer that is written to the socket.
38   virtual int Write(IOBuffer* buf, int buf_len,
39                     CompletionCallback* callback) = 0;
40 
41   // Set the receive buffer size (in bytes) for the socket.
42   // Note: changing this value can effect the TCP window size on some platforms.
43   // Returns true on success, or false on failure.
44   virtual bool SetReceiveBufferSize(int32 size) = 0;
45 
46   // Set the send buffer size (in bytes) for the socket.
47   // Note: changing this value can effect the TCP window size on some platforms.
48   // Returns true on success, or false on failure.
49   virtual bool SetSendBufferSize(int32 size) = 0;
50 };
51 
52 }  // namespace net
53 
54 #endif  // NET_SOCKET_SOCKET_H_
55