aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/cpp/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpp/common')
-rw-r--r--src/cpp/common/channel_filter.cc8
-rw-r--r--src/cpp/common/channel_filter.h6
-rw-r--r--src/cpp/common/core_codegen.cc11
3 files changed, 20 insertions, 5 deletions
diff --git a/src/cpp/common/channel_filter.cc b/src/cpp/common/channel_filter.cc
index c0dc9dd63e..253614ca9b 100644
--- a/src/cpp/common/channel_filter.cc
+++ b/src/cpp/common/channel_filter.cc
@@ -36,6 +36,8 @@
#include "src/core/lib/channel/channel_stack.h"
#include "src/cpp/common/channel_filter.h"
+#include <grpc++/impl/codegen/slice.h>
+
namespace grpc {
// MetadataBatch
@@ -45,8 +47,10 @@ grpc_linked_mdelem *MetadataBatch::AddMetadata(grpc_exec_ctx *exec_ctx,
const string &value) {
grpc_linked_mdelem *storage = new grpc_linked_mdelem;
memset(storage, 0, sizeof(grpc_linked_mdelem));
- storage->md = grpc_mdelem_from_strings(exec_ctx, key.c_str(), value.c_str());
- grpc_metadata_batch_link_head(batch_, storage);
+ storage->md = grpc_mdelem_from_slices(exec_ctx, SliceFromCopiedString(key),
+ SliceFromCopiedString(value));
+ GRPC_LOG_IF_ERROR("MetadataBatch::AddMetadata",
+ grpc_metadata_batch_link_head(exec_ctx, batch_, storage));
return storage;
}
diff --git a/src/cpp/common/channel_filter.h b/src/cpp/common/channel_filter.h
index 5de8f5e463..5f9fd8790b 100644
--- a/src/cpp/common/channel_filter.h
+++ b/src/cpp/common/channel_filter.h
@@ -76,8 +76,8 @@ class MetadataBatch {
class const_iterator : public std::iterator<std::bidirectional_iterator_tag,
const grpc_mdelem> {
public:
- const grpc_mdelem &operator*() const { return *elem_->md; }
- const grpc_mdelem *operator->() const { return elem_->md; }
+ const grpc_mdelem &operator*() const { return elem_->md; }
+ const grpc_mdelem operator->() const { return elem_->md; }
const_iterator &operator++() {
elem_ = elem_->next;
@@ -133,7 +133,7 @@ class TransportOp {
grpc_error *disconnect_with_error() const {
return op_->disconnect_with_error;
}
- bool send_goaway() const { return op_->send_goaway; }
+ bool send_goaway() const { return op_->goaway_error != GRPC_ERROR_NONE; }
// TODO(roth): Add methods for additional fields as needed.
diff --git a/src/cpp/common/core_codegen.cc b/src/cpp/common/core_codegen.cc
index a07ad54376..a09e08ef4c 100644
--- a/src/cpp/common/core_codegen.cc
+++ b/src/cpp/common/core_codegen.cc
@@ -123,6 +123,17 @@ grpc_slice CoreCodegen::grpc_slice_split_tail(grpc_slice* s, size_t split) {
return ::grpc_slice_split_tail(s, split);
}
+grpc_slice CoreCodegen::grpc_slice_from_static_buffer(const void* buffer,
+ size_t length) {
+ return ::grpc_slice_from_static_buffer(buffer, length);
+}
+
+grpc_slice CoreCodegen::grpc_slice_from_copied_buffer(const void* buffer,
+ size_t length) {
+ return ::grpc_slice_from_copied_buffer(static_cast<const char*>(buffer),
+ length);
+}
+
void CoreCodegen::grpc_slice_buffer_add(grpc_slice_buffer* sb,
grpc_slice slice) {
::grpc_slice_buffer_add(sb, slice);