commit
f7d8860f4f
1384 changed files with 31596 additions and 103035 deletions
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,156 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2017 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPCXX_IMPL_CODEGEN_BYTE_BUFFER_H |
||||
#define GRPCXX_IMPL_CODEGEN_BYTE_BUFFER_H |
||||
|
||||
#include <grpc/impl/codegen/byte_buffer.h> |
||||
|
||||
#include <grpc++/impl/codegen/config.h> |
||||
#include <grpc++/impl/codegen/core_codegen_interface.h> |
||||
#include <grpc++/impl/codegen/serialization_traits.h> |
||||
#include <grpc++/impl/codegen/slice.h> |
||||
#include <grpc++/impl/codegen/status.h> |
||||
|
||||
#include <vector> |
||||
|
||||
namespace grpc { |
||||
|
||||
template <class R> |
||||
class CallOpRecvMessage; |
||||
class MethodHandler; |
||||
template <class ServiceType, class RequestType, class ResponseType> |
||||
class RpcMethodHandler; |
||||
template <class ServiceType, class RequestType, class ResponseType> |
||||
class ServerStreamingHandler; |
||||
namespace CallOpGenericRecvMessageHelper { |
||||
template <class R> |
||||
class DeserializeFuncType; |
||||
} // namespace CallOpGenericRecvMessageHelper
|
||||
|
||||
/// A sequence of bytes.
|
||||
class ByteBuffer final { |
||||
public: |
||||
/// Constuct an empty buffer.
|
||||
ByteBuffer() : buffer_(nullptr) {} |
||||
|
||||
/// Construct buffer from \a slices, of which there are \a nslices.
|
||||
ByteBuffer(const Slice* slices, size_t nslices); |
||||
|
||||
/// Constuct a byte buffer by referencing elements of existing buffer
|
||||
/// \a buf. Wrapper of core function grpc_byte_buffer_copy
|
||||
ByteBuffer(const ByteBuffer& buf); |
||||
|
||||
~ByteBuffer() { |
||||
if (buffer_) { |
||||
g_core_codegen_interface->grpc_byte_buffer_destroy(buffer_); |
||||
} |
||||
} |
||||
|
||||
ByteBuffer& operator=(const ByteBuffer&); |
||||
|
||||
/// Dump (read) the buffer contents into \a slices.
|
||||
Status Dump(std::vector<Slice>* slices) const; |
||||
|
||||
/// Remove all data.
|
||||
void Clear() { |
||||
if (buffer_) { |
||||
g_core_codegen_interface->grpc_byte_buffer_destroy(buffer_); |
||||
buffer_ = nullptr; |
||||
} |
||||
} |
||||
|
||||
/// Make a duplicate copy of the internals of this byte
|
||||
/// buffer so that we have our own owned version of it.
|
||||
/// bbuf.Duplicate(); is equivalent to bbuf=bbuf; but is actually readable
|
||||
void Duplicate() { |
||||
buffer_ = g_core_codegen_interface->grpc_byte_buffer_copy(buffer_); |
||||
} |
||||
|
||||
/// Forget underlying byte buffer without destroying
|
||||
/// Use this only for un-owned byte buffers
|
||||
void Release() { buffer_ = nullptr; } |
||||
|
||||
/// Buffer size in bytes.
|
||||
size_t Length() const; |
||||
|
||||
/// Swap the state of *this and *other.
|
||||
void Swap(ByteBuffer* other); |
||||
|
||||
/// Is this ByteBuffer valid?
|
||||
bool Valid() const { return (buffer_ != nullptr); } |
||||
|
||||
private: |
||||
friend class SerializationTraits<ByteBuffer, void>; |
||||
friend class CallOpSendMessage; |
||||
template <class R> |
||||
friend class CallOpRecvMessage; |
||||
friend class CallOpGenericRecvMessage; |
||||
friend class MethodHandler; |
||||
template <class ServiceType, class RequestType, class ResponseType> |
||||
friend class RpcMethodHandler; |
||||
template <class ServiceType, class RequestType, class ResponseType> |
||||
friend class ServerStreamingHandler; |
||||
template <class R> |
||||
friend class CallOpGenericRecvMessageHelper::DeserializeFuncType; |
||||
|
||||
grpc_byte_buffer* buffer_; |
||||
|
||||
// takes ownership
|
||||
void set_buffer(grpc_byte_buffer* buf) { |
||||
if (buffer_) { |
||||
Clear(); |
||||
} |
||||
buffer_ = buf; |
||||
} |
||||
|
||||
grpc_byte_buffer* c_buffer() { return buffer_; } |
||||
grpc_byte_buffer** c_buffer_ptr() { return &buffer_; } |
||||
|
||||
class ByteBufferPointer { |
||||
public: |
||||
ByteBufferPointer(const ByteBuffer* b) |
||||
: bbuf_(const_cast<ByteBuffer*>(b)) {} |
||||
operator ByteBuffer*() { return bbuf_; } |
||||
operator grpc_byte_buffer*() { return bbuf_->buffer_; } |
||||
operator grpc_byte_buffer**() { return &bbuf_->buffer_; } |
||||
|
||||
private: |
||||
ByteBuffer* bbuf_; |
||||
}; |
||||
ByteBufferPointer bbuf_ptr() const { return ByteBufferPointer(this); } |
||||
}; |
||||
|
||||
template <> |
||||
class SerializationTraits<ByteBuffer, void> { |
||||
public: |
||||
static Status Deserialize(ByteBuffer* byte_buffer, ByteBuffer* dest) { |
||||
dest->set_buffer(byte_buffer->buffer_); |
||||
return Status::OK; |
||||
} |
||||
static Status Serialize(const ByteBuffer& source, ByteBuffer* buffer, |
||||
bool* own_buffer) { |
||||
*buffer = source; |
||||
*own_buffer = true; |
||||
return Status::OK; |
||||
} |
||||
}; |
||||
|
||||
} // namespace grpc
|
||||
|
||||
#endif // GRPCXX_IMPL_CODEGEN_BYTE_BUFFER_H
|
@ -0,0 +1,86 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2015 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_BYTE_BUFFER_H |
||||
#define GRPC_IMPL_CODEGEN_BYTE_BUFFER_H |
||||
|
||||
#include <grpc/impl/codegen/grpc_types.h> |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/** Returns a RAW byte buffer instance over the given slices (up to \a nslices).
|
||||
* |
||||
* Increases the reference count for all \a slices processed. The user is |
||||
* responsible for invoking grpc_byte_buffer_destroy on the returned instance.*/ |
||||
GRPCAPI grpc_byte_buffer *grpc_raw_byte_buffer_create(grpc_slice *slices, |
||||
size_t nslices); |
||||
|
||||
/** Returns a *compressed* RAW byte buffer instance over the given slices (up to
|
||||
* \a nslices). The \a compression argument defines the compression algorithm |
||||
* used to generate the data in \a slices. |
||||
* |
||||
* Increases the reference count for all \a slices processed. The user is |
||||
* responsible for invoking grpc_byte_buffer_destroy on the returned instance.*/ |
||||
GRPCAPI grpc_byte_buffer *grpc_raw_compressed_byte_buffer_create( |
||||
grpc_slice *slices, size_t nslices, grpc_compression_algorithm compression); |
||||
|
||||
/** Copies input byte buffer \a bb.
|
||||
* |
||||
* Increases the reference count of all the source slices. The user is |
||||
* responsible for calling grpc_byte_buffer_destroy over the returned copy. */ |
||||
GRPCAPI grpc_byte_buffer *grpc_byte_buffer_copy(grpc_byte_buffer *bb); |
||||
|
||||
/** Returns the size of the given byte buffer, in bytes. */ |
||||
GRPCAPI size_t grpc_byte_buffer_length(grpc_byte_buffer *bb); |
||||
|
||||
/** Destroys \a byte_buffer deallocating all its memory. */ |
||||
GRPCAPI void grpc_byte_buffer_destroy(grpc_byte_buffer *byte_buffer); |
||||
|
||||
/** Reader for byte buffers. Iterates over slices in the byte buffer */ |
||||
struct grpc_byte_buffer_reader; |
||||
typedef struct grpc_byte_buffer_reader grpc_byte_buffer_reader; |
||||
|
||||
/** Initialize \a reader to read over \a buffer.
|
||||
* Returns 1 upon success, 0 otherwise. */ |
||||
GRPCAPI int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader *reader, |
||||
grpc_byte_buffer *buffer); |
||||
|
||||
/** Cleanup and destroy \a reader */ |
||||
GRPCAPI void grpc_byte_buffer_reader_destroy(grpc_byte_buffer_reader *reader); |
||||
|
||||
/** Updates \a slice with the next piece of data from from \a reader and returns
|
||||
* 1. Returns 0 at the end of the stream. Caller is responsible for calling |
||||
* grpc_slice_unref on the result. */ |
||||
GRPCAPI int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader *reader, |
||||
grpc_slice *slice); |
||||
|
||||
/** Merge all data from \a reader into single slice */ |
||||
GRPCAPI grpc_slice |
||||
grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader *reader); |
||||
|
||||
/** Returns a RAW byte buffer instance from the output of \a reader. */ |
||||
GRPCAPI grpc_byte_buffer *grpc_raw_byte_buffer_from_reader( |
||||
grpc_byte_buffer_reader *reader); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_BYTE_BUFFER_H */ |
@ -0,0 +1,36 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2017 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_SYNC_CUSTOM_H |
||||
#define GRPC_IMPL_CODEGEN_SYNC_CUSTOM_H |
||||
|
||||
#include <grpc/impl/codegen/sync_generic.h> |
||||
|
||||
/* Users defining GPR_CUSTOM_SYNC need to define the following macros. */ |
||||
|
||||
#ifdef GPR_CUSTOM_SYNC |
||||
|
||||
typedef GPR_CUSTOM_MU_TYPE gpr_mu; |
||||
typedef GPR_CUSTOM_CV_TYPE gpr_cv; |
||||
typedef GPR_CUSTOM_ONCE_TYPE gpr_once; |
||||
|
||||
#define GPR_ONCE_INIT GPR_CUSTOM_ONCE_INIT |
||||
|
||||
#endif |
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_SYNC_CUSTOM_H */ |
@ -1,34 +0,0 @@ |
||||
# c-ares cmake file for gRPC |
||||
# |
||||
# This is currently very experimental, and unsupported. |
||||
# |
||||
# Copyright 2016 gRPC authors. |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
|
||||
string(TOLOWER ${CMAKE_SYSTEM_NAME} cares_system_name) |
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../third_party/cares) |
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../third_party/cares/cares) |
||||
|
||||
if(${cares_system_name} MATCHES windows) |
||||
add_definitions(-DCARES_STATICLIB=1) |
||||
add_definitions(-DWIN32_LEAN_AND_MEAN=1) |
||||
else() |
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../third_party/cares/config_${cares_system_name}) |
||||
add_definitions(-DHAVE_CONFIG_H=1) |
||||
add_definitions(-D_GNU_SOURCE=1) |
||||
endif() |
||||
|
||||
file(GLOB lib_sources ../../third_party/cares/cares/*.c) |
||||
add_library(cares ${lib_sources}) |
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue