include/grpc/event_engine/slice_buffer.h
Go to the documentation of this file.
1 // Copyright 2022 gRPC authors.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef GRPC_EVENT_ENGINE_SLICE_BUFFER_H
16 #define GRPC_EVENT_ENGINE_SLICE_BUFFER_H
17 
19 
20 #include <string.h>
21 
22 #include <cstdint>
23 #include <string>
24 
25 #include "absl/strings/string_view.h"
26 #include "absl/utility/utility.h"
27 
29 #include <grpc/slice.h>
30 #include <grpc/slice_buffer.h>
31 #include <grpc/support/log.h>
32 
33 namespace grpc_event_engine {
34 namespace experimental {
35 
51 class SliceBuffer {
52  public:
54  SliceBuffer(const SliceBuffer& other) = delete;
55  SliceBuffer(SliceBuffer&& other) noexcept
56  : slice_buffer_(other.slice_buffer_) {
58  grpc_slice_buffer_swap(&slice_buffer_, &other.slice_buffer_);
59  }
63 
64  SliceBuffer& operator=(const SliceBuffer&) = delete;
65  SliceBuffer& operator=(SliceBuffer&& other) noexcept {
66  grpc_slice_buffer_swap(&slice_buffer_, &other.slice_buffer_);
67  return *this;
68  }
69 
72  void Append(Slice slice);
73 
76  size_t AppendIndexed(Slice slice);
77 
79  size_t Count() { return slice_buffer_.count; }
80 
82  void RemoveLastNBytes(size_t n) {
84  }
85 
87  void MoveFirstNBytesIntoBuffer(size_t n, void* dst) {
89  }
90 
93 
95  Slice TakeFirst();
96 
98  void Prepend(Slice slice);
99 
102  Slice RefSlice(size_t index);
103 
105  size_t Length() { return slice_buffer_.length; }
106 
109 
110  private:
113 };
114 
115 } // namespace experimental
116 } // namespace grpc_event_engine
117 
118 #endif // GRPC_EVENT_ENGINE_SLICE_BUFFER_H
grpc_event_engine::experimental::SliceBuffer::Length
size_t Length()
The total number of bytes held by the SliceBuffer.
Definition: include/grpc/event_engine/slice_buffer.h:105
grpc_slice_buffer_destroy
GPRAPI void grpc_slice_buffer_destroy(grpc_slice_buffer *sb)
Definition: slice_buffer_api.cc:27
dst
static const char dst[]
Definition: test-fs-copyfile.c:37
log.h
grpc_event_engine::experimental::SliceBuffer::Prepend
void Prepend(Slice slice)
Prepends the slice to the the front of the SliceBuffer.
Definition: event_engine/slice_buffer.cc:41
slice.h
grpc_event_engine::experimental::SliceBuffer::MoveFirstNBytesIntoBuffer
void MoveFirstNBytesIntoBuffer(size_t n, void *dst)
Move the first n bytes of the SliceBuffer into a memory pointed to by dst.
Definition: include/grpc/event_engine/slice_buffer.h:87
string.h
grpc_slice_buffer_move_first_into_buffer
GPRAPI void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer *src, size_t n, void *dst)
Definition: slice/slice_buffer.cc:358
grpc_event_engine::experimental::SliceBuffer::Append
void Append(Slice slice)
Definition: event_engine/slice_buffer.cc:29
grpc_event_engine::experimental::SliceBuffer::RefSlice
Slice RefSlice(size_t index)
Definition: event_engine/slice_buffer.cc:45
grpc_event_engine::experimental::SliceBuffer::operator=
SliceBuffer & operator=(SliceBuffer &&other) noexcept
Definition: include/grpc/event_engine/slice_buffer.h:65
grpc_event_engine::experimental::SliceBuffer::TakeFirst
Slice TakeFirst()
Removes the first slice in the SliceBuffer and returns it.
Definition: event_engine/slice_buffer.cc:37
grpc_event_engine::experimental::SliceBuffer::SliceBuffer
SliceBuffer()
Definition: include/grpc/event_engine/slice_buffer.h:53
grpc_event_engine::experimental::SliceBuffer::slice_buffer_
grpc_slice_buffer slice_buffer_
The backing raw slice buffer.
Definition: include/grpc/event_engine/slice_buffer.h:112
grpc_slice_buffer::count
size_t count
Definition: include/grpc/impl/codegen/slice.h:91
slice
grpc_slice slice
Definition: src/core/lib/surface/server.cc:467
grpc_slice_buffer_reset_and_unref
GPRAPI void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer *sb)
Definition: slice_buffer_api.cc:32
grpc_slice_buffer::length
size_t length
Definition: include/grpc/impl/codegen/slice.h:96
slice_buffer.h
grpc_slice_buffer_swap
GPRAPI void grpc_slice_buffer_swap(grpc_slice_buffer *a, grpc_slice_buffer *b)
Definition: slice/slice_buffer.cc:249
grpc_event_engine::experimental::SliceBuffer::~SliceBuffer
~SliceBuffer()
Definition: include/grpc/event_engine/slice_buffer.h:62
grpc_event_engine::experimental::SliceBuffer::RemoveLastNBytes
void RemoveLastNBytes(size_t n)
Removes/deletes the last n bytes in the SliceBuffer.
Definition: include/grpc/event_engine/slice_buffer.h:82
n
int n
Definition: abseil-cpp/absl/container/btree_test.cc:1080
grpc_slice_buffer_init
GPRAPI void grpc_slice_buffer_init(grpc_slice_buffer *sb)
Definition: slice/slice_buffer.cc:116
grpc_event_engine::experimental::SliceBuffer::SliceBuffer
SliceBuffer(SliceBuffer &&other) noexcept
Definition: include/grpc/event_engine/slice_buffer.h:55
grpc_event_engine::experimental::SliceBuffer::AppendIndexed
size_t AppendIndexed(Slice slice)
Definition: event_engine/slice_buffer.cc:33
grpc_event_engine::experimental::SliceBuffer::operator=
SliceBuffer & operator=(const SliceBuffer &)=delete
index
int index
Definition: bloaty/third_party/protobuf/php/ext/google/protobuf/protobuf.h:1184
grpc_event_engine::experimental::SliceBuffer::c_slice_buffer
grpc_slice_buffer * c_slice_buffer()
Return a pointer to the back raw grpc_slice_buffer.
Definition: include/grpc/event_engine/slice_buffer.h:108
grpc_event_engine::experimental::SliceBuffer
Definition: include/grpc/event_engine/slice_buffer.h:51
grpc_event_engine
Definition: endpoint_config.h:24
slice.h
grpc_event_engine::experimental::Slice
Definition: include/grpc/event_engine/slice.h:215
grpc_slice_buffer_trim_end
GPRAPI void grpc_slice_buffer_trim_end(grpc_slice_buffer *sb, size_t n, grpc_slice_buffer *garbage)
Definition: slice/slice_buffer.cc:402
grpc_slice_buffer
Definition: include/grpc/impl/codegen/slice.h:83
grpc_event_engine::experimental::SliceBuffer::Count
size_t Count()
Returns the number of slices held by the SliceBuffer.
Definition: include/grpc/event_engine/slice_buffer.h:79
grpc_event_engine::experimental::SliceBuffer::Clear
void Clear()
Removes and unrefs all slices in the SliceBuffer.
Definition: include/grpc/event_engine/slice_buffer.h:92
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:19