OLD | NEW |
| (Empty) |
1 // Copyright 2013 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_TOOLS_BALSA_BUFFER_INTERFACE_H__ | |
6 #define NET_TOOLS_BALSA_BUFFER_INTERFACE_H__ | |
7 | |
8 namespace net { | |
9 | |
10 class BufferInterface { | |
11 public: | |
12 | |
13 // Returns the bytes which can be read from the buffer. There is no | |
14 // guarantee that the bytes are contiguous. | |
15 virtual int ReadableBytes() const = 0; | |
16 | |
17 // Summary: | |
18 // returns the size of this buffer | |
19 // Returns: | |
20 // size of this buffer. | |
21 virtual int BufferSize() const = 0; | |
22 | |
23 // Summary: | |
24 // returns the number of bytes free in this buffer. | |
25 // Returns: | |
26 // number of bytes free. | |
27 virtual int BytesFree() const = 0; | |
28 | |
29 // Summary: | |
30 // Returns true if empty. | |
31 // Returns: | |
32 // true - if empty | |
33 // false - otherwise | |
34 virtual bool Empty() const = 0; | |
35 | |
36 // Summary: | |
37 // Returns true if the buffer is full. | |
38 virtual bool Full() const = 0; | |
39 | |
40 // Summary: | |
41 // returns the number of characters written. | |
42 // appends up-to-'size' bytes to the buffer. | |
43 // Args: | |
44 // bytes - bytes which are read, and copied into the buffer. | |
45 // size - number of bytes which are read and copied. | |
46 // this number shall be >= 0. | |
47 virtual int Write(const char* bytes, int size) = 0; | |
48 | |
49 // Summary: | |
50 // Gets a pointer which can be written to (assigned to). | |
51 // this pointer (and size) can be used in functions like | |
52 // recv() or read(), etc. | |
53 // If *size is zero upon returning from this function, that it | |
54 // is unsafe to dereference *ptr. | |
55 // Args: | |
56 // ptr - assigned a pointer to which we can write | |
57 // size - the amount of data (in bytes) that it is safe to write to ptr. | |
58 virtual void GetWritablePtr(char **ptr, int* size) const = 0; | |
59 | |
60 // Summary: | |
61 // Gets a pointer which can be read from | |
62 // this pointer (and size) can be used in functions like | |
63 // send() or write(), etc. | |
64 // If *size is zero upon returning from this function, that it | |
65 // is unsafe to dereference *ptr. | |
66 // Args: | |
67 // ptr - assigned a pointer from which we may read | |
68 // size - the amount of data (in bytes) that it is safe to read | |
69 virtual void GetReadablePtr(char **ptr, int* size) const = 0; | |
70 | |
71 // Summary: | |
72 // Reads bytes out of the buffer, and writes them into 'bytes'. | |
73 // Returns the number of bytes read. | |
74 // Consumes bytes from the buffer (possibly, but not necessarily | |
75 // rendering them free) | |
76 // Args: | |
77 // bytes - the pointer into which bytes are read from this buffer | |
78 // and written into | |
79 // size - number of bytes which are read and copied. | |
80 // this number shall be >= 0. | |
81 // Returns: | |
82 // the number of bytes read from 'bytes' | |
83 virtual int Read(char* bytes, int size) = 0; | |
84 | |
85 // Summary: | |
86 // removes all data from the buffer | |
87 virtual void Clear() = 0; | |
88 | |
89 // Summary: | |
90 // reserves contiguous writable empty space in the buffer of size bytes. | |
91 // Returns true if the reservation is successful. | |
92 // If a derive class chooses not to implement reservation, its | |
93 // implementation should return false. | |
94 virtual bool Reserve(int size) = 0; | |
95 | |
96 // Summary: | |
97 // removes the oldest 'amount_to_consume' characters from this buffer, | |
98 // Args: | |
99 // amount_to_advance - .. this should be self-explanatory =) | |
100 // this number shall be >= 0. | |
101 virtual void AdvanceReadablePtr(int amount_to_advance) = 0; | |
102 | |
103 // Summary: | |
104 // Moves the internal pointers around such that the | |
105 // amount of data specified here is expected to | |
106 // already be resident (as if it was Written) | |
107 // Args: | |
108 // amount_to_advance - self explanatory. | |
109 // this number shall be >= 0. | |
110 virtual void AdvanceWritablePtr(int amount_to_advance) = 0; | |
111 | |
112 virtual ~BufferInterface() {} | |
113 | |
114 protected: | |
115 BufferInterface() {} | |
116 }; | |
117 | |
118 } // namespace net | |
119 | |
120 #endif // NET_TOOLS_BALSA_BUFFER_INTERFACE__H__ | |
121 | |
OLD | NEW |