diff --git a/linx64/bin/protoc/grpc_cpp_plugin b/linx64/bin/protoc/grpc_cpp_plugin deleted file mode 100755 index 26ccb909..00000000 Binary files a/linx64/bin/protoc/grpc_cpp_plugin and /dev/null differ diff --git a/linx64/bin/protoc/grpc_csharp_plugin b/linx64/bin/protoc/grpc_csharp_plugin deleted file mode 100755 index 11888a00..00000000 Binary files a/linx64/bin/protoc/grpc_csharp_plugin and /dev/null differ diff --git a/linx64/bin/protoc/grpc_node_plugin b/linx64/bin/protoc/grpc_node_plugin deleted file mode 100755 index 0f59dd2c..00000000 Binary files a/linx64/bin/protoc/grpc_node_plugin and /dev/null differ diff --git a/linx64/bin/protoc/grpc_objective_c_plugin b/linx64/bin/protoc/grpc_objective_c_plugin deleted file mode 100755 index eec3eaf9..00000000 Binary files a/linx64/bin/protoc/grpc_objective_c_plugin and /dev/null differ diff --git a/linx64/bin/protoc/grpc_php_plugin b/linx64/bin/protoc/grpc_php_plugin deleted file mode 100755 index a2258e2a..00000000 Binary files a/linx64/bin/protoc/grpc_php_plugin and /dev/null differ diff --git a/linx64/bin/protoc/grpc_python_plugin b/linx64/bin/protoc/grpc_python_plugin deleted file mode 100755 index b88b0ed1..00000000 Binary files a/linx64/bin/protoc/grpc_python_plugin and /dev/null differ diff --git a/linx64/bin/protoc/grpc_ruby_plugin b/linx64/bin/protoc/grpc_ruby_plugin deleted file mode 100755 index a719ee1f..00000000 Binary files a/linx64/bin/protoc/grpc_ruby_plugin and /dev/null differ diff --git a/linx64/bin/protoc/protoc b/linx64/bin/protoc/protoc deleted file mode 100755 index a1532248..00000000 Binary files a/linx64/bin/protoc/protoc and /dev/null differ diff --git a/linx64/include/grpc++/alarm.h b/linx64/include/grpc++/alarm.h deleted file mode 100644 index ed8dacbc..00000000 --- a/linx64/include/grpc++/alarm.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * 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. - * - */ - -/// An Alarm posts the user provided tag to its associated completion queue upon -/// expiry or cancellation. -#ifndef GRPCXX_ALARM_H -#define GRPCXX_ALARM_H - -#include -#include -#include -#include -#include -#include - -struct grpc_alarm; - -namespace grpc { - -class CompletionQueue; - -/// A thin wrapper around \a grpc_alarm (see / \a / src/core/surface/alarm.h). -class Alarm : private GrpcLibraryCodegen { - public: - /// Create a completion queue alarm instance associated to \a cq. - /// - /// Once the alarm expires (at \a deadline) or it's cancelled (see \a Cancel), - /// an event with tag \a tag will be added to \a cq. If the alarm expired, the - /// event's success bit will be true, false otherwise (ie, upon cancellation). - /// \internal We rely on the presence of \a cq for grpc initialization. If \a - /// cq were ever to be removed, a reference to a static - /// internal::GrpcLibraryInitializer instance would need to be introduced - /// here. \endinternal. - template - Alarm(CompletionQueue* cq, const T& deadline, void* tag) - : tag_(tag), - alarm_(grpc_alarm_create(cq->cq(), TimePoint(deadline).raw_time(), - static_cast(&tag_))) {} - - /// Alarms aren't copyable. - Alarm(const Alarm&) = delete; - Alarm& operator=(const Alarm&) = delete; - - /// Alarms are movable. - Alarm(Alarm&& rhs) : tag_(rhs.tag_), alarm_(rhs.alarm_) { - rhs.alarm_ = nullptr; - } - Alarm& operator=(Alarm&& rhs) { - tag_ = rhs.tag_; - alarm_ = rhs.alarm_; - rhs.alarm_ = nullptr; - return *this; - } - - /// Destroy the given completion queue alarm, cancelling it in the process. - ~Alarm() { - if (alarm_ != nullptr) grpc_alarm_destroy(alarm_); - } - - /// Cancel a completion queue alarm. Calling this function over an alarm that - /// has already fired has no effect. - void Cancel() { grpc_alarm_cancel(alarm_); } - - private: - class AlarmEntry : public CompletionQueueTag { - public: - AlarmEntry(void* tag) : tag_(tag) {} - bool FinalizeResult(void** tag, bool* status) override { - *tag = tag_; - return true; - } - - private: - void* tag_; - }; - - AlarmEntry tag_; - grpc_alarm* alarm_; // owned -}; - -} // namespace grpc - -#endif // GRPCXX_ALARM_H diff --git a/linx64/include/grpc++/channel.h b/linx64/include/grpc++/channel.h deleted file mode 100644 index c50091d6..00000000 --- a/linx64/include/grpc++/channel.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * - * 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 GRPCXX_CHANNEL_H -#define GRPCXX_CHANNEL_H - -#include - -#include -#include -#include -#include -#include - -struct grpc_channel; - -namespace grpc { -/// Channels represent a connection to an endpoint. Created by \a CreateChannel. -class Channel final : public ChannelInterface, - public CallHook, - public std::enable_shared_from_this, - private GrpcLibraryCodegen { - public: - ~Channel(); - - /// Get the current channel state. If the channel is in IDLE and - /// \a try_to_connect is set to true, try to connect. - grpc_connectivity_state GetState(bool try_to_connect) override; - - /// Returns the LB policy name, or the empty string if not yet available. - grpc::string GetLoadBalancingPolicyName() const; - - /// Returns the service config in JSON form, or the empty string if - /// not available. - grpc::string GetServiceConfigJSON() const; - - private: - template - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, - ClientContext* context, - const InputMessage& request, - OutputMessage* result); - friend std::shared_ptr CreateChannelInternal( - const grpc::string& host, grpc_channel* c_channel); - Channel(const grpc::string& host, grpc_channel* c_channel); - - Call CreateCall(const RpcMethod& method, ClientContext* context, - CompletionQueue* cq) override; - void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) override; - void* RegisterMethod(const char* method) override; - - void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline, CompletionQueue* cq, - void* tag) override; - bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline) override; - - const grpc::string host_; - grpc_channel* const c_channel_; // owned -}; - -} // namespace grpc - -#endif // GRPCXX_CHANNEL_H diff --git a/linx64/include/grpc++/client_context.h b/linx64/include/grpc++/client_context.h deleted file mode 100644 index cf42a627..00000000 --- a/linx64/include/grpc++/client_context.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - * 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. - * - */ - -/// A ClientContext allows the person implementing a service client to: -/// -/// - Add custom metadata key-value pairs that will propagated to the server -/// side. -/// - Control call settings such as compression and authentication. -/// - Initial and trailing metadata coming from the server. -/// - Get performance metrics (ie, census). -/// -/// Context settings are only relevant to the call they are invoked with, that -/// is to say, they aren't sticky. Some of these settings, such as the -/// compression options, can be made persistant at channel construction time -/// (see \a grpc::CreateCustomChannel). -/// -/// \warning ClientContext instances should \em not be reused across rpcs. - -#ifndef GRPCXX_CLIENT_CONTEXT_H -#define GRPCXX_CLIENT_CONTEXT_H - -#include - -#endif // GRPCXX_CLIENT_CONTEXT_H diff --git a/linx64/include/grpc++/completion_queue.h b/linx64/include/grpc++/completion_queue.h deleted file mode 100644 index a71123e0..00000000 --- a/linx64/include/grpc++/completion_queue.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_COMPLETION_QUEUE_H -#define GRPCXX_COMPLETION_QUEUE_H - -#include - -#endif // GRPCXX_COMPLETION_QUEUE_H diff --git a/linx64/include/grpc++/create_channel.h b/linx64/include/grpc++/create_channel.h deleted file mode 100644 index 7ba1131a..00000000 --- a/linx64/include/grpc++/create_channel.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * - * 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 GRPCXX_CREATE_CHANNEL_H -#define GRPCXX_CREATE_CHANNEL_H - -#include - -#include -#include -#include -#include - -namespace grpc { - -/// Create a new \a Channel pointing to \a target. -/// -/// \param target The URI of the endpoint to connect to. -/// \param creds Credentials to use for the created channel. If it does not -/// hold an object or is invalid, a lame channel (one on which all operations -/// fail) is returned. -std::shared_ptr CreateChannel( - const grpc::string& target, - const std::shared_ptr& creds); - -/// Create a new \em custom \a Channel pointing to \a target. -/// -/// \warning For advanced use and testing ONLY. Override default channel -/// arguments only if necessary. -/// -/// \param target The URI of the endpoint to connect to. -/// \param creds Credentials to use for the created channel. If it does not -/// hold an object or is invalid, a lame channel (one on which all operations -/// fail) is returned. -/// \param args Options for channel creation. -std::shared_ptr CreateCustomChannel( - const grpc::string& target, - const std::shared_ptr& creds, - const ChannelArguments& args); - -} // namespace grpc - -#endif // GRPCXX_CREATE_CHANNEL_H diff --git a/linx64/include/grpc++/create_channel_posix.h b/linx64/include/grpc++/create_channel_posix.h deleted file mode 100644 index 10f7e4a6..00000000 --- a/linx64/include/grpc++/create_channel_posix.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_CREATE_CHANNEL_POSIX_H -#define GRPCXX_CREATE_CHANNEL_POSIX_H - -#include - -#include -#include -#include - -namespace grpc { - -#ifdef GPR_SUPPORT_CHANNELS_FROM_FD - -/// Create a new \a Channel communicating over the given file descriptor. -/// -/// \param target The name of the target. -/// \param fd The file descriptor representing a socket. -std::shared_ptr CreateInsecureChannelFromFd(const grpc::string& target, - int fd); - -/// Create a new \a Channel communicating over given file descriptor with custom -/// channel arguments. -/// -/// \param target The name of the target. -/// \param fd The file descriptor representing a socket. -/// \param args Options for channel creation. -std::shared_ptr CreateCustomInsecureChannelFromFd( - const grpc::string& target, int fd, const ChannelArguments& args); - -#endif // GPR_SUPPORT_CHANNELS_FROM_FD - -} // namespace grpc - -#endif // GRPCXX_CREATE_CHANNEL_POSIX_H diff --git a/linx64/include/grpc++/ext/health_check_service_server_builder_option.h b/linx64/include/grpc++/ext/health_check_service_server_builder_option.h deleted file mode 100644 index 89af294a..00000000 --- a/linx64/include/grpc++/ext/health_check_service_server_builder_option.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H -#define GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H - -#include - -#include -#include -#include - -namespace grpc { - -class HealthCheckServiceServerBuilderOption : public ServerBuilderOption { - public: - /// The ownership of \a hc will be taken and transferred to the grpc server. - /// To explicitly disable default service, pass in a nullptr. - explicit HealthCheckServiceServerBuilderOption( - std::unique_ptr hc); - ~HealthCheckServiceServerBuilderOption() override {} - void UpdateArguments(ChannelArguments* args) override; - void UpdatePlugins( - std::vector>* plugins) override; - - private: - std::unique_ptr hc_; -}; - -} // namespace grpc - -#endif // GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H diff --git a/linx64/include/grpc++/ext/proto_server_reflection_plugin.h b/linx64/include/grpc++/ext/proto_server_reflection_plugin.h deleted file mode 100644 index ee3fafd7..00000000 --- a/linx64/include/grpc++/ext/proto_server_reflection_plugin.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * 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 GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H -#define GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H - -#include -#include - -namespace grpc { -class ServerInitializer; -class ProtoServerReflection; -} // namespace grpc - -namespace grpc { -namespace reflection { - -class ProtoServerReflectionPlugin : public ::grpc::ServerBuilderPlugin { - public: - ProtoServerReflectionPlugin(); - ::grpc::string name() override; - void InitServer(::grpc::ServerInitializer* si) override; - void Finish(::grpc::ServerInitializer* si) override; - void ChangeArguments(const ::grpc::string& name, void* value) override; - bool has_async_methods() const override; - bool has_sync_methods() const override; - - private: - std::shared_ptr reflection_service_; -}; - -/// Add proto reflection plugin to \a ServerBuilder. -/// This function should be called at the static initialization time. -void InitProtoReflectionServerBuilderPlugin(); - -} // namespace reflection -} // namespace grpc - -#endif // GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H diff --git a/linx64/include/grpc++/generic/async_generic_service.h b/linx64/include/grpc++/generic/async_generic_service.h deleted file mode 100644 index cd9a65e3..00000000 --- a/linx64/include/grpc++/generic/async_generic_service.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * - * 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 GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H -#define GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H - -#include -#include - -struct grpc_server; - -namespace grpc { - -typedef ServerAsyncReaderWriter - GenericServerAsyncReaderWriter; - -class GenericServerContext final : public ServerContext { - public: - const grpc::string& method() const { return method_; } - const grpc::string& host() const { return host_; } - - private: - friend class Server; - friend class ServerInterface; - - grpc::string method_; - grpc::string host_; -}; - -class AsyncGenericService final { - public: - AsyncGenericService() : server_(nullptr) {} - - void RequestCall(GenericServerContext* ctx, - GenericServerAsyncReaderWriter* reader_writer, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag); - - private: - friend class Server; - Server* server_; -}; - -} // namespace grpc - -#endif // GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H diff --git a/linx64/include/grpc++/generic/generic_stub.h b/linx64/include/grpc++/generic/generic_stub.h deleted file mode 100644 index 7b269d08..00000000 --- a/linx64/include/grpc++/generic/generic_stub.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * 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 GRPCXX_GENERIC_GENERIC_STUB_H -#define GRPCXX_GENERIC_GENERIC_STUB_H - -#include -#include - -namespace grpc { - -class CompletionQueue; -typedef ClientAsyncReaderWriter - GenericClientAsyncReaderWriter; - -/// Generic stubs provide a type-unsafe interface to call gRPC methods -/// by name. -class GenericStub final { - public: - explicit GenericStub(std::shared_ptr channel) - : channel_(channel) {} - - /// Begin a call to a named method \a method using \a context. - /// A tag \a tag will be delivered to \a cq when the call has been started - /// (i.e, initial metadata has been sent). - /// The return value only indicates whether or not registration of the call - /// succeeded (i.e. the call won't proceed if the return value is nullptr). - std::unique_ptr Call( - ClientContext* context, const grpc::string& method, CompletionQueue* cq, - void* tag); - - private: - std::shared_ptr channel_; -}; - -} // namespace grpc - -#endif // GRPCXX_GENERIC_GENERIC_STUB_H diff --git a/linx64/include/grpc++/grpc++.h b/linx64/include/grpc++/grpc++.h deleted file mode 100644 index 31ed436c..00000000 --- a/linx64/include/grpc++/grpc++.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * - * 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. - * - */ - -/// \mainpage gRPC C++ API -/// -/// The gRPC C++ API mainly consists of the following classes: -///
-/// - grpc::Channel, which represents the connection to an endpoint. See [the -/// gRPC Concepts page](https://grpc.io/docs/guides/concepts.html) for more -/// details. Channels are created by the factory function grpc::CreateChannel. -/// -/// - grpc::CompletionQueue, the producer-consumer queue used for all -/// asynchronous communication with the gRPC runtime. -/// -/// - grpc::ClientContext and grpc::ServerContext, where optional configuration -/// for an RPC can be set, such as setting custom metadata to be conveyed to the -/// peer, compression settings, authentication, etc. -/// -/// - grpc::Server, representing a gRPC server, created by grpc::ServerBuilder. -/// -/// Streaming calls are handled with the streaming classes in -/// \ref sync_stream.h and -/// \ref async_stream.h. -/// -/// Refer to the -/// [examples](https://github.com/grpc/grpc/blob/master/examples/cpp) -/// for code putting these pieces into play. - -#ifndef GRPCXX_GRPCXX_H -#define GRPCXX_GRPCXX_H - -// Pragma for http://include-what-you-use.org/ tool, tells that following -// headers are not private for grpc++.h and are part of its interface. -// IWYU pragma: begin_exports -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -// IWYU pragma: end_exports - -namespace grpc { -/// Return gRPC library version. -grpc::string Version(); -} // namespace grpc - -#endif // GRPCXX_GRPCXX_H diff --git a/linx64/include/grpc++/health_check_service_interface.h b/linx64/include/grpc++/health_check_service_interface.h deleted file mode 100644 index 7d4d36ab..00000000 --- a/linx64/include/grpc++/health_check_service_interface.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H -#define GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H - -#include - -namespace grpc { - -const char kHealthCheckServiceInterfaceArg[] = - "grpc.health_check_service_interface"; - -/// The gRPC server uses this interface to expose the health checking service -/// without depending on protobuf. -class HealthCheckServiceInterface { - public: - virtual ~HealthCheckServiceInterface() {} - - /// Set or change the serving status of the given \a service_name. - virtual void SetServingStatus(const grpc::string& service_name, - bool serving) = 0; - /// Apply to all registered service names. - virtual void SetServingStatus(bool serving) = 0; -}; - -/// Enable/disable the default health checking service. This applies to all C++ -/// servers created afterwards. For each server, user can override the default -/// with a HealthCheckServiceServerBuilderOption. -/// NOT thread safe. -void EnableDefaultHealthCheckService(bool enable); - -/// Returns whether the default health checking service is enabled. -/// NOT thread safe. -bool DefaultHealthCheckServiceEnabled(); - -} // namespace grpc - -#endif // GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H diff --git a/linx64/include/grpc++/impl/call.h b/linx64/include/grpc++/impl/call.h deleted file mode 100644 index fceaa3b0..00000000 --- a/linx64/include/grpc++/impl/call.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CALL_H -#define GRPCXX_IMPL_CALL_H - -#include - -#endif // GRPCXX_IMPL_CALL_H diff --git a/linx64/include/grpc++/impl/channel_argument_option.h b/linx64/include/grpc++/impl/channel_argument_option.h deleted file mode 100644 index e918f57e..00000000 --- a/linx64/include/grpc++/impl/channel_argument_option.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * 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_CHANNEL_ARGUMENT_OPTION_H -#define GRPCXX_IMPL_CHANNEL_ARGUMENT_OPTION_H - -#include -#include - -#include -#include - -namespace grpc { - -std::unique_ptr MakeChannelArgumentOption( - const grpc::string &name, const grpc::string &value); -std::unique_ptr MakeChannelArgumentOption( - const grpc::string &name, int value); - -} // namespace grpc - -#endif // GRPCXX_IMPL_CHANNEL_ARGUMENT_OPTION_H diff --git a/linx64/include/grpc++/impl/client_unary_call.h b/linx64/include/grpc++/impl/client_unary_call.h deleted file mode 100644 index d6797279..00000000 --- a/linx64/include/grpc++/impl/client_unary_call.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CLIENT_UNARY_CALL_H -#define GRPCXX_IMPL_CLIENT_UNARY_CALL_H - -#include - -#endif // GRPCXX_IMPL_CLIENT_UNARY_CALL_H diff --git a/linx64/include/grpc++/impl/codegen/async_stream.h b/linx64/include/grpc++/impl/codegen/async_stream.h deleted file mode 100644 index 9cf7ac30..00000000 --- a/linx64/include/grpc++/impl/codegen/async_stream.h +++ /dev/null @@ -1,941 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_ASYNC_STREAM_H -#define GRPCXX_IMPL_CODEGEN_ASYNC_STREAM_H - -#include -#include -#include -#include -#include -#include - -namespace grpc { - -class CompletionQueue; - -/// Common interface for all client side asynchronous streaming. -class ClientAsyncStreamingInterface { - public: - virtual ~ClientAsyncStreamingInterface() {} - - /// Request notification of the reading of the initial metadata. Completion - /// will be notified by \a tag on the associated completion queue. - /// This call is optional, but if it is used, it cannot be used concurrently - /// with or after the \a AsyncReaderInterface::Read method. - /// - /// \param[in] tag Tag identifying this request. - virtual void ReadInitialMetadata(void* tag) = 0; - - /// Indicate that the stream is to be finished and request notification for - /// when the call has been ended. - /// Should not be used concurrently with other operations. - /// - /// It is appropriate to call this method when both: - /// * the client side has no more message to send - /// (this can be declared implicitly by calling this method, or - /// explicitly through an earlier call to the WritesDone method - /// of the class in use, e.g. \a ClientAsyncWriterInterface::WritesDone or - /// \a ClientAsyncReaderWriterInterface::WritesDone). - /// * there are no more messages to be received from the server (this can - /// be known implicitly by the calling code, or explicitly from an - /// earlier call to \a AsyncReaderInterface::Read that yielded a failed - /// result, e.g. cq->Next(&read_tag, &ok) filled in 'ok' with 'false'). - /// - /// This function will return when either: - /// - all incoming messages have been read and the server has returned - /// a status. - /// - the server has returned a non-OK status. - /// - the call failed for some reason and the library generated a - /// status. - /// - /// Note that implementations of this method attempt to receive initial - /// metadata from the server if initial metadata hasn't yet been received. - /// - /// \param[in] tag Tag identifying this request. - /// \param[out] status To be updated with the operation status. - virtual void Finish(Status* status, void* tag) = 0; -}; - -/// An interface that yields a sequence of messages of type \a R. -template -class AsyncReaderInterface { - public: - virtual ~AsyncReaderInterface() {} - - /// Read a message of type \a R into \a msg. Completion will be notified by \a - /// tag on the associated completion queue. - /// This is thread-safe with respect to \a Write or \a WritesDone methods. It - /// should not be called concurrently with other streaming APIs - /// on the same stream. It is not meaningful to call it concurrently - /// with another \a AsyncReaderInterface::Read on the same stream since reads - /// on the same stream are delivered in order. - /// - /// \param[out] msg Where to eventually store the read message. - /// \param[in] tag The tag identifying the operation. - /// - /// Side effect: note that this method attempt to receive initial metadata for - /// a stream if it hasn't yet been received. - virtual void Read(R* msg, void* tag) = 0; -}; - -/// An interface that can be fed a sequence of messages of type \a W. -template -class AsyncWriterInterface { - public: - virtual ~AsyncWriterInterface() {} - - /// Request the writing of \a msg with identifying tag \a tag. - /// - /// Only one write may be outstanding at any given time. This means that - /// after calling Write, one must wait to receive \a tag from the completion - /// queue BEFORE calling Write again. - /// This is thread-safe with respect to \a AsyncReaderInterface::Read - /// - /// \param[in] msg The message to be written. - /// \param[in] tag The tag identifying the operation. - virtual void Write(const W& msg, void* tag) = 0; - - /// Request the writing of \a msg using WriteOptions \a options with - /// identifying tag \a tag. - /// - /// Only one write may be outstanding at any given time. This means that - /// after calling Write, one must wait to receive \a tag from the completion - /// queue BEFORE calling Write again. - /// WriteOptions \a options is used to set the write options of this message. - /// This is thread-safe with respect to \a AsyncReaderInterface::Read - /// - /// \param[in] msg The message to be written. - /// \param[in] options The WriteOptions to be used to write this message. - /// \param[in] tag The tag identifying the operation. - virtual void Write(const W& msg, WriteOptions options, void* tag) = 0; - - /// Request the writing of \a msg and coalesce it with the writing - /// of trailing metadata, using WriteOptions \a options with - /// identifying tag \a tag. - /// - /// For client, WriteLast is equivalent of performing Write and - /// WritesDone in a single step. - /// For server, WriteLast buffers the \a msg. The writing of \a msg is held - /// until Finish is called, where \a msg and trailing metadata are coalesced - /// and write is initiated. Note that WriteLast can only buffer \a msg up to - /// the flow control window size. If \a msg size is larger than the window - /// size, it will be sent on wire without buffering. - /// - /// \param[in] msg The message to be written. - /// \param[in] options The WriteOptions to be used to write this message. - /// \param[in] tag The tag identifying the operation. - void WriteLast(const W& msg, WriteOptions options, void* tag) { - Write(msg, options.set_last_message(), tag); - } -}; - -template -class ClientAsyncReaderInterface : public ClientAsyncStreamingInterface, - public AsyncReaderInterface {}; - -/// Async client-side API for doing server-streaming RPCs, -/// where the incoming message stream coming from the server has -/// messages of type \a R. -template -class ClientAsyncReader final : public ClientAsyncReaderInterface { - public: - /// Create a stream and write the first request out. - /// \a tag will be notified on \a cq when the call has been started and - /// \a request has been written out. - /// Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - template - static ClientAsyncReader* Create(ChannelInterface* channel, - CompletionQueue* cq, const RpcMethod& method, - ClientContext* context, const W& request, - void* tag) { - Call call = channel->CreateCall(method, context, cq); - return new (g_core_codegen_interface->grpc_call_arena_alloc( - call.call(), sizeof(ClientAsyncReader))) - ClientAsyncReader(call, context, request, tag); - } - - // always allocated against a call arena, no memory free required - static void operator delete(void* ptr, std::size_t size) { - assert(size == sizeof(ClientAsyncReader)); - } - - /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata - /// method for semantics. - /// - /// Side effect: - /// - upon receiving initial metadata from the server, - /// the \a ClientContext associated with this call is updated, and the - /// calling code can access the received metadata through the - /// \a ClientContext. - void ReadInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - meta_ops_.set_output_tag(tag); - meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); - } - - void Read(R* msg, void* tag) override { - read_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - read_ops_.RecvInitialMetadata(context_); - } - read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); - } - - /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata received from the server. - void Finish(Status* status, void* tag) override { - finish_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - finish_ops_.RecvInitialMetadata(context_); - } - finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); - } - - private: - template - ClientAsyncReader(Call call, ClientContext* context, const W& request, - void* tag) - : context_(context), call_(call) { - init_ops_.set_output_tag(tag); - init_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(init_ops_.SendMessage(request).ok()); - init_ops_.ClientSendClose(); - call_.PerformOps(&init_ops_); - } - - ClientContext* context_; - Call call_; - CallOpSet - init_ops_; - CallOpSet meta_ops_; - CallOpSet> read_ops_; - CallOpSet finish_ops_; -}; - -/// Common interface for client side asynchronous writing. -template -class ClientAsyncWriterInterface : public ClientAsyncStreamingInterface, - public AsyncWriterInterface { - public: - /// Signal the client is done with the writes (half-close the client stream). - /// Thread-safe with respect to \a AsyncReaderInterface::Read - /// - /// \param[in] tag The tag identifying the operation. - virtual void WritesDone(void* tag) = 0; -}; - -/// Async API on the client side for doing client-streaming RPCs, -/// where the outgoing message stream going to the server contains -/// messages of type \a W. -template -class ClientAsyncWriter final : public ClientAsyncWriterInterface { - public: - /// Create a stream and write the first request out. - /// \a tag will be notified on \a cq when the call has been started (i.e. - /// intitial metadata sent) and \a request has been written out. - /// Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - /// \a response will be filled in with the single expected response - /// message from the server upon a successful call to the \a Finish - /// method of this instance. - template - static ClientAsyncWriter* Create(ChannelInterface* channel, - CompletionQueue* cq, const RpcMethod& method, - ClientContext* context, R* response, - void* tag) { - Call call = channel->CreateCall(method, context, cq); - return new (g_core_codegen_interface->grpc_call_arena_alloc( - call.call(), sizeof(ClientAsyncWriter))) - ClientAsyncWriter(call, context, response, tag); - } - - // always allocated against a call arena, no memory free required - static void operator delete(void* ptr, std::size_t size) { - assert(size == sizeof(ClientAsyncWriter)); - } - - /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata method for - /// semantics. - /// - /// Side effect: - /// - upon receiving initial metadata from the server, the \a ClientContext - /// associated with this call is updated, and the calling code can access - /// the received metadata through the \a ClientContext. - void ReadInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - meta_ops_.set_output_tag(tag); - meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); - } - - void Write(const W& msg, void* tag) override { - write_ops_.set_output_tag(tag); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok()); - call_.PerformOps(&write_ops_); - } - - void Write(const W& msg, WriteOptions options, void* tag) override { - write_ops_.set_output_tag(tag); - if (options.is_last_message()) { - options.set_buffer_hint(); - write_ops_.ClientSendClose(); - } - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - call_.PerformOps(&write_ops_); - } - - void WritesDone(void* tag) override { - write_ops_.set_output_tag(tag); - write_ops_.ClientSendClose(); - call_.PerformOps(&write_ops_); - } - - /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata received from the server. - /// - attempts to fill in the \a response parameter passed to this class's - /// constructor with the server's response message. - void Finish(Status* status, void* tag) override { - finish_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - finish_ops_.RecvInitialMetadata(context_); - } - finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); - } - - private: - template - ClientAsyncWriter(Call call, ClientContext* context, R* response, void* tag) - : context_(context), call_(call) { - finish_ops_.RecvMessage(response); - finish_ops_.AllowNoMessage(); - // if corked bit is set in context, we buffer up the initial metadata to - // coalesce with later message to be sent. No op is performed. - if (context_->initial_metadata_corked_) { - write_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - } else { - write_ops_.set_output_tag(tag); - write_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - call_.PerformOps(&write_ops_); - } - } - - ClientContext* context_; - Call call_; - CallOpSet meta_ops_; - CallOpSet - write_ops_; - CallOpSet - finish_ops_; -}; - -/// Async client-side interface for bi-directional streaming, -/// where the client-to-server message stream has messages of type \a W, -/// and the server-to-client message stream has messages of type \a R. -template -class ClientAsyncReaderWriterInterface : public ClientAsyncStreamingInterface, - public AsyncWriterInterface, - public AsyncReaderInterface { - public: - /// Signal the client is done with the writes (half-close the client stream). - /// Thread-safe with respect to \a AsyncReaderInterface::Read - /// - /// \param[in] tag The tag identifying the operation. - virtual void WritesDone(void* tag) = 0; -}; - -/// Async client-side interface for bi-directional streaming, -/// where the outgoing message stream going to the server -/// has messages of type \a W, and the incoming message stream coming -/// from the server has messages of type \a R. -template -class ClientAsyncReaderWriter final - : public ClientAsyncReaderWriterInterface { - public: - /// Create a stream and write the first request out. - /// \a tag will be notified on \a cq when the call has been started (i.e. - /// intitial metadata sent). - /// Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - static ClientAsyncReaderWriter* Create(ChannelInterface* channel, - CompletionQueue* cq, - const RpcMethod& method, - ClientContext* context, void* tag) { - Call call = channel->CreateCall(method, context, cq); - - return new (g_core_codegen_interface->grpc_call_arena_alloc( - call.call(), sizeof(ClientAsyncReaderWriter))) - ClientAsyncReaderWriter(call, context, tag); - } - - // always allocated against a call arena, no memory free required - static void operator delete(void* ptr, std::size_t size) { - assert(size == sizeof(ClientAsyncReaderWriter)); - } - - /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata method - /// for semantics of this method. - /// - /// Side effect: - /// - upon receiving initial metadata from the server, the \a ClientContext - /// is updated with it, and then the receiving initial metadata can - /// be accessed through this \a ClientContext. - void ReadInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - meta_ops_.set_output_tag(tag); - meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); - } - - void Read(R* msg, void* tag) override { - read_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - read_ops_.RecvInitialMetadata(context_); - } - read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); - } - - void Write(const W& msg, void* tag) override { - write_ops_.set_output_tag(tag); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok()); - call_.PerformOps(&write_ops_); - } - - void Write(const W& msg, WriteOptions options, void* tag) override { - write_ops_.set_output_tag(tag); - if (options.is_last_message()) { - options.set_buffer_hint(); - write_ops_.ClientSendClose(); - } - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - call_.PerformOps(&write_ops_); - } - - void WritesDone(void* tag) override { - write_ops_.set_output_tag(tag); - write_ops_.ClientSendClose(); - call_.PerformOps(&write_ops_); - } - - /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. - /// Side effect - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata sent from the server. - void Finish(Status* status, void* tag) override { - finish_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - finish_ops_.RecvInitialMetadata(context_); - } - finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); - } - - private: - ClientAsyncReaderWriter(Call call, ClientContext* context, void* tag) - : context_(context), call_(call) { - if (context_->initial_metadata_corked_) { - // if corked bit is set in context, we buffer up the initial metadata to - // coalesce with later message to be sent. No op is performed. - write_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - } else { - write_ops_.set_output_tag(tag); - write_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - call_.PerformOps(&write_ops_); - } - } - - ClientContext* context_; - Call call_; - CallOpSet meta_ops_; - CallOpSet> read_ops_; - CallOpSet - write_ops_; - CallOpSet finish_ops_; -}; - -template -class ServerAsyncReaderInterface : public ServerAsyncStreamingInterface, - public AsyncReaderInterface { - public: - /// Indicate that the stream is to be finished with a certain status code - /// and also send out \a msg response to the client. - /// Request notification for when the server has sent the response and the - /// appropriate signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// It is appropriate to call this method when: - /// * all messages from the client have been received (either known - /// implictly, or explicitly because a previous - /// \a AsyncReaderInterface::Read operation with a non-ok result, - /// e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false'). - /// - /// This operation will end when the server has finished sending out initial - /// metadata (if not sent already), response message, and status, or if - /// some failure occurred when trying to do so. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of this call. - /// \param[in] msg To be sent to the client as the response for this call. - virtual void Finish(const W& msg, const Status& status, void* tag) = 0; - - /// Indicate that the stream is to be finished with a certain - /// non-OK status code. - /// Request notification for when the server has sent the appropriate - /// signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// This call is meant to end the call with some error, and can be called at - /// any point that the server would like to "fail" the call (though note - /// this shouldn't be called concurrently with any other "sending" call, like - /// \a AsyncWriterInterface::Write). - /// - /// This operation will end when the server has finished sending out initial - /// metadata (if not sent already), and status, or if some failure occurred - /// when trying to do so. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of this call. - /// - Note: \a status must have a non-OK code. - virtual void FinishWithError(const Status& status, void* tag) = 0; -}; - -/// Async server-side API for doing client-streaming RPCs, -/// where the incoming message stream from the client has messages of type \a R, -/// and the single response message sent from the server is type \a W. -template -class ServerAsyncReader final : public ServerAsyncReaderInterface { - public: - explicit ServerAsyncReader(ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} - - /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. - /// - /// Implicit input parameter: - /// - The initial metadata that will be sent to the client from this op will - /// be taken from the \a ServerContext associated with the call. - void SendInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - meta_ops_.set_output_tag(tag); - meta_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - meta_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); - } - - void Read(R* msg, void* tag) override { - read_ops_.set_output_tag(tag); - read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); - } - - /// See the \a ServerAsyncReaderInterface.Read method for semantics - /// - /// Side effect: - /// - also sends initial metadata if not alreay sent. - /// - uses the \a ServerContext associated with this call to send possible - /// initial and trailing metadata. - /// - /// Note: \a msg is not sent if \a status has a non-OK code. - void Finish(const W& msg, const Status& status, void* tag) override { - finish_ops_.set_output_tag(tag); - if (!ctx_->sent_initial_metadata_) { - finish_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - finish_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - // The response is dropped if the status is not OK. - if (status.ok()) { - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, - finish_ops_.SendMessage(msg)); - } else { - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - } - call_.PerformOps(&finish_ops_); - } - - /// See the \a ServerAsyncReaderInterface.Read method for semantics - /// - /// Side effect: - /// - also sends initial metadata if not alreay sent. - /// - uses the \a ServerContext associated with this call to send possible - /// initial and trailing metadata. - void FinishWithError(const Status& status, void* tag) override { - GPR_CODEGEN_ASSERT(!status.ok()); - finish_ops_.set_output_tag(tag); - if (!ctx_->sent_initial_metadata_) { - finish_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - finish_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); - } - - private: - void BindCall(Call* call) override { call_ = *call; } - - Call call_; - ServerContext* ctx_; - CallOpSet meta_ops_; - CallOpSet> read_ops_; - CallOpSet - finish_ops_; -}; - -template -class ServerAsyncWriterInterface : public ServerAsyncStreamingInterface, - public AsyncWriterInterface { - public: - /// Indicate that the stream is to be finished with a certain status code. - /// Request notification for when the server has sent the appropriate - /// signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// It is appropriate to call this method when either: - /// * all messages from the client have been received (either known - /// implictly, or explicitly because a previous \a - /// AsyncReaderInterface::Read operation with a non-ok - /// result (e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false'. - /// * it is desired to end the call early with some non-OK status code. - /// - /// This operation will end when the server has finished sending out initial - /// metadata (if not sent already), response message, and status, or if - /// some failure occurred when trying to do so. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of this call. - virtual void Finish(const Status& status, void* tag) = 0; - - /// Request the writing of \a msg and coalesce it with trailing metadata which - /// contains \a status, using WriteOptions options with - /// identifying tag \a tag. - /// - /// WriteAndFinish is equivalent of performing WriteLast and Finish - /// in a single step. - /// - /// \param[in] msg The message to be written. - /// \param[in] options The WriteOptions to be used to write this message. - /// \param[in] status The Status that server returns to client. - /// \param[in] tag The tag identifying the operation. - virtual void WriteAndFinish(const W& msg, WriteOptions options, - const Status& status, void* tag) = 0; -}; - -/// Async server-side API for doing server streaming RPCs, -/// where the outgoing message stream from the server has messages of type \a W. -template -class ServerAsyncWriter final : public ServerAsyncWriterInterface { - public: - explicit ServerAsyncWriter(ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} - - /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. - /// - /// Implicit input parameter: - /// - The initial metadata that will be sent to the client from this op will - /// be taken from the \a ServerContext associated with the call. - /// - /// \param[in] tag Tag identifying this request. - void SendInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - meta_ops_.set_output_tag(tag); - meta_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - meta_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); - } - - void Write(const W& msg, void* tag) override { - write_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&write_ops_); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok()); - call_.PerformOps(&write_ops_); - } - - void Write(const W& msg, WriteOptions options, void* tag) override { - write_ops_.set_output_tag(tag); - if (options.is_last_message()) { - options.set_buffer_hint(); - } - - EnsureInitialMetadataSent(&write_ops_); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - call_.PerformOps(&write_ops_); - } - - /// See the \a ServerAsyncWriterInterface.WriteAndFinish method for semantics. - /// - /// Implicit input parameter: - /// - the \a ServerContext associated with this call is used - /// for sending trailing (and initial) metadata to the client. - /// - /// Note: \a status must have an OK code. - void WriteAndFinish(const W& msg, WriteOptions options, const Status& status, - void* tag) override { - write_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&write_ops_); - options.set_buffer_hint(); - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - write_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&write_ops_); - } - - /// See the \a ServerAsyncWriterInterface.Finish method for semantics. - /// - /// Implicit input parameter: - /// - the \a ServerContext associated with this call is used for sending - /// trailing (and initial if not already sent) metadata to the client. - /// - /// Note: there are no restrictions are the code of - /// \a status,it may be non-OK - void Finish(const Status& status, void* tag) override { - finish_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&finish_ops_); - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); - } - - private: - void BindCall(Call* call) override { call_ = *call; } - - template - void EnsureInitialMetadataSent(T* ops) { - if (!ctx_->sent_initial_metadata_) { - ops->SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops->set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - } - - Call call_; - ServerContext* ctx_; - CallOpSet meta_ops_; - CallOpSet - write_ops_; - CallOpSet finish_ops_; -}; - -/// Server-side interface for asynchronous bi-directional streaming. -template -class ServerAsyncReaderWriterInterface : public ServerAsyncStreamingInterface, - public AsyncWriterInterface, - public AsyncReaderInterface { - public: - /// Indicate that the stream is to be finished with a certain status code. - /// Request notification for when the server has sent the appropriate - /// signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// It is appropriate to call this method when either: - /// * all messages from the client have been received (either known - /// implictly, or explicitly because a previous \a - /// AsyncReaderInterface::Read operation - /// with a non-ok result (e.g., cq->Next(&read_tag, &ok) filled in 'ok' - /// with 'false'. - /// * it is desired to end the call early with some non-OK status code. - /// - /// This operation will end when the server has finished sending out initial - /// metadata (if not sent already), response message, and status, or if some - /// failure occurred when trying to do so. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of this call. - virtual void Finish(const Status& status, void* tag) = 0; - - /// Request the writing of \a msg and coalesce it with trailing metadata which - /// contains \a status, using WriteOptions options with - /// identifying tag \a tag. - /// - /// WriteAndFinish is equivalent of performing WriteLast and Finish in a - /// single step. - /// - /// \param[in] msg The message to be written. - /// \param[in] options The WriteOptions to be used to write this message. - /// \param[in] status The Status that server returns to client. - /// \param[in] tag The tag identifying the operation. - virtual void WriteAndFinish(const W& msg, WriteOptions options, - const Status& status, void* tag) = 0; -}; - -/// Async server-side API for doing bidirectional streaming RPCs, -/// where the incoming message stream coming from the client has messages of -/// type \a R, and the outgoing message stream coming from the server has -/// messages of type \a W. -template -class ServerAsyncReaderWriter final - : public ServerAsyncReaderWriterInterface { - public: - explicit ServerAsyncReaderWriter(ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} - - /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. - /// - /// Implicit input parameter: - /// - The initial metadata that will be sent to the client from this op will - /// be taken from the \a ServerContext associated with the call. - /// - /// \param[in] tag Tag identifying this request. - void SendInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - meta_ops_.set_output_tag(tag); - meta_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - meta_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); - } - - void Read(R* msg, void* tag) override { - read_ops_.set_output_tag(tag); - read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); - } - - void Write(const W& msg, void* tag) override { - write_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&write_ops_); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok()); - call_.PerformOps(&write_ops_); - } - - void Write(const W& msg, WriteOptions options, void* tag) override { - write_ops_.set_output_tag(tag); - if (options.is_last_message()) { - options.set_buffer_hint(); - } - EnsureInitialMetadataSent(&write_ops_); - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - call_.PerformOps(&write_ops_); - } - - /// See the \a ServerAsyncReaderWriterInterface.WriteAndFinish - /// method for semantics. - /// - /// Implicit input parameter: - /// - the \a ServerContext associated with this call is used - /// for sending trailing (and initial) metadata to the client. - /// - /// Note: \a status must have an OK code. - void WriteAndFinish(const W& msg, WriteOptions options, const Status& status, - void* tag) override { - write_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&write_ops_); - options.set_buffer_hint(); - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - write_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&write_ops_); - } - - /// See the \a ServerAsyncReaderWriterInterface.Finish method for semantics. - /// - /// Implicit input parameter: - /// - the \a ServerContext associated with this call is used for sending - /// trailing (and initial if not already sent) metadata to the client. - /// - /// Note: there are no restrictions are the code of \a status, - /// it may be non-OK - void Finish(const Status& status, void* tag) override { - finish_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&finish_ops_); - - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); - } - - private: - friend class ::grpc::Server; - - void BindCall(Call* call) override { call_ = *call; } - - template - void EnsureInitialMetadataSent(T* ops) { - if (!ctx_->sent_initial_metadata_) { - ops->SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops->set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - } - - Call call_; - ServerContext* ctx_; - CallOpSet meta_ops_; - CallOpSet> read_ops_; - CallOpSet - write_ops_; - CallOpSet finish_ops_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_ASYNC_STREAM_H diff --git a/linx64/include/grpc++/impl/codegen/async_unary_call.h b/linx64/include/grpc++/impl/codegen/async_unary_call.h deleted file mode 100644 index f0f90968..00000000 --- a/linx64/include/grpc++/impl/codegen/async_unary_call.h +++ /dev/null @@ -1,269 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H -#define GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H - -#include -#include -#include -#include -#include -#include -#include - -namespace grpc { - -class CompletionQueue; -extern CoreCodegenInterface* g_core_codegen_interface; - -/// An interface relevant for async client side unary RPCS (which send -/// one request message to a server and receive one response message). -template -class ClientAsyncResponseReaderInterface { - public: - virtual ~ClientAsyncResponseReaderInterface() {} - - /// Request notification of the reading of initial metadata. Completion - /// will be notified by \a tag on the associated completion queue. - /// This call is optional, but if it is used, it cannot be used concurrently - /// with or after the \a Finish method. - /// - /// \param[in] tag Tag identifying this request. - virtual void ReadInitialMetadata(void* tag) = 0; - - /// Request to receive the server's response \a msg and final \a status for - /// the call, and to notify \a tag on this call's completion queue when - /// finished. - /// - /// This function will return when either: - /// - when the server's response message and status have been received. - /// - when the server has returned a non-OK status (no message expected in - /// this case). - /// - when the call failed for some reason and the library generated a - /// non-OK status. - /// - /// \param[in] tag Tag identifying this request. - /// \param[out] status To be updated with the operation status. - /// \param[out] msg To be filled in with the server's response message. - virtual void Finish(R* msg, Status* status, void* tag) = 0; -}; - -/// Async API for client-side unary RPCs, where the message response -/// received from the server is of type \a R. -template -class ClientAsyncResponseReader final - : public ClientAsyncResponseReaderInterface { - public: - /// Start a call and write the request out. - /// \a tag will be notified on \a cq when the call has been started (i.e. - /// intitial metadata sent) and \a request has been written out. - /// Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - template - static ClientAsyncResponseReader* Create(ChannelInterface* channel, - CompletionQueue* cq, - const RpcMethod& method, - ClientContext* context, - const W& request) { - Call call = channel->CreateCall(method, context, cq); - return new (g_core_codegen_interface->grpc_call_arena_alloc( - call.call(), sizeof(ClientAsyncResponseReader))) - ClientAsyncResponseReader(call, context, request); - } - - // always allocated against a call arena, no memory free required - static void operator delete(void* ptr, std::size_t size) { - assert(size == sizeof(ClientAsyncResponseReader)); - } - - /// See \a ClientAsyncResponseReaderInterface::ReadInitialMetadata for - /// semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata sent from the server. - void ReadInitialMetadata(void* tag) { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - meta_buf.set_output_tag(tag); - meta_buf.RecvInitialMetadata(context_); - call_.PerformOps(&meta_buf); - } - - /// See \a ClientAysncResponseReaderInterface::Finish for semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata sent from the server. - void Finish(R* msg, Status* status, void* tag) { - finish_buf.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - finish_buf.RecvInitialMetadata(context_); - } - finish_buf.RecvMessage(msg); - finish_buf.AllowNoMessage(); - finish_buf.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_buf); - } - - private: - ClientContext* const context_; - Call call_; - - template - ClientAsyncResponseReader(Call call, ClientContext* context, const W& request) - : context_(context), call_(call) { - init_buf.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(init_buf.SendMessage(request).ok()); - init_buf.ClientSendClose(); - call_.PerformOps(&init_buf); - } - - // disable operator new - static void* operator new(std::size_t size); - static void* operator new(std::size_t size, void* p) { return p; } - - SneakyCallOpSet - init_buf; - CallOpSet meta_buf; - CallOpSet, - CallOpClientRecvStatus> - finish_buf; -}; - -/// Async server-side API for handling unary calls, where the single -/// response message sent to the client is of type \a W. -template -class ServerAsyncResponseWriter final : public ServerAsyncStreamingInterface { - public: - explicit ServerAsyncResponseWriter(ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} - - /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. - /// - /// Side effect: - /// The initial metadata that will be sent to the client from this op will - /// be taken from the \a ServerContext associated with the call. - /// - /// \param[in] tag Tag identifying this request. - void SendInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - meta_buf_.set_output_tag(tag); - meta_buf_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - meta_buf_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_buf_); - } - - /// Indicate that the stream is to be finished and request notification - /// when the server has sent the appropriate signals to the client to - /// end the call. Should not be used concurrently with other operations. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of the call. - /// \param[in] msg Message to be sent to the client. - /// - /// Side effect: - /// - also sends initial metadata if not already sent (using the - /// \a ServerContext associated with this call). - /// - /// Note: if \a status has a non-OK code, then \a msg will not be sent, - /// and the client will receive only the status with possible trailing - /// metadata. - void Finish(const W& msg, const Status& status, void* tag) { - finish_buf_.set_output_tag(tag); - if (!ctx_->sent_initial_metadata_) { - finish_buf_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - finish_buf_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - // The response is dropped if the status is not OK. - if (status.ok()) { - finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, - finish_buf_.SendMessage(msg)); - } else { - finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status); - } - call_.PerformOps(&finish_buf_); - } - - /// Indicate that the stream is to be finished with a non-OK status, - /// and request notification for when the server has finished sending the - /// appropriate signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of the call. - /// - Note: \a status must have a non-OK code. - /// - /// Side effect: - /// - also sends initial metadata if not already sent (using the - /// \a ServerContext associated with this call). - void FinishWithError(const Status& status, void* tag) { - GPR_CODEGEN_ASSERT(!status.ok()); - finish_buf_.set_output_tag(tag); - if (!ctx_->sent_initial_metadata_) { - finish_buf_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - finish_buf_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_buf_); - } - - private: - void BindCall(Call* call) override { call_ = *call; } - - Call call_; - ServerContext* ctx_; - CallOpSet meta_buf_; - CallOpSet - finish_buf_; -}; - -} // namespace grpc - -namespace std { -template -class default_delete> { - public: - void operator()(void* p) {} -}; -template -class default_delete> { - public: - void operator()(void* p) {} -}; -} - -#endif // GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H diff --git a/linx64/include/grpc++/impl/codegen/call.h b/linx64/include/grpc++/impl/codegen/call.h deleted file mode 100644 index f45ab239..00000000 --- a/linx64/include/grpc++/impl/codegen/call.h +++ /dev/null @@ -1,681 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CALL_H -#define GRPCXX_IMPL_CODEGEN_CALL_H - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -struct grpc_byte_buffer; - -namespace grpc { - -class ByteBuffer; -class Call; -class CallHook; -class CompletionQueue; -extern CoreCodegenInterface* g_core_codegen_interface; - -const char kBinaryErrorDetailsKey[] = "grpc-status-details-bin"; - -// TODO(yangg) if the map is changed before we send, the pointers will be a -// mess. Make sure it does not happen. -inline grpc_metadata* FillMetadataArray( - const std::multimap& metadata, - size_t* metadata_count, const grpc::string& optional_error_details) { - *metadata_count = metadata.size() + (optional_error_details.empty() ? 0 : 1); - if (*metadata_count == 0) { - return nullptr; - } - grpc_metadata* metadata_array = - (grpc_metadata*)(g_core_codegen_interface->gpr_malloc( - (*metadata_count) * sizeof(grpc_metadata))); - size_t i = 0; - for (auto iter = metadata.cbegin(); iter != metadata.cend(); ++iter, ++i) { - metadata_array[i].key = SliceReferencingString(iter->first); - metadata_array[i].value = SliceReferencingString(iter->second); - } - if (!optional_error_details.empty()) { - metadata_array[i].key = - g_core_codegen_interface->grpc_slice_from_static_buffer( - kBinaryErrorDetailsKey, sizeof(kBinaryErrorDetailsKey) - 1); - metadata_array[i].value = SliceReferencingString(optional_error_details); - } - return metadata_array; -} - -/// Per-message write options. -class WriteOptions { - public: - WriteOptions() : flags_(0), last_message_(false) {} - WriteOptions(const WriteOptions& other) - : flags_(other.flags_), last_message_(other.last_message_) {} - - /// Clear all flags. - inline void Clear() { flags_ = 0; } - - /// Returns raw flags bitset. - inline uint32_t flags() const { return flags_; } - - /// Sets flag for the disabling of compression for the next message write. - /// - /// \sa GRPC_WRITE_NO_COMPRESS - inline WriteOptions& set_no_compression() { - SetBit(GRPC_WRITE_NO_COMPRESS); - return *this; - } - - /// Clears flag for the disabling of compression for the next message write. - /// - /// \sa GRPC_WRITE_NO_COMPRESS - inline WriteOptions& clear_no_compression() { - ClearBit(GRPC_WRITE_NO_COMPRESS); - return *this; - } - - /// Get value for the flag indicating whether compression for the next - /// message write is forcefully disabled. - /// - /// \sa GRPC_WRITE_NO_COMPRESS - inline bool get_no_compression() const { - return GetBit(GRPC_WRITE_NO_COMPRESS); - } - - /// Sets flag indicating that the write may be buffered and need not go out on - /// the wire immediately. - /// - /// \sa GRPC_WRITE_BUFFER_HINT - inline WriteOptions& set_buffer_hint() { - SetBit(GRPC_WRITE_BUFFER_HINT); - return *this; - } - - /// Clears flag indicating that the write may be buffered and need not go out - /// on the wire immediately. - /// - /// \sa GRPC_WRITE_BUFFER_HINT - inline WriteOptions& clear_buffer_hint() { - ClearBit(GRPC_WRITE_BUFFER_HINT); - return *this; - } - - /// Get value for the flag indicating that the write may be buffered and need - /// not go out on the wire immediately. - /// - /// \sa GRPC_WRITE_BUFFER_HINT - inline bool get_buffer_hint() const { return GetBit(GRPC_WRITE_BUFFER_HINT); } - - /// corked bit: aliases set_buffer_hint currently, with the intent that - /// set_buffer_hint will be removed in the future - inline WriteOptions& set_corked() { - SetBit(GRPC_WRITE_BUFFER_HINT); - return *this; - } - - inline WriteOptions& clear_corked() { - ClearBit(GRPC_WRITE_BUFFER_HINT); - return *this; - } - - inline bool is_corked() const { return GetBit(GRPC_WRITE_BUFFER_HINT); } - - /// last-message bit: indicates this is the last message in a stream - /// client-side: makes Write the equivalent of performing Write, WritesDone - /// in a single step - /// server-side: hold the Write until the service handler returns (sync api) - /// or until Finish is called (async api) - inline WriteOptions& set_last_message() { - last_message_ = true; - return *this; - } - - /// Clears flag indicating that this is the last message in a stream, - /// disabling coalescing. - inline WriteOptions& clear_last_messsage() { - last_message_ = false; - return *this; - } - - /// Get value for the flag indicating that this is the last message, and - /// should be coalesced with trailing metadata. - /// - /// \sa GRPC_WRITE_LAST_MESSAGE - bool is_last_message() const { return last_message_; } - - WriteOptions& operator=(const WriteOptions& rhs) { - flags_ = rhs.flags_; - return *this; - } - - private: - void SetBit(const uint32_t mask) { flags_ |= mask; } - - void ClearBit(const uint32_t mask) { flags_ &= ~mask; } - - bool GetBit(const uint32_t mask) const { return (flags_ & mask) != 0; } - - uint32_t flags_; - bool last_message_; -}; - -/// Default argument for CallOpSet. I is unused by the class, but can be -/// used for generating multiple names for the same thing. -template -class CallNoOp { - protected: - void AddOp(grpc_op* ops, size_t* nops) {} - void FinishOp(bool* status) {} -}; - -class CallOpSendInitialMetadata { - public: - CallOpSendInitialMetadata() : send_(false) { - maybe_compression_level_.is_set = false; - } - - void SendInitialMetadata( - const std::multimap& metadata, - uint32_t flags) { - maybe_compression_level_.is_set = false; - send_ = true; - flags_ = flags; - initial_metadata_ = - FillMetadataArray(metadata, &initial_metadata_count_, ""); - } - - void set_compression_level(grpc_compression_level level) { - maybe_compression_level_.is_set = true; - maybe_compression_level_.level = level; - } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (!send_) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_SEND_INITIAL_METADATA; - op->flags = flags_; - op->reserved = NULL; - op->data.send_initial_metadata.count = initial_metadata_count_; - op->data.send_initial_metadata.metadata = initial_metadata_; - op->data.send_initial_metadata.maybe_compression_level.is_set = - maybe_compression_level_.is_set; - if (maybe_compression_level_.is_set) { - op->data.send_initial_metadata.maybe_compression_level.level = - maybe_compression_level_.level; - } - } - void FinishOp(bool* status) { - if (!send_) return; - g_core_codegen_interface->gpr_free(initial_metadata_); - send_ = false; - } - - bool send_; - uint32_t flags_; - size_t initial_metadata_count_; - grpc_metadata* initial_metadata_; - struct { - bool is_set; - grpc_compression_level level; - } maybe_compression_level_; -}; - -class CallOpSendMessage { - public: - CallOpSendMessage() : send_buf_(nullptr), own_buf_(false) {} - - /// Send \a message using \a options for the write. The \a options are cleared - /// after use. - template - Status SendMessage(const M& message, - WriteOptions options) GRPC_MUST_USE_RESULT; - - template - Status SendMessage(const M& message) GRPC_MUST_USE_RESULT; - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (send_buf_ == nullptr) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_SEND_MESSAGE; - op->flags = write_options_.flags(); - op->reserved = NULL; - op->data.send_message.send_message = send_buf_; - // Flags are per-message: clear them after use. - write_options_.Clear(); - } - void FinishOp(bool* status) { - if (own_buf_) g_core_codegen_interface->grpc_byte_buffer_destroy(send_buf_); - send_buf_ = nullptr; - } - - private: - grpc_byte_buffer* send_buf_; - WriteOptions write_options_; - bool own_buf_; -}; - -template -Status CallOpSendMessage::SendMessage(const M& message, WriteOptions options) { - write_options_ = options; - return SerializationTraits::Serialize(message, &send_buf_, &own_buf_); -} - -template -Status CallOpSendMessage::SendMessage(const M& message) { - return SendMessage(message, WriteOptions()); -} - -template -class CallOpRecvMessage { - public: - CallOpRecvMessage() - : got_message(false), - message_(nullptr), - allow_not_getting_message_(false) {} - - void RecvMessage(R* message) { message_ = message; } - - // Do not change status if no message is received. - void AllowNoMessage() { allow_not_getting_message_ = true; } - - bool got_message; - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (message_ == nullptr) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_RECV_MESSAGE; - op->flags = 0; - op->reserved = NULL; - op->data.recv_message.recv_message = &recv_buf_; - } - - void FinishOp(bool* status) { - if (message_ == nullptr) return; - if (recv_buf_) { - if (*status) { - got_message = *status = - SerializationTraits::Deserialize(recv_buf_, message_).ok(); - } else { - got_message = false; - g_core_codegen_interface->grpc_byte_buffer_destroy(recv_buf_); - } - } else { - got_message = false; - if (!allow_not_getting_message_) { - *status = false; - } - } - message_ = nullptr; - } - - private: - R* message_; - grpc_byte_buffer* recv_buf_; - bool allow_not_getting_message_; -}; - -namespace CallOpGenericRecvMessageHelper { -class DeserializeFunc { - public: - virtual Status Deserialize(grpc_byte_buffer* buf) = 0; - virtual ~DeserializeFunc() {} -}; - -template -class DeserializeFuncType final : public DeserializeFunc { - public: - DeserializeFuncType(R* message) : message_(message) {} - Status Deserialize(grpc_byte_buffer* buf) override { - return SerializationTraits::Deserialize(buf, message_); - } - - ~DeserializeFuncType() override {} - - private: - R* message_; // Not a managed pointer because management is external to this -}; -} // namespace CallOpGenericRecvMessageHelper - -class CallOpGenericRecvMessage { - public: - CallOpGenericRecvMessage() - : got_message(false), allow_not_getting_message_(false) {} - - template - void RecvMessage(R* message) { - // Use an explicit base class pointer to avoid resolution error in the - // following unique_ptr::reset for some old implementations. - CallOpGenericRecvMessageHelper::DeserializeFunc* func = - new CallOpGenericRecvMessageHelper::DeserializeFuncType(message); - deserialize_.reset(func); - } - - // Do not change status if no message is received. - void AllowNoMessage() { allow_not_getting_message_ = true; } - - bool got_message; - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (!deserialize_) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_RECV_MESSAGE; - op->flags = 0; - op->reserved = NULL; - op->data.recv_message.recv_message = &recv_buf_; - } - - void FinishOp(bool* status) { - if (!deserialize_) return; - if (recv_buf_) { - if (*status) { - got_message = true; - *status = deserialize_->Deserialize(recv_buf_).ok(); - } else { - got_message = false; - g_core_codegen_interface->grpc_byte_buffer_destroy(recv_buf_); - } - } else { - got_message = false; - if (!allow_not_getting_message_) { - *status = false; - } - } - deserialize_.reset(); - } - - private: - std::unique_ptr deserialize_; - grpc_byte_buffer* recv_buf_; - bool allow_not_getting_message_; -}; - -class CallOpClientSendClose { - public: - CallOpClientSendClose() : send_(false) {} - - void ClientSendClose() { send_ = true; } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (!send_) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; - op->flags = 0; - op->reserved = NULL; - } - void FinishOp(bool* status) { send_ = false; } - - private: - bool send_; -}; - -class CallOpServerSendStatus { - public: - CallOpServerSendStatus() : send_status_available_(false) {} - - void ServerSendStatus( - const std::multimap& trailing_metadata, - const Status& status) { - send_error_details_ = status.error_details(); - trailing_metadata_ = FillMetadataArray( - trailing_metadata, &trailing_metadata_count_, send_error_details_); - send_status_available_ = true; - send_status_code_ = static_cast(status.error_code()); - send_error_message_ = status.error_message(); - } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (!send_status_available_) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_SEND_STATUS_FROM_SERVER; - op->data.send_status_from_server.trailing_metadata_count = - trailing_metadata_count_; - op->data.send_status_from_server.trailing_metadata = trailing_metadata_; - op->data.send_status_from_server.status = send_status_code_; - error_message_slice_ = SliceReferencingString(send_error_message_); - op->data.send_status_from_server.status_details = - send_error_message_.empty() ? nullptr : &error_message_slice_; - op->flags = 0; - op->reserved = NULL; - } - - void FinishOp(bool* status) { - if (!send_status_available_) return; - g_core_codegen_interface->gpr_free(trailing_metadata_); - send_status_available_ = false; - } - - private: - bool send_status_available_; - grpc_status_code send_status_code_; - grpc::string send_error_details_; - grpc::string send_error_message_; - size_t trailing_metadata_count_; - grpc_metadata* trailing_metadata_; - grpc_slice error_message_slice_; -}; - -class CallOpRecvInitialMetadata { - public: - CallOpRecvInitialMetadata() : metadata_map_(nullptr) {} - - void RecvInitialMetadata(ClientContext* context) { - context->initial_metadata_received_ = true; - metadata_map_ = &context->recv_initial_metadata_; - } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (metadata_map_ == nullptr) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_RECV_INITIAL_METADATA; - op->data.recv_initial_metadata.recv_initial_metadata = metadata_map_->arr(); - op->flags = 0; - op->reserved = NULL; - } - - void FinishOp(bool* status) { - if (metadata_map_ == nullptr) return; - metadata_map_->FillMap(); - metadata_map_ = nullptr; - } - - private: - MetadataMap* metadata_map_; -}; - -class CallOpClientRecvStatus { - public: - CallOpClientRecvStatus() : recv_status_(nullptr) {} - - void ClientRecvStatus(ClientContext* context, Status* status) { - metadata_map_ = &context->trailing_metadata_; - recv_status_ = status; - error_message_ = g_core_codegen_interface->grpc_empty_slice(); - } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (recv_status_ == nullptr) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; - op->data.recv_status_on_client.trailing_metadata = metadata_map_->arr(); - op->data.recv_status_on_client.status = &status_code_; - op->data.recv_status_on_client.status_details = &error_message_; - op->flags = 0; - op->reserved = NULL; - } - - void FinishOp(bool* status) { - if (recv_status_ == nullptr) return; - metadata_map_->FillMap(); - grpc::string binary_error_details; - auto iter = metadata_map_->map()->find(kBinaryErrorDetailsKey); - if (iter != metadata_map_->map()->end()) { - binary_error_details = - grpc::string(iter->second.begin(), iter->second.length()); - } - *recv_status_ = Status(static_cast(status_code_), - grpc::string(GRPC_SLICE_START_PTR(error_message_), - GRPC_SLICE_END_PTR(error_message_)), - binary_error_details); - g_core_codegen_interface->grpc_slice_unref(error_message_); - recv_status_ = nullptr; - } - - private: - MetadataMap* metadata_map_; - Status* recv_status_; - grpc_status_code status_code_; - grpc_slice error_message_; -}; - -/// An abstract collection of call ops, used to generate the -/// grpc_call_op structure to pass down to the lower layers, -/// and as it is-a CompletionQueueTag, also massages the final -/// completion into the correct form for consumption in the C++ -/// API. -class CallOpSetInterface : public CompletionQueueTag { - public: - /// Fills in grpc_op, starting from ops[*nops] and moving - /// upwards. - virtual void FillOps(grpc_call* call, grpc_op* ops, size_t* nops) = 0; -}; - -/// Primary implementaiton of CallOpSetInterface. -/// Since we cannot use variadic templates, we declare slots up to -/// the maximum count of ops we'll need in a set. We leverage the -/// empty base class optimization to slim this class (especially -/// when there are many unused slots used). To avoid duplicate base classes, -/// the template parmeter for CallNoOp is varied by argument position. -template , class Op2 = CallNoOp<2>, - class Op3 = CallNoOp<3>, class Op4 = CallNoOp<4>, - class Op5 = CallNoOp<5>, class Op6 = CallNoOp<6>> -class CallOpSet : public CallOpSetInterface, - public Op1, - public Op2, - public Op3, - public Op4, - public Op5, - public Op6 { - public: - CallOpSet() : return_tag_(this) {} - void FillOps(grpc_call* call, grpc_op* ops, size_t* nops) override { - this->Op1::AddOp(ops, nops); - this->Op2::AddOp(ops, nops); - this->Op3::AddOp(ops, nops); - this->Op4::AddOp(ops, nops); - this->Op5::AddOp(ops, nops); - this->Op6::AddOp(ops, nops); - g_core_codegen_interface->grpc_call_ref(call); - call_ = call; - } - - bool FinalizeResult(void** tag, bool* status) override { - this->Op1::FinishOp(status); - this->Op2::FinishOp(status); - this->Op3::FinishOp(status); - this->Op4::FinishOp(status); - this->Op5::FinishOp(status); - this->Op6::FinishOp(status); - *tag = return_tag_; - - g_core_codegen_interface->grpc_call_unref(call_); - return true; - } - - void set_output_tag(void* return_tag) { return_tag_ = return_tag; } - - private: - void* return_tag_; - grpc_call* call_; -}; - -/// A CallOpSet that does not post completions to the completion queue. -/// -/// Allows hiding some completions that the C core must generate from -/// C++ users. -template , class Op2 = CallNoOp<2>, - class Op3 = CallNoOp<3>, class Op4 = CallNoOp<4>, - class Op5 = CallNoOp<5>, class Op6 = CallNoOp<6>> -class SneakyCallOpSet : public CallOpSet { - public: - bool FinalizeResult(void** tag, bool* status) override { - typedef CallOpSet Base; - return Base::FinalizeResult(tag, status) && false; - } -}; - -/// Straightforward wrapping of the C call object -class Call final { - public: - /** call is owned by the caller */ - Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq) - : call_hook_(call_hook), - cq_(cq), - call_(call), - max_receive_message_size_(-1) {} - - Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq, - int max_receive_message_size) - : call_hook_(call_hook), - cq_(cq), - call_(call), - max_receive_message_size_(max_receive_message_size) {} - - void PerformOps(CallOpSetInterface* ops) { - call_hook_->PerformOpsOnCall(ops, this); - } - - grpc_call* call() const { return call_; } - CompletionQueue* cq() const { return cq_; } - - int max_receive_message_size() const { return max_receive_message_size_; } - - private: - CallHook* call_hook_; - CompletionQueue* cq_; - grpc_call* call_; - int max_receive_message_size_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CALL_H diff --git a/linx64/include/grpc++/impl/codegen/call_hook.h b/linx64/include/grpc++/impl/codegen/call_hook.h deleted file mode 100644 index d026cc8b..00000000 --- a/linx64/include/grpc++/impl/codegen/call_hook.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CALL_HOOK_H -#define GRPCXX_IMPL_CODEGEN_CALL_HOOK_H - -namespace grpc { - -class CallOpSetInterface; -class Call; - -/// This is an interface that Channel and Server implement to allow them to hook -/// performing ops. -class CallHook { - public: - virtual ~CallHook() {} - virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CALL_HOOK_H diff --git a/linx64/include/grpc++/impl/codegen/channel_interface.h b/linx64/include/grpc++/impl/codegen/channel_interface.h deleted file mode 100644 index 1b7590bf..00000000 --- a/linx64/include/grpc++/impl/codegen/channel_interface.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_CHANNEL_INTERFACE_H -#define GRPCXX_IMPL_CODEGEN_CHANNEL_INTERFACE_H - -#include -#include -#include - -namespace grpc { -class Call; -class ClientContext; -class RpcMethod; -class CallOpSetInterface; -class CompletionQueue; - -template -class ClientReader; -template -class ClientWriter; -template -class ClientReaderWriter; -template -class ClientAsyncReader; -template -class ClientAsyncWriter; -template -class ClientAsyncReaderWriter; -template -class ClientAsyncResponseReader; - -/// Codegen interface for \a grpc::Channel. -class ChannelInterface { - public: - virtual ~ChannelInterface() {} - /// Get the current channel state. If the channel is in IDLE and - /// \a try_to_connect is set to true, try to connect. - virtual grpc_connectivity_state GetState(bool try_to_connect) = 0; - - /// Return the \a tag on \a cq when the channel state is changed or \a - /// deadline expires. \a GetState needs to called to get the current state. - template - void NotifyOnStateChange(grpc_connectivity_state last_observed, T deadline, - CompletionQueue* cq, void* tag) { - TimePoint deadline_tp(deadline); - NotifyOnStateChangeImpl(last_observed, deadline_tp.raw_time(), cq, tag); - } - - /// Blocking wait for channel state change or \a deadline expiration. - /// \a GetState needs to called to get the current state. - template - bool WaitForStateChange(grpc_connectivity_state last_observed, T deadline) { - TimePoint deadline_tp(deadline); - return WaitForStateChangeImpl(last_observed, deadline_tp.raw_time()); - } - - /// Wait for this channel to be connected - template - bool WaitForConnected(T deadline) { - grpc_connectivity_state state; - while ((state = GetState(true)) != GRPC_CHANNEL_READY) { - if (!WaitForStateChange(state, deadline)) return false; - } - return true; - } - - private: - template - friend class ::grpc::ClientReader; - template - friend class ::grpc::ClientWriter; - template - friend class ::grpc::ClientReaderWriter; - template - friend class ::grpc::ClientAsyncReader; - template - friend class ::grpc::ClientAsyncWriter; - template - friend class ::grpc::ClientAsyncReaderWriter; - template - friend class ::grpc::ClientAsyncResponseReader; - template - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, - ClientContext* context, - const InputMessage& request, - OutputMessage* result); - friend class ::grpc::RpcMethod; - virtual Call CreateCall(const RpcMethod& method, ClientContext* context, - CompletionQueue* cq) = 0; - virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0; - virtual void* RegisterMethod(const char* method) = 0; - virtual void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline, - CompletionQueue* cq, void* tag) = 0; - virtual bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CHANNEL_INTERFACE_H diff --git a/linx64/include/grpc++/impl/codegen/client_context.h b/linx64/include/grpc++/impl/codegen/client_context.h deleted file mode 100644 index 6d7e13bb..00000000 --- a/linx64/include/grpc++/impl/codegen/client_context.h +++ /dev/null @@ -1,414 +0,0 @@ -/* - * - * 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. - * - */ - -/// A ClientContext allows the person implementing a service client to: -/// -/// - Add custom metadata key-value pairs that will propagated to the server -/// side. -/// - Control call settings such as compression and authentication. -/// - Initial and trailing metadata coming from the server. -/// - Get performance metrics (ie, census). -/// -/// Context settings are only relevant to the call they are invoked with, that -/// is to say, they aren't sticky. Some of these settings, such as the -/// compression options, can be made persistent at channel construction time -/// (see \a grpc::CreateCustomChannel). -/// -/// \warning ClientContext instances should \em not be reused across rpcs. - -#ifndef GRPCXX_IMPL_CODEGEN_CLIENT_CONTEXT_H -#define GRPCXX_IMPL_CODEGEN_CLIENT_CONTEXT_H - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct census_context; -struct grpc_call; - -namespace grpc { - -class Channel; -class ChannelInterface; -class CompletionQueue; -class CallCredentials; -class RpcMethod; -template -class ClientReader; -template -class ClientWriter; -template -class ClientReaderWriter; -template -class ClientAsyncReader; -template -class ClientAsyncWriter; -template -class ClientAsyncReaderWriter; -template -class ClientAsyncResponseReader; -class ServerContext; - -/// Options for \a ClientContext::FromServerContext specifying which traits from -/// the \a ServerContext to propagate (copy) from it into a new \a -/// ClientContext. -/// -/// \see ClientContext::FromServerContext -class PropagationOptions { - public: - PropagationOptions() : propagate_(GRPC_PROPAGATE_DEFAULTS) {} - - PropagationOptions& enable_deadline_propagation() { - propagate_ |= GRPC_PROPAGATE_DEADLINE; - return *this; - } - - PropagationOptions& disable_deadline_propagation() { - propagate_ &= ~GRPC_PROPAGATE_DEADLINE; - return *this; - } - - PropagationOptions& enable_census_stats_propagation() { - propagate_ |= GRPC_PROPAGATE_CENSUS_STATS_CONTEXT; - return *this; - } - - PropagationOptions& disable_census_stats_propagation() { - propagate_ &= ~GRPC_PROPAGATE_CENSUS_STATS_CONTEXT; - return *this; - } - - PropagationOptions& enable_census_tracing_propagation() { - propagate_ |= GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT; - return *this; - } - - PropagationOptions& disable_census_tracing_propagation() { - propagate_ &= ~GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT; - return *this; - } - - PropagationOptions& enable_cancellation_propagation() { - propagate_ |= GRPC_PROPAGATE_CANCELLATION; - return *this; - } - - PropagationOptions& disable_cancellation_propagation() { - propagate_ &= ~GRPC_PROPAGATE_CANCELLATION; - return *this; - } - - uint32_t c_bitmask() const { return propagate_; } - - private: - uint32_t propagate_; -}; - -namespace testing { -class InteropClientContextInspector; -} // namespace testing - -/// A ClientContext allows the person implementing a service client to: -/// -/// - Add custom metadata key-value pairs that will propagated to the server -/// side. -/// - Control call settings such as compression and authentication. -/// - Initial and trailing metadata coming from the server. -/// - Get performance metrics (ie, census). -/// -/// Context settings are only relevant to the call they are invoked with, that -/// is to say, they aren't sticky. Some of these settings, such as the -/// compression options, can be made persistent at channel construction time -/// (see \a grpc::CreateCustomChannel). -/// -/// \warning ClientContext instances should \em not be reused across rpcs. -class ClientContext { - public: - ClientContext(); - ~ClientContext(); - - /// Create a new \a ClientContext as a child of an incoming server call, - /// according to \a options (\see PropagationOptions). - /// - /// \param server_context The source server context to use as the basis for - /// constructing the client context. - /// \param options The options controlling what to copy from the \a - /// server_context. - /// - /// \return A newly constructed \a ClientContext instance based on \a - /// server_context, with traits propagated (copied) according to \a options. - static std::unique_ptr FromServerContext( - const ServerContext& server_context, - PropagationOptions options = PropagationOptions()); - - /// Add the (\a meta_key, \a meta_value) pair to the metadata associated with - /// a client call. These are made available at the server side by the \a - /// grpc::ServerContext::client_metadata() method. - /// - /// \warning This method should only be called before invoking the rpc. - /// - /// \param meta_key The metadata key. If \a meta_value is binary data, it must - /// end in "-bin". - /// \param meta_value The metadata value. If its value is binary, the key name - /// must end in "-bin". - void AddMetadata(const grpc::string& meta_key, - const grpc::string& meta_value); - - /// Return a collection of initial metadata key-value pairs. Note that keys - /// may happen more than once (ie, a \a std::multimap is returned). - /// - /// \warning This method should only be called after initial metadata has been - /// received. For streaming calls, see \a - /// ClientReaderInterface::WaitForInitialMetadata(). - /// - /// \return A multimap of initial metadata key-value pairs from the server. - const std::multimap& - GetServerInitialMetadata() const { - GPR_CODEGEN_ASSERT(initial_metadata_received_); - return *recv_initial_metadata_.map(); - } - - /// Return a collection of trailing metadata key-value pairs. Note that keys - /// may happen more than once (ie, a \a std::multimap is returned). - /// - /// \warning This method is only callable once the stream has finished. - /// - /// \return A multimap of metadata trailing key-value pairs from the server. - const std::multimap& - GetServerTrailingMetadata() const { - // TODO(yangg) check finished - return *trailing_metadata_.map(); - } - - /// Set the deadline for the client call. - /// - /// \warning This method should only be called before invoking the rpc. - /// - /// \param deadline the deadline for the client call. Units are determined by - /// the type used. - template - void set_deadline(const T& deadline) { - TimePoint deadline_tp(deadline); - deadline_ = deadline_tp.raw_time(); - } - - /// EXPERIMENTAL: Indicate that this request is idempotent. - /// By default, RPCs are assumed to not be idempotent. - /// - /// If true, the gRPC library assumes that it's safe to initiate - /// this RPC multiple times. - void set_idempotent(bool idempotent) { idempotent_ = idempotent; } - - /// EXPERIMENTAL: Set this request to be cacheable. - /// If set, grpc is free to use the HTTP GET verb for sending the request, - /// with the possibility of receiving a cached response. - void set_cacheable(bool cacheable) { cacheable_ = cacheable; } - - /// EXPERIMENTAL: Trigger wait-for-ready or not on this request. - /// See https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md. - /// If set, if an RPC is made when a channel's connectivity state is - /// TRANSIENT_FAILURE or CONNECTING, the call will not "fail fast", - /// and the channel will wait until the channel is READY before making the - /// call. - void set_wait_for_ready(bool wait_for_ready) { - wait_for_ready_ = wait_for_ready; - wait_for_ready_explicitly_set_ = true; - } - - /// DEPRECATED: Use set_wait_for_ready() instead. - void set_fail_fast(bool fail_fast) { set_wait_for_ready(!fail_fast); } - - /// Return the deadline for the client call. - std::chrono::system_clock::time_point deadline() const { - return Timespec2Timepoint(deadline_); - } - - /// Return a \a gpr_timespec representation of the client call's deadline. - gpr_timespec raw_deadline() const { return deadline_; } - - /// Set the per call authority header (see - /// https://tools.ietf.org/html/rfc7540#section-8.1.2.3). - void set_authority(const grpc::string& authority) { authority_ = authority; } - - /// Return the authentication context for this client call. - /// - /// \see grpc::AuthContext. - std::shared_ptr auth_context() const { - if (auth_context_.get() == nullptr) { - auth_context_ = CreateAuthContext(call_); - } - return auth_context_; - } - - /// Set credentials for the client call. - /// - /// A credentials object encapsulates all the state needed by a client to - /// authenticate with a server and make various assertions, e.g., about the - /// client’s identity, role, or whether it is authorized to make a particular - /// call. - /// - /// \see https://grpc.io/docs/guides/auth.html - void set_credentials(const std::shared_ptr& creds) { - creds_ = creds; - } - - /// Return the compression algorithm to be used by the client call. - grpc_compression_algorithm compression_algorithm() const { - return compression_algorithm_; - } - - /// Set \a algorithm to be the compression algorithm used for the client call. - /// - /// \param algorithm The compression algorithm used for the client call. - void set_compression_algorithm(grpc_compression_algorithm algorithm); - - /// Flag whether the initial metadata should be \a corked - /// - /// If \a corked is true, then the initial metadata will be coalesced with the - /// write of first message in the stream. - /// - /// \param corked The flag indicating whether the initial metadata is to be - /// corked or not. - void set_initial_metadata_corked(bool corked) { - initial_metadata_corked_ = corked; - } - - /// Return the peer uri in a string. - /// - /// \warning This value is never authenticated or subject to any security - /// related code. It must not be used for any authentication related - /// functionality. Instead, use auth_context. - /// - /// \return The call's peer URI. - grpc::string peer() const; - - /// Get and set census context. - void set_census_context(struct census_context* ccp) { census_context_ = ccp; } - struct census_context* census_context() const { - return census_context_; - } - - /// Send a best-effort out-of-band cancel on the call associated with - /// this client context. The call could be in any stage; e.g., if it is - /// already finished, it may still return success. - /// - /// There is no guarantee the call will be cancelled. - void TryCancel(); - - /// Global Callbacks - /// - /// Can be set exactly once per application to install hooks whenever - /// a client context is constructed and destructed. - class GlobalCallbacks { - public: - virtual ~GlobalCallbacks() {} - virtual void DefaultConstructor(ClientContext* context) = 0; - virtual void Destructor(ClientContext* context) = 0; - }; - static void SetGlobalCallbacks(GlobalCallbacks* callbacks); - - /// Should be used for framework-level extensions only. - /// Applications never need to call this method. - grpc_call* c_call() { return call_; } - - private: - // Disallow copy and assign. - ClientContext(const ClientContext&); - ClientContext& operator=(const ClientContext&); - - friend class ::grpc::testing::InteropClientContextInspector; - friend class CallOpClientRecvStatus; - friend class CallOpRecvInitialMetadata; - friend class Channel; - template - friend class ::grpc::ClientReader; - template - friend class ::grpc::ClientWriter; - template - friend class ::grpc::ClientReaderWriter; - template - friend class ::grpc::ClientAsyncReader; - template - friend class ::grpc::ClientAsyncWriter; - template - friend class ::grpc::ClientAsyncReaderWriter; - template - friend class ::grpc::ClientAsyncResponseReader; - template - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, - ClientContext* context, - const InputMessage& request, - OutputMessage* result); - - grpc_call* call() const { return call_; } - void set_call(grpc_call* call, const std::shared_ptr& channel); - - uint32_t initial_metadata_flags() const { - return (idempotent_ ? GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST : 0) | - (wait_for_ready_ ? GRPC_INITIAL_METADATA_WAIT_FOR_READY : 0) | - (cacheable_ ? GRPC_INITIAL_METADATA_CACHEABLE_REQUEST : 0) | - (wait_for_ready_explicitly_set_ - ? GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET - : 0) | - (initial_metadata_corked_ ? GRPC_INITIAL_METADATA_CORKED : 0); - } - - grpc::string authority() { return authority_; } - - bool initial_metadata_received_; - bool wait_for_ready_; - bool wait_for_ready_explicitly_set_; - bool idempotent_; - bool cacheable_; - std::shared_ptr channel_; - std::mutex mu_; - grpc_call* call_; - bool call_canceled_; - gpr_timespec deadline_; - grpc::string authority_; - std::shared_ptr creds_; - mutable std::shared_ptr auth_context_; - struct census_context* census_context_; - std::multimap send_initial_metadata_; - MetadataMap recv_initial_metadata_; - MetadataMap trailing_metadata_; - - grpc_call* propagate_from_call_; - PropagationOptions propagation_options_; - - grpc_compression_algorithm compression_algorithm_; - bool initial_metadata_corked_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CLIENT_CONTEXT_H diff --git a/linx64/include/grpc++/impl/codegen/client_unary_call.h b/linx64/include/grpc++/impl/codegen/client_unary_call.h deleted file mode 100644 index 7c540fad..00000000 --- a/linx64/include/grpc++/impl/codegen/client_unary_call.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CLIENT_UNARY_CALL_H -#define GRPCXX_IMPL_CODEGEN_CLIENT_UNARY_CALL_H - -#include -#include -#include -#include -#include - -namespace grpc { - -class Channel; -class ClientContext; -class CompletionQueue; -class RpcMethod; - -/// Wrapper that performs a blocking unary call -template -Status BlockingUnaryCall(ChannelInterface* channel, const RpcMethod& method, - ClientContext* context, const InputMessage& request, - OutputMessage* result) { - CompletionQueue cq(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK, - GRPC_CQ_DEFAULT_POLLING}); // Pluckable completion queue - Call call(channel->CreateCall(method, context, &cq)); - CallOpSet, - CallOpClientSendClose, CallOpClientRecvStatus> - ops; - Status status = ops.SendMessage(request); - if (!status.ok()) { - return status; - } - ops.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - ops.RecvInitialMetadata(context); - ops.RecvMessage(result); - ops.ClientSendClose(); - ops.ClientRecvStatus(context, &status); - call.PerformOps(&ops); - if (cq.Pluck(&ops)) { - if (!ops.got_message && status.ok()) { - return Status(StatusCode::UNIMPLEMENTED, - "No message returned for unary request"); - } - } else { - GPR_CODEGEN_ASSERT(!status.ok()); - } - return status; -} - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CLIENT_UNARY_CALL_H diff --git a/linx64/include/grpc++/impl/codegen/completion_queue.h b/linx64/include/grpc++/impl/codegen/completion_queue.h deleted file mode 100644 index ca757e2a..00000000 --- a/linx64/include/grpc++/impl/codegen/completion_queue.h +++ /dev/null @@ -1,295 +0,0 @@ -/* - * - * Copyright 2015-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. - * - */ - -/// A completion queue implements a concurrent producer-consumer queue, with -/// two main API-exposed methods: \a Next and \a AsyncNext. These -/// methods are the essential component of the gRPC C++ asynchronous API. -/// There is also a \a Shutdown method to indicate that a given completion queue -/// will no longer have regular events. This must be called before the -/// completion queue is destroyed. -/// All completion queue APIs are thread-safe and may be used concurrently with -/// any other completion queue API invocation; it is acceptable to have -/// multiple threads calling \a Next or \a AsyncNext on the same or different -/// completion queues, or to call these methods concurrently with a \a Shutdown -/// elsewhere. -/// \remark{All other API calls on completion queue should be completed before -/// a completion queue destructor is called.} -#ifndef GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H -#define GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H - -#include -#include -#include -#include -#include -#include - -struct grpc_completion_queue; - -namespace grpc { - -template -class ClientReader; -template -class ClientWriter; -template -class ClientReaderWriter; -template -class ServerReader; -template -class ServerWriter; -namespace internal { -template -class ServerReaderWriterBody; -} -template -class RpcMethodHandler; -template -class ClientStreamingHandler; -template -class ServerStreamingHandler; -template -class BidiStreamingHandler; -class UnknownMethodHandler; - -class Channel; -class ChannelInterface; -class ClientContext; -class CompletionQueueTag; -class CompletionQueue; -class RpcMethod; -class Server; -class ServerBuilder; -class ServerContext; - -extern CoreCodegenInterface* g_core_codegen_interface; - -/// A thin wrapper around \ref grpc_completion_queue (see \ref -/// src/core/lib/surface/completion_queue.h). -/// See \ref doc/cpp/perf_notes.md for notes on best practices for high -/// performance servers. -class CompletionQueue : private GrpcLibraryCodegen { - public: - /// Default constructor. Implicitly creates a \a grpc_completion_queue - /// instance. - CompletionQueue() - : CompletionQueue(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_NEXT, GRPC_CQ_DEFAULT_POLLING}) {} - - /// Wrap \a take, taking ownership of the instance. - /// - /// \param take The completion queue instance to wrap. Ownership is taken. - explicit CompletionQueue(grpc_completion_queue* take); - - /// Destructor. Destroys the owned wrapped completion queue / instance. - ~CompletionQueue() { - g_core_codegen_interface->grpc_completion_queue_destroy(cq_); - } - - /// Tri-state return for AsyncNext: SHUTDOWN, GOT_EVENT, TIMEOUT. - enum NextStatus { - SHUTDOWN, ///< The completion queue has been shutdown. - GOT_EVENT, ///< Got a new event; \a tag will be filled in with its - ///< associated value; \a ok indicating its success. - TIMEOUT ///< deadline was reached. - }; - - /// Read from the queue, blocking up to \a deadline (or the queue's shutdown). - /// Both \a tag and \a ok are updated upon success (if an event is available - /// within the \a deadline). A \a tag points to an arbitrary location usually - /// employed to uniquely identify an event. - /// - /// \param tag[out] Upon sucess, updated to point to the event's tag. - /// \param ok[out] Upon sucess, true if read a regular event, false otherwise. - /// \param deadline[in] How long to block in wait for an event. - /// - /// \return The type of event read. - template - NextStatus AsyncNext(void** tag, bool* ok, const T& deadline) { - TimePoint deadline_tp(deadline); - return AsyncNextInternal(tag, ok, deadline_tp.raw_time()); - } - - /// Read from the queue, blocking until an event is available or the queue is - /// shutting down. - /// - /// \param tag[out] Updated to point to the read event's tag. - /// \param ok[out] true if read a regular event, false otherwise. - /// - /// \return true if read a regular event, false if the queue is shutting down. - bool Next(void** tag, bool* ok) { - return (AsyncNextInternal(tag, ok, g_core_codegen_interface->gpr_inf_future( - GPR_CLOCK_REALTIME)) != SHUTDOWN); - } - - /// Request the shutdown of the queue. - /// - /// \warning This method must be called at some point if this completion queue - /// is accessed with Next or AsyncNext. Once invoked, \a Next - /// will start to return false and \a AsyncNext will return \a - /// NextStatus::SHUTDOWN. Only once either one of these methods does that - /// (that is, once the queue has been \em drained) can an instance of this - /// class be destroyed. Also note that applications must ensure that - /// no work is enqueued on this completion queue after this method is called. - void Shutdown(); - - /// Returns a \em raw pointer to the underlying \a grpc_completion_queue - /// instance. - /// - /// \warning Remember that the returned instance is owned. No transfer of - /// owership is performed. - grpc_completion_queue* cq() { return cq_; } - - /// Manage state of avalanching operations : completion queue tags that - /// trigger other completion queue operations. The underlying core completion - /// queue should not really shutdown until all avalanching operations have - /// been finalized. Note that we maintain the requirement that an avalanche - /// registration must take place before CQ shutdown (which must be maintained - /// elsehwere) - void InitialAvalanching() { - gpr_atm_rel_store(&avalanches_in_flight_, static_cast(1)); - } - void RegisterAvalanching() { - gpr_atm_no_barrier_fetch_add(&avalanches_in_flight_, - static_cast(1)); - } - void CompleteAvalanching(); - - protected: - /// Private constructor of CompletionQueue only visible to friend classes - CompletionQueue(const grpc_completion_queue_attributes& attributes) { - cq_ = g_core_codegen_interface->grpc_completion_queue_create( - g_core_codegen_interface->grpc_completion_queue_factory_lookup( - &attributes), - &attributes, NULL); - InitialAvalanching(); // reserve this for the future shutdown - } - - private: - // Friend synchronous wrappers so that they can access Pluck(), which is - // a semi-private API geared towards the synchronous implementation. - template - friend class ::grpc::ClientReader; - template - friend class ::grpc::ClientWriter; - template - friend class ::grpc::ClientReaderWriter; - template - friend class ::grpc::ServerReader; - template - friend class ::grpc::ServerWriter; - template - friend class ::grpc::internal::ServerReaderWriterBody; - template - friend class RpcMethodHandler; - template - friend class ClientStreamingHandler; - template - friend class ServerStreamingHandler; - template - friend class TemplatedBidiStreamingHandler; - friend class UnknownMethodHandler; - friend class ::grpc::Server; - friend class ::grpc::ServerContext; - template - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, - ClientContext* context, - const InputMessage& request, - OutputMessage* result); - - NextStatus AsyncNextInternal(void** tag, bool* ok, gpr_timespec deadline); - - /// Wraps \a grpc_completion_queue_pluck. - /// \warning Must not be mixed with calls to \a Next. - bool Pluck(CompletionQueueTag* tag) { - auto deadline = - g_core_codegen_interface->gpr_inf_future(GPR_CLOCK_REALTIME); - auto ev = g_core_codegen_interface->grpc_completion_queue_pluck( - cq_, tag, deadline, nullptr); - bool ok = ev.success != 0; - void* ignored = tag; - GPR_CODEGEN_ASSERT(tag->FinalizeResult(&ignored, &ok)); - GPR_CODEGEN_ASSERT(ignored == tag); - // Ignore mutations by FinalizeResult: Pluck returns the C API status - return ev.success != 0; - } - - /// Performs a single polling pluck on \a tag. - /// \warning Must not be mixed with calls to \a Next. - /// - /// TODO: sreek - This calls tag->FinalizeResult() even if the cq_ is already - /// shutdown. This is most likely a bug and if it is a bug, then change this - /// implementation to simple call the other TryPluck function with a zero - /// timeout. i.e: - /// TryPluck(tag, gpr_time_0(GPR_CLOCK_REALTIME)) - void TryPluck(CompletionQueueTag* tag) { - auto deadline = g_core_codegen_interface->gpr_time_0(GPR_CLOCK_REALTIME); - auto ev = g_core_codegen_interface->grpc_completion_queue_pluck( - cq_, tag, deadline, nullptr); - if (ev.type == GRPC_QUEUE_TIMEOUT) return; - bool ok = ev.success != 0; - void* ignored = tag; - // the tag must be swallowed if using TryPluck - GPR_CODEGEN_ASSERT(!tag->FinalizeResult(&ignored, &ok)); - } - - /// Performs a single polling pluck on \a tag. Calls tag->FinalizeResult if - /// the pluck() was successful and returned the tag. - /// - /// This exects tag->FinalizeResult (if called) to return 'false' i.e expects - /// that the tag is internal not something that is returned to the user. - void TryPluck(CompletionQueueTag* tag, gpr_timespec deadline) { - auto ev = g_core_codegen_interface->grpc_completion_queue_pluck( - cq_, tag, deadline, nullptr); - if (ev.type == GRPC_QUEUE_TIMEOUT || ev.type == GRPC_QUEUE_SHUTDOWN) { - return; - } - - bool ok = ev.success != 0; - void* ignored = tag; - GPR_CODEGEN_ASSERT(!tag->FinalizeResult(&ignored, &ok)); - } - - grpc_completion_queue* cq_; // owned - - gpr_atm avalanches_in_flight_; -}; - -/// A specific type of completion queue used by the processing of notifications -/// by servers. Instantiated by \a ServerBuilder. -class ServerCompletionQueue : public CompletionQueue { - public: - bool IsFrequentlyPolled() { return polling_type_ != GRPC_CQ_NON_LISTENING; } - - private: - grpc_cq_polling_type polling_type_; - friend class ServerBuilder; - /// \param is_frequently_polled Informs the GRPC library about whether the - /// server completion queue would be actively polled (by calling Next() or - /// AsyncNext()). By default all server completion queues are assumed to be - /// frequently polled. - ServerCompletionQueue(grpc_cq_polling_type polling_type) - : CompletionQueue(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_NEXT, polling_type}), - polling_type_(polling_type) {} -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H diff --git a/linx64/include/grpc++/impl/codegen/completion_queue_tag.h b/linx64/include/grpc++/impl/codegen/completion_queue_tag.h deleted file mode 100644 index 4d7d3a98..00000000 --- a/linx64/include/grpc++/impl/codegen/completion_queue_tag.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_TAG_H -#define GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_TAG_H - -namespace grpc { - -/// An interface allowing implementors to process and filter event tags. -class CompletionQueueTag { - public: - virtual ~CompletionQueueTag() {} - /// Called prior to returning from Next(), return value is the status of the - /// operation (return status is the default thing to do). If this function - /// returns false, the tag is dropped and not returned from the completion - /// queue - virtual bool FinalizeResult(void** tag, bool* status) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_TAG_H diff --git a/linx64/include/grpc++/impl/codegen/config.h b/linx64/include/grpc++/impl/codegen/config.h deleted file mode 100644 index b5ac9a75..00000000 --- a/linx64/include/grpc++/impl/codegen/config.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_CONFIG_H -#define GRPCXX_IMPL_CODEGEN_CONFIG_H - -#ifndef GRPC_CUSTOM_STRING -#include -#define GRPC_CUSTOM_STRING std::string -#endif - -/// The following macros are deprecated and appear only for users -/// with PB files generated using gRPC 1.0.x plugins. They should -/// not be used in new code -#define GRPC_OVERRIDE override // deprecated -#define GRPC_FINAL final // deprecated - -namespace grpc { - -typedef GRPC_CUSTOM_STRING string; - -using std::to_string; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CONFIG_H diff --git a/linx64/include/grpc++/impl/codegen/config_protobuf.h b/linx64/include/grpc++/impl/codegen/config_protobuf.h deleted file mode 100644 index c5e5bdf0..00000000 --- a/linx64/include/grpc++/impl/codegen/config_protobuf.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CONFIG_PROTOBUF_H -#define GRPCXX_IMPL_CODEGEN_CONFIG_PROTOBUF_H - -#ifndef GRPC_CUSTOM_PROTOBUF_INT64 -#include -#define GRPC_CUSTOM_PROTOBUF_INT64 ::google::protobuf::int64 -#endif - -#ifndef GRPC_CUSTOM_MESSAGE -#ifdef GRPC_USE_PROTO_LITE -#include -#define GRPC_CUSTOM_MESSAGE ::google::protobuf::MessageLite -#else -#include -#define GRPC_CUSTOM_MESSAGE ::google::protobuf::Message -#endif -#endif - -#ifndef GRPC_CUSTOM_DESCRIPTOR -#include -#include -#define GRPC_CUSTOM_DESCRIPTOR ::google::protobuf::Descriptor -#define GRPC_CUSTOM_DESCRIPTORPOOL ::google::protobuf::DescriptorPool -#define GRPC_CUSTOM_FIELDDESCRIPTOR ::google::protobuf::FieldDescriptor -#define GRPC_CUSTOM_FILEDESCRIPTOR ::google::protobuf::FileDescriptor -#define GRPC_CUSTOM_FILEDESCRIPTORPROTO ::google::protobuf::FileDescriptorProto -#define GRPC_CUSTOM_METHODDESCRIPTOR ::google::protobuf::MethodDescriptor -#define GRPC_CUSTOM_SERVICEDESCRIPTOR ::google::protobuf::ServiceDescriptor -#define GRPC_CUSTOM_SOURCELOCATION ::google::protobuf::SourceLocation -#endif - -#ifndef GRPC_CUSTOM_DESCRIPTORDATABASE -#include -#define GRPC_CUSTOM_DESCRIPTORDATABASE ::google::protobuf::DescriptorDatabase -#define GRPC_CUSTOM_SIMPLEDESCRIPTORDATABASE \ - ::google::protobuf::SimpleDescriptorDatabase -#endif - -#ifndef GRPC_CUSTOM_ZEROCOPYOUTPUTSTREAM -#include -#include -#define GRPC_CUSTOM_ZEROCOPYOUTPUTSTREAM \ - ::google::protobuf::io::ZeroCopyOutputStream -#define GRPC_CUSTOM_ZEROCOPYINPUTSTREAM \ - ::google::protobuf::io::ZeroCopyInputStream -#define GRPC_CUSTOM_CODEDINPUTSTREAM ::google::protobuf::io::CodedInputStream -#endif - -namespace grpc { -namespace protobuf { - -typedef GRPC_CUSTOM_MESSAGE Message; -typedef GRPC_CUSTOM_PROTOBUF_INT64 int64; - -typedef GRPC_CUSTOM_DESCRIPTOR Descriptor; -typedef GRPC_CUSTOM_DESCRIPTORPOOL DescriptorPool; -typedef GRPC_CUSTOM_DESCRIPTORDATABASE DescriptorDatabase; -typedef GRPC_CUSTOM_FIELDDESCRIPTOR FieldDescriptor; -typedef GRPC_CUSTOM_FILEDESCRIPTOR FileDescriptor; -typedef GRPC_CUSTOM_FILEDESCRIPTORPROTO FileDescriptorProto; -typedef GRPC_CUSTOM_METHODDESCRIPTOR MethodDescriptor; -typedef GRPC_CUSTOM_SERVICEDESCRIPTOR ServiceDescriptor; -typedef GRPC_CUSTOM_SIMPLEDESCRIPTORDATABASE SimpleDescriptorDatabase; -typedef GRPC_CUSTOM_SOURCELOCATION SourceLocation; - -namespace io { -typedef GRPC_CUSTOM_ZEROCOPYOUTPUTSTREAM ZeroCopyOutputStream; -typedef GRPC_CUSTOM_ZEROCOPYINPUTSTREAM ZeroCopyInputStream; -typedef GRPC_CUSTOM_CODEDINPUTSTREAM CodedInputStream; -} // namespace io - -} // namespace protobuf -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CONFIG_PROTOBUF_H diff --git a/linx64/include/grpc++/impl/codegen/core_codegen.h b/linx64/include/grpc++/impl/codegen/core_codegen.h deleted file mode 100644 index 2b15a018..00000000 --- a/linx64/include/grpc++/impl/codegen/core_codegen.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_H -#define GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_H - -// This file should be compiled as part of grpc++. - -#include -#include -#include -#include - -namespace grpc { - -/// Implementation of the core codegen interface. -class CoreCodegen final : public CoreCodegenInterface { - private: - virtual const grpc_completion_queue_factory* - grpc_completion_queue_factory_lookup( - const grpc_completion_queue_attributes* attributes) override; - virtual grpc_completion_queue* grpc_completion_queue_create( - const grpc_completion_queue_factory* factory, - const grpc_completion_queue_attributes* attributes, - void* reserved) override; - grpc_completion_queue* grpc_completion_queue_create_for_next( - void* reserved) override; - grpc_completion_queue* grpc_completion_queue_create_for_pluck( - void* reserved) override; - void grpc_completion_queue_destroy(grpc_completion_queue* cq) override; - grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, void* tag, - gpr_timespec deadline, - void* reserved) override; - - void* gpr_malloc(size_t size) override; - void gpr_free(void* p) override; - - void gpr_mu_init(gpr_mu* mu) override; - void gpr_mu_destroy(gpr_mu* mu) override; - void gpr_mu_lock(gpr_mu* mu) override; - void gpr_mu_unlock(gpr_mu* mu) override; - void gpr_cv_init(gpr_cv* cv) override; - void gpr_cv_destroy(gpr_cv* cv) override; - int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline) override; - void gpr_cv_signal(gpr_cv* cv) override; - void gpr_cv_broadcast(gpr_cv* cv) override; - - grpc_call_error grpc_call_cancel_with_status(grpc_call* call, - grpc_status_code status, - const char* description, - void* reserved) override; - void grpc_call_ref(grpc_call* call) override; - void grpc_call_unref(grpc_call* call) override; - virtual void* grpc_call_arena_alloc(grpc_call* call, size_t length) override; - - void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) override; - - int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader, - grpc_byte_buffer* buffer) override; - void grpc_byte_buffer_reader_destroy( - grpc_byte_buffer_reader* reader) override; - int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader, - grpc_slice* slice) override; - - grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slice, - size_t nslices) override; - grpc_slice grpc_slice_new_with_user_data(void* p, size_t len, - void (*destroy)(void*), - void* user_data) override; - grpc_slice grpc_empty_slice() override; - grpc_slice grpc_slice_malloc(size_t length) override; - void grpc_slice_unref(grpc_slice slice) override; - grpc_slice grpc_slice_ref(grpc_slice slice) override; - grpc_slice grpc_slice_split_tail(grpc_slice* s, size_t split) override; - grpc_slice grpc_slice_split_head(grpc_slice* s, size_t split) override; - void grpc_slice_buffer_add(grpc_slice_buffer* sb, grpc_slice slice) override; - void grpc_slice_buffer_pop(grpc_slice_buffer* sb) override; - grpc_slice grpc_slice_from_static_buffer(const void* buffer, - size_t length) override; - grpc_slice grpc_slice_from_copied_buffer(const void* buffer, - size_t length) override; - void grpc_metadata_array_init(grpc_metadata_array* array) override; - void grpc_metadata_array_destroy(grpc_metadata_array* array) override; - - gpr_timespec gpr_inf_future(gpr_clock_type type) override; - gpr_timespec gpr_time_0(gpr_clock_type type) override; - - virtual const Status& ok() override; - virtual const Status& cancelled() override; - - void assert_fail(const char* failed_assertion, const char* file, - int line) override; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_H diff --git a/linx64/include/grpc++/impl/codegen/core_codegen_interface.h b/linx64/include/grpc++/impl/codegen/core_codegen_interface.h deleted file mode 100644 index b4c771ac..00000000 --- a/linx64/include/grpc++/impl/codegen/core_codegen_interface.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_INTERFACE_H -#define GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_INTERFACE_H - -#include -#include -#include -#include -#include - -extern "C" { -struct grpc_byte_buffer; -} - -namespace grpc { - -/// Interface between the codegen library and the minimal subset of core -/// features required by the generated code. -/// -/// All undocumented methods are simply forwarding the call to their namesakes. -/// Please refer to their corresponding documentation for details. -/// -/// \warning This interface should be considered internal and private. -class CoreCodegenInterface { - public: - /// Upon a failed assertion, log the error. - virtual void assert_fail(const char* failed_assertion, const char* file, - int line) = 0; - - virtual const grpc_completion_queue_factory* - grpc_completion_queue_factory_lookup( - const grpc_completion_queue_attributes* attributes) = 0; - virtual grpc_completion_queue* grpc_completion_queue_create( - const grpc_completion_queue_factory* factory, - const grpc_completion_queue_attributes* attributes, void* reserved) = 0; - virtual grpc_completion_queue* grpc_completion_queue_create_for_next( - void* reserved) = 0; - virtual grpc_completion_queue* grpc_completion_queue_create_for_pluck( - void* reserved) = 0; - virtual void grpc_completion_queue_destroy(grpc_completion_queue* cq) = 0; - virtual grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, - void* tag, - gpr_timespec deadline, - void* reserved) = 0; - - virtual void* gpr_malloc(size_t size) = 0; - virtual void gpr_free(void* p) = 0; - - virtual void gpr_mu_init(gpr_mu* mu) = 0; - virtual void gpr_mu_destroy(gpr_mu* mu) = 0; - virtual void gpr_mu_lock(gpr_mu* mu) = 0; - virtual void gpr_mu_unlock(gpr_mu* mu) = 0; - virtual void gpr_cv_init(gpr_cv* cv) = 0; - virtual void gpr_cv_destroy(gpr_cv* cv) = 0; - virtual int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, - gpr_timespec abs_deadline) = 0; - virtual void gpr_cv_signal(gpr_cv* cv) = 0; - virtual void gpr_cv_broadcast(gpr_cv* cv) = 0; - - virtual void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) = 0; - - virtual int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader, - grpc_byte_buffer* buffer) - GRPC_MUST_USE_RESULT = 0; - virtual void grpc_byte_buffer_reader_destroy( - grpc_byte_buffer_reader* reader) = 0; - virtual int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader, - grpc_slice* slice) = 0; - - virtual grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slice, - size_t nslices) = 0; - virtual grpc_slice grpc_slice_new_with_user_data(void* p, size_t len, - void (*destroy)(void*), - void* user_data) = 0; - virtual grpc_call_error grpc_call_cancel_with_status(grpc_call* call, - grpc_status_code status, - const char* description, - void* reserved) = 0; - virtual void grpc_call_ref(grpc_call* call) = 0; - virtual void grpc_call_unref(grpc_call* call) = 0; - virtual void* grpc_call_arena_alloc(grpc_call* call, size_t length) = 0; - virtual grpc_slice grpc_empty_slice() = 0; - virtual grpc_slice grpc_slice_malloc(size_t length) = 0; - virtual void grpc_slice_unref(grpc_slice slice) = 0; - virtual grpc_slice grpc_slice_ref(grpc_slice slice) = 0; - virtual grpc_slice grpc_slice_split_tail(grpc_slice* s, size_t split) = 0; - virtual grpc_slice grpc_slice_split_head(grpc_slice* s, size_t split) = 0; - virtual void grpc_slice_buffer_add(grpc_slice_buffer* sb, - grpc_slice slice) = 0; - virtual void grpc_slice_buffer_pop(grpc_slice_buffer* sb) = 0; - virtual grpc_slice grpc_slice_from_static_buffer(const void* buffer, - size_t length) = 0; - virtual grpc_slice grpc_slice_from_copied_buffer(const void* buffer, - size_t length) = 0; - - virtual void grpc_metadata_array_init(grpc_metadata_array* array) = 0; - virtual void grpc_metadata_array_destroy(grpc_metadata_array* array) = 0; - - virtual const Status& ok() = 0; - virtual const Status& cancelled() = 0; - - virtual gpr_timespec gpr_inf_future(gpr_clock_type type) = 0; - virtual gpr_timespec gpr_time_0(gpr_clock_type type) = 0; -}; - -extern CoreCodegenInterface* g_core_codegen_interface; - -/// Codegen specific version of \a GPR_ASSERT. -#define GPR_CODEGEN_ASSERT(x) \ - do { \ - if (!(x)) { \ - grpc::g_core_codegen_interface->assert_fail(#x, __FILE__, __LINE__); \ - } \ - } while (0) - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_INTERFACE_H diff --git a/linx64/include/grpc++/impl/codegen/create_auth_context.h b/linx64/include/grpc++/impl/codegen/create_auth_context.h deleted file mode 100644 index afa6302c..00000000 --- a/linx64/include/grpc++/impl/codegen/create_auth_context.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CREATE_AUTH_CONTEXT_H -#define GRPCXX_IMPL_CODEGEN_CREATE_AUTH_CONTEXT_H - -#include - -#include -#include - -namespace grpc { - -std::shared_ptr CreateAuthContext(grpc_call* call); - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CREATE_AUTH_CONTEXT_H diff --git a/linx64/include/grpc++/impl/codegen/grpc_library.h b/linx64/include/grpc++/impl/codegen/grpc_library.h deleted file mode 100644 index 6036ad7e..00000000 --- a/linx64/include/grpc++/impl/codegen/grpc_library.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_GRPC_LIBRARY_H -#define GRPCXX_IMPL_CODEGEN_GRPC_LIBRARY_H - -#include - -namespace grpc { - -class GrpcLibraryInterface { - public: - virtual void init() = 0; - virtual void shutdown() = 0; -}; - -/// Initialized by \a grpc::GrpcLibraryInitializer from -/// -extern GrpcLibraryInterface* g_glip; - -/// Classes that require gRPC to be initialized should inherit from this class. -class GrpcLibraryCodegen { - public: - GrpcLibraryCodegen(bool call_grpc_init = true) : grpc_init_called_(false) { - if (call_grpc_init) { - GPR_CODEGEN_ASSERT(g_glip && - "gRPC library not initialized. See " - "grpc::internal::GrpcLibraryInitializer."); - g_glip->init(); - grpc_init_called_ = true; - } - } - virtual ~GrpcLibraryCodegen() { - if (grpc_init_called_) { - GPR_CODEGEN_ASSERT(g_glip && - "gRPC library not initialized. See " - "grpc::internal::GrpcLibraryInitializer."); - g_glip->shutdown(); - } - } - - private: - bool grpc_init_called_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_GRPC_LIBRARY_H diff --git a/linx64/include/grpc++/impl/codegen/metadata_map.h b/linx64/include/grpc++/impl/codegen/metadata_map.h deleted file mode 100644 index b7398596..00000000 --- a/linx64/include/grpc++/impl/codegen/metadata_map.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -* -* 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 GRPCXX_IMPL_CODEGEN_METADATA_MAP_H -#define GRPCXX_IMPL_CODEGEN_METADATA_MAP_H - -#include - -namespace grpc { - -class MetadataMap { - public: - MetadataMap() { memset(&arr_, 0, sizeof(arr_)); } - - ~MetadataMap() { - g_core_codegen_interface->grpc_metadata_array_destroy(&arr_); - } - - void FillMap() { - for (size_t i = 0; i < arr_.count; i++) { - // TODO(yangg) handle duplicates? - map_.insert(std::pair( - StringRefFromSlice(&arr_.metadata[i].key), - StringRefFromSlice(&arr_.metadata[i].value))); - } - } - - std::multimap *map() { return &map_; } - const std::multimap *map() const { - return &map_; - } - grpc_metadata_array *arr() { return &arr_; } - - private: - grpc_metadata_array arr_; - std::multimap map_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_METADATA_MAP_H diff --git a/linx64/include/grpc++/impl/codegen/method_handler_impl.h b/linx64/include/grpc++/impl/codegen/method_handler_impl.h deleted file mode 100644 index 15e24bdc..00000000 --- a/linx64/include/grpc++/impl/codegen/method_handler_impl.h +++ /dev/null @@ -1,270 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H -#define GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H - -#include -#include -#include - -namespace grpc { - -/// A wrapper class of an application provided rpc method handler. -template -class RpcMethodHandler : public MethodHandler { - public: - RpcMethodHandler(std::function - func, - ServiceType* service) - : func_(func), service_(service) {} - - void RunHandler(const HandlerParameter& param) final { - RequestType req; - Status status = - SerializationTraits::Deserialize(param.request, &req); - ResponseType rsp; - if (status.ok()) { - status = func_(service_, param.server_context, &req, &rsp); - } - - GPR_CODEGEN_ASSERT(!param.server_context->sent_initial_metadata_); - CallOpSet - ops; - ops.SendInitialMetadata(param.server_context->initial_metadata_, - param.server_context->initial_metadata_flags()); - if (param.server_context->compression_level_set()) { - ops.set_compression_level(param.server_context->compression_level()); - } - if (status.ok()) { - status = ops.SendMessage(rsp); - } - ops.ServerSendStatus(param.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); - param.call->cq()->Pluck(&ops); - } - - private: - /// Application provided rpc handler function. - std::function - func_; - // The class the above handler function lives in. - ServiceType* service_; -}; - -/// A wrapper class of an application provided client streaming handler. -template -class ClientStreamingHandler : public MethodHandler { - public: - ClientStreamingHandler( - std::function*, ResponseType*)> - func, - ServiceType* service) - : func_(func), service_(service) {} - - void RunHandler(const HandlerParameter& param) final { - ServerReader reader(param.call, param.server_context); - ResponseType rsp; - Status status = func_(service_, param.server_context, &reader, &rsp); - - GPR_CODEGEN_ASSERT(!param.server_context->sent_initial_metadata_); - CallOpSet - ops; - ops.SendInitialMetadata(param.server_context->initial_metadata_, - param.server_context->initial_metadata_flags()); - if (param.server_context->compression_level_set()) { - ops.set_compression_level(param.server_context->compression_level()); - } - if (status.ok()) { - status = ops.SendMessage(rsp); - } - ops.ServerSendStatus(param.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); - param.call->cq()->Pluck(&ops); - } - - private: - std::function*, - ResponseType*)> - func_; - ServiceType* service_; -}; - -/// A wrapper class of an application provided server streaming handler. -template -class ServerStreamingHandler : public MethodHandler { - public: - ServerStreamingHandler( - std::function*)> - func, - ServiceType* service) - : func_(func), service_(service) {} - - void RunHandler(const HandlerParameter& param) final { - RequestType req; - Status status = - SerializationTraits::Deserialize(param.request, &req); - - if (status.ok()) { - ServerWriter writer(param.call, param.server_context); - status = func_(service_, param.server_context, &req, &writer); - } - - CallOpSet ops; - if (!param.server_context->sent_initial_metadata_) { - ops.SendInitialMetadata(param.server_context->initial_metadata_, - param.server_context->initial_metadata_flags()); - if (param.server_context->compression_level_set()) { - ops.set_compression_level(param.server_context->compression_level()); - } - } - ops.ServerSendStatus(param.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); - if (param.server_context->has_pending_ops_) { - param.call->cq()->Pluck(¶m.server_context->pending_ops_); - } - param.call->cq()->Pluck(&ops); - } - - private: - std::function*)> - func_; - ServiceType* service_; -}; - -/// A wrapper class of an application provided bidi-streaming handler. -/// This also applies to server-streamed implementation of a unary method -/// with the additional requirement that such methods must have done a -/// write for status to be ok -/// Since this is used by more than 1 class, the service is not passed in. -/// Instead, it is expected to be an implicitly-captured argument of func -/// (through bind or something along those lines) -template -class TemplatedBidiStreamingHandler : public MethodHandler { - public: - TemplatedBidiStreamingHandler( - std::function func) - : func_(func), write_needed_(WriteNeeded) {} - - void RunHandler(const HandlerParameter& param) final { - Streamer stream(param.call, param.server_context); - Status status = func_(param.server_context, &stream); - - CallOpSet ops; - if (!param.server_context->sent_initial_metadata_) { - ops.SendInitialMetadata(param.server_context->initial_metadata_, - param.server_context->initial_metadata_flags()); - if (param.server_context->compression_level_set()) { - ops.set_compression_level(param.server_context->compression_level()); - } - if (write_needed_ && status.ok()) { - // If we needed a write but never did one, we need to mark the - // status as a fail - status = Status(StatusCode::INTERNAL, - "Service did not provide response message"); - } - } - ops.ServerSendStatus(param.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); - if (param.server_context->has_pending_ops_) { - param.call->cq()->Pluck(¶m.server_context->pending_ops_); - } - param.call->cq()->Pluck(&ops); - } - - private: - std::function func_; - const bool write_needed_; -}; - -template -class BidiStreamingHandler - : public TemplatedBidiStreamingHandler< - ServerReaderWriter, false> { - public: - BidiStreamingHandler( - std::function*)> - func, - ServiceType* service) - : TemplatedBidiStreamingHandler< - ServerReaderWriter, false>(std::bind( - func, service, std::placeholders::_1, std::placeholders::_2)) {} -}; - -template -class StreamedUnaryHandler - : public TemplatedBidiStreamingHandler< - ServerUnaryStreamer, true> { - public: - explicit StreamedUnaryHandler( - std::function*)> - func) - : TemplatedBidiStreamingHandler< - ServerUnaryStreamer, true>(func) {} -}; - -template -class SplitServerStreamingHandler - : public TemplatedBidiStreamingHandler< - ServerSplitStreamer, false> { - public: - explicit SplitServerStreamingHandler( - std::function*)> - func) - : TemplatedBidiStreamingHandler< - ServerSplitStreamer, false>(func) {} -}; - -/// Handle unknown method by returning UNIMPLEMENTED error. -class UnknownMethodHandler : public MethodHandler { - public: - template - static void FillOps(ServerContext* context, T* ops) { - Status status(StatusCode::UNIMPLEMENTED, ""); - if (!context->sent_initial_metadata_) { - ops->SendInitialMetadata(context->initial_metadata_, - context->initial_metadata_flags()); - if (context->compression_level_set()) { - ops->set_compression_level(context->compression_level()); - } - context->sent_initial_metadata_ = true; - } - ops->ServerSendStatus(context->trailing_metadata_, status); - } - - void RunHandler(const HandlerParameter& param) final { - CallOpSet ops; - FillOps(param.server_context, &ops); - param.call->PerformOps(&ops); - param.call->cq()->Pluck(&ops); - } -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H diff --git a/linx64/include/grpc++/impl/codegen/proto_utils.h b/linx64/include/grpc++/impl/codegen/proto_utils.h deleted file mode 100644 index 67e8f71a..00000000 --- a/linx64/include/grpc++/impl/codegen/proto_utils.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H -#define GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H - -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace grpc { - -extern CoreCodegenInterface* g_core_codegen_interface; - -namespace internal { - -class GrpcBufferWriterPeer; - -const int kGrpcBufferWriterMaxBufferLength = 1024 * 1024; - -class GrpcBufferWriter final - : public ::grpc::protobuf::io::ZeroCopyOutputStream { - public: - explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size) - : block_size_(block_size), byte_count_(0), have_backup_(false) { - *bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(NULL, 0); - slice_buffer_ = &(*bp)->data.raw.slice_buffer; - } - - ~GrpcBufferWriter() override { - if (have_backup_) { - g_core_codegen_interface->grpc_slice_unref(backup_slice_); - } - } - - bool Next(void** data, int* size) override { - if (have_backup_) { - slice_ = backup_slice_; - have_backup_ = false; - } else { - slice_ = g_core_codegen_interface->grpc_slice_malloc(block_size_); - } - *data = GRPC_SLICE_START_PTR(slice_); - // On win x64, int is only 32bit - GPR_CODEGEN_ASSERT(GRPC_SLICE_LENGTH(slice_) <= INT_MAX); - byte_count_ += * size = (int)GRPC_SLICE_LENGTH(slice_); - g_core_codegen_interface->grpc_slice_buffer_add(slice_buffer_, slice_); - return true; - } - - void BackUp(int count) override { - g_core_codegen_interface->grpc_slice_buffer_pop(slice_buffer_); - if (count == block_size_) { - backup_slice_ = slice_; - } else { - backup_slice_ = g_core_codegen_interface->grpc_slice_split_tail( - &slice_, GRPC_SLICE_LENGTH(slice_) - count); - g_core_codegen_interface->grpc_slice_buffer_add(slice_buffer_, slice_); - } - // It's dangerous to keep an inlined grpc_slice as the backup slice, since - // on a following Next() call, a reference will be returned to this slice - // via GRPC_SLICE_START_PTR, which will not be an adddress held by - // slice_buffer_. - have_backup_ = backup_slice_.refcount != NULL; - byte_count_ -= count; - } - - grpc::protobuf::int64 ByteCount() const override { return byte_count_; } - - private: - friend class GrpcBufferWriterPeer; - const int block_size_; - int64_t byte_count_; - grpc_slice_buffer* slice_buffer_; - bool have_backup_; - grpc_slice backup_slice_; - grpc_slice slice_; -}; - -class GrpcBufferReader final - : public ::grpc::protobuf::io::ZeroCopyInputStream { - public: - explicit GrpcBufferReader(grpc_byte_buffer* buffer) - : byte_count_(0), backup_count_(0), status_() { - if (!g_core_codegen_interface->grpc_byte_buffer_reader_init(&reader_, - buffer)) { - status_ = Status(StatusCode::INTERNAL, - "Couldn't initialize byte buffer reader"); - } - } - ~GrpcBufferReader() override { - g_core_codegen_interface->grpc_byte_buffer_reader_destroy(&reader_); - } - - bool Next(const void** data, int* size) override { - if (!status_.ok()) { - return false; - } - if (backup_count_ > 0) { - *data = GRPC_SLICE_START_PTR(slice_) + GRPC_SLICE_LENGTH(slice_) - - backup_count_; - GPR_CODEGEN_ASSERT(backup_count_ <= INT_MAX); - *size = (int)backup_count_; - backup_count_ = 0; - return true; - } - if (!g_core_codegen_interface->grpc_byte_buffer_reader_next(&reader_, - &slice_)) { - return false; - } - g_core_codegen_interface->grpc_slice_unref(slice_); - *data = GRPC_SLICE_START_PTR(slice_); - // On win x64, int is only 32bit - GPR_CODEGEN_ASSERT(GRPC_SLICE_LENGTH(slice_) <= INT_MAX); - byte_count_ += * size = (int)GRPC_SLICE_LENGTH(slice_); - return true; - } - - Status status() const { return status_; } - - void BackUp(int count) override { backup_count_ = count; } - - bool Skip(int count) override { - const void* data; - int size; - while (Next(&data, &size)) { - if (size >= count) { - BackUp(size - count); - return true; - } - // size < count; - count -= size; - } - // error or we have too large count; - return false; - } - - grpc::protobuf::int64 ByteCount() const override { - return byte_count_ - backup_count_; - } - - private: - int64_t byte_count_; - int64_t backup_count_; - grpc_byte_buffer_reader reader_; - grpc_slice slice_; - Status status_; -}; - -} // namespace internal - -template -class SerializationTraits::value>::type> { - public: - static Status Serialize(const grpc::protobuf::Message& msg, - grpc_byte_buffer** bp, bool* own_buffer) { - *own_buffer = true; - int byte_size = msg.ByteSize(); - if (byte_size <= internal::kGrpcBufferWriterMaxBufferLength) { - grpc_slice slice = g_core_codegen_interface->grpc_slice_malloc(byte_size); - GPR_CODEGEN_ASSERT( - GRPC_SLICE_END_PTR(slice) == - msg.SerializeWithCachedSizesToArray(GRPC_SLICE_START_PTR(slice))); - *bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(&slice, 1); - g_core_codegen_interface->grpc_slice_unref(slice); - return g_core_codegen_interface->ok(); - } else { - internal::GrpcBufferWriter writer( - bp, internal::kGrpcBufferWriterMaxBufferLength); - return msg.SerializeToZeroCopyStream(&writer) - ? g_core_codegen_interface->ok() - : Status(StatusCode::INTERNAL, "Failed to serialize message"); - } - } - - static Status Deserialize(grpc_byte_buffer* buffer, - grpc::protobuf::Message* msg) { - if (buffer == nullptr) { - return Status(StatusCode::INTERNAL, "No payload"); - } - Status result = g_core_codegen_interface->ok(); - { - internal::GrpcBufferReader reader(buffer); - if (!reader.status().ok()) { - return reader.status(); - } - ::grpc::protobuf::io::CodedInputStream decoder(&reader); - decoder.SetTotalBytesLimit(INT_MAX, INT_MAX); - if (!msg->ParseFromCodedStream(&decoder)) { - result = Status(StatusCode::INTERNAL, msg->InitializationErrorString()); - } - if (!decoder.ConsumedEntireMessage()) { - result = Status(StatusCode::INTERNAL, "Did not read entire message"); - } - } - g_core_codegen_interface->grpc_byte_buffer_destroy(buffer); - return result; - } -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H diff --git a/linx64/include/grpc++/impl/codegen/rpc_method.h b/linx64/include/grpc++/impl/codegen/rpc_method.h deleted file mode 100644 index ac13ac56..00000000 --- a/linx64/include/grpc++/impl/codegen/rpc_method.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_RPC_METHOD_H -#define GRPCXX_IMPL_CODEGEN_RPC_METHOD_H - -#include - -#include - -namespace grpc { - -/// Descriptor of an RPC method -class RpcMethod { - public: - enum RpcType { - NORMAL_RPC = 0, - CLIENT_STREAMING, // request streaming - SERVER_STREAMING, // response streaming - BIDI_STREAMING - }; - - RpcMethod(const char* name, RpcType type) - : name_(name), method_type_(type), channel_tag_(NULL) {} - - RpcMethod(const char* name, RpcType type, - const std::shared_ptr& channel) - : name_(name), - method_type_(type), - channel_tag_(channel->RegisterMethod(name)) {} - - const char* name() const { return name_; } - RpcType method_type() const { return method_type_; } - void SetMethodType(RpcType type) { method_type_ = type; } - void* channel_tag() const { return channel_tag_; } - - private: - const char* const name_; - RpcType method_type_; - void* const channel_tag_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_RPC_METHOD_H diff --git a/linx64/include/grpc++/impl/codegen/rpc_service_method.h b/linx64/include/grpc++/impl/codegen/rpc_service_method.h deleted file mode 100644 index 71657741..00000000 --- a/linx64/include/grpc++/impl/codegen/rpc_service_method.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_RPC_SERVICE_METHOD_H -#define GRPCXX_IMPL_CODEGEN_RPC_SERVICE_METHOD_H - -#include -#include -#include -#include -#include - -#include -#include -#include - -extern "C" { -struct grpc_byte_buffer; -} - -namespace grpc { -class ServerContext; -class StreamContextInterface; - -/// Base class for running an RPC handler. -class MethodHandler { - public: - virtual ~MethodHandler() {} - struct HandlerParameter { - HandlerParameter(Call* c, ServerContext* context, grpc_byte_buffer* req) - : call(c), server_context(context), request(req) {} - Call* call; - ServerContext* server_context; - // Handler required to grpc_byte_buffer_destroy this - grpc_byte_buffer* request; - }; - virtual void RunHandler(const HandlerParameter& param) = 0; -}; - -/// Server side rpc method class -class RpcServiceMethod : public RpcMethod { - public: - /// Takes ownership of the handler - RpcServiceMethod(const char* name, RpcMethod::RpcType type, - MethodHandler* handler) - : RpcMethod(name, type), server_tag_(nullptr), handler_(handler) {} - - void set_server_tag(void* tag) { server_tag_ = tag; } - void* server_tag() const { return server_tag_; } - /// if MethodHandler is nullptr, then this is an async method - MethodHandler* handler() const { return handler_.get(); } - void ResetHandler() { handler_.reset(); } - void SetHandler(MethodHandler* handler) { handler_.reset(handler); } - - private: - void* server_tag_; - std::unique_ptr handler_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_RPC_SERVICE_METHOD_H diff --git a/linx64/include/grpc++/impl/codegen/security/auth_context.h b/linx64/include/grpc++/impl/codegen/security/auth_context.h deleted file mode 100644 index 337da913..00000000 --- a/linx64/include/grpc++/impl/codegen/security/auth_context.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SECURITY_AUTH_CONTEXT_H -#define GRPCXX_IMPL_CODEGEN_SECURITY_AUTH_CONTEXT_H - -#include -#include - -#include -#include - -struct grpc_auth_context; -struct grpc_auth_property; -struct grpc_auth_property_iterator; - -namespace grpc { -class SecureAuthContext; - -typedef std::pair AuthProperty; - -class AuthPropertyIterator - : public std::iterator { - public: - ~AuthPropertyIterator(); - AuthPropertyIterator& operator++(); - AuthPropertyIterator operator++(int); - bool operator==(const AuthPropertyIterator& rhs) const; - bool operator!=(const AuthPropertyIterator& rhs) const; - const AuthProperty operator*(); - - protected: - AuthPropertyIterator(); - AuthPropertyIterator(const grpc_auth_property* property, - const grpc_auth_property_iterator* iter); - - private: - friend class SecureAuthContext; - const grpc_auth_property* property_; - // The following items form a grpc_auth_property_iterator. - const grpc_auth_context* ctx_; - size_t index_; - const char* name_; -}; - -/// Class encapsulating the Authentication Information. -/// -/// It includes the secure identity of the peer, the type of secure transport -/// used as well as any other properties required by the authorization layer. -class AuthContext { - public: - virtual ~AuthContext() {} - - /// Returns true if the peer is authenticated. - virtual bool IsPeerAuthenticated() const = 0; - - /// A peer identity. - /// - /// It is, in general, comprised of one or more properties (in which case they - /// have the same name). - virtual std::vector GetPeerIdentity() const = 0; - virtual grpc::string GetPeerIdentityPropertyName() const = 0; - - /// Returns all the property values with the given name. - virtual std::vector FindPropertyValues( - const grpc::string& name) const = 0; - - /// Iteration over all the properties. - virtual AuthPropertyIterator begin() const = 0; - virtual AuthPropertyIterator end() const = 0; - - /// Mutation functions: should only be used by an AuthMetadataProcessor. - virtual void AddProperty(const grpc::string& key, - const grpc::string_ref& value) = 0; - virtual bool SetPeerIdentityPropertyName(const grpc::string& name) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SECURITY_AUTH_CONTEXT_H diff --git a/linx64/include/grpc++/impl/codegen/serialization_traits.h b/linx64/include/grpc++/impl/codegen/serialization_traits.h deleted file mode 100644 index b72d4741..00000000 --- a/linx64/include/grpc++/impl/codegen/serialization_traits.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SERIALIZATION_TRAITS_H -#define GRPCXX_IMPL_CODEGEN_SERIALIZATION_TRAITS_H - -namespace grpc { - -/// Defines how to serialize and deserialize some type. -/// -/// Used for hooking different message serialization API's into GRPC. -/// Each SerializationTraits implementation must provide the following -/// functions: -/// static Status Serialize(const Message& msg, -/// grpc_byte_buffer** buffer, -/// bool* own_buffer); -/// static Status Deserialize(grpc_byte_buffer* buffer, -/// Message* msg, -/// int max_receive_message_size); -/// -/// Serialize is required to convert message to a grpc_byte_buffer, and -/// to store a pointer to that byte buffer at *buffer. *own_buffer should -/// be set to true if the caller owns said byte buffer, or false if -/// ownership is retained elsewhere. -/// -/// Deserialize is required to convert buffer into the message stored at -/// msg. max_receive_message_size is passed in as a bound on the maximum -/// number of message bytes Deserialize should accept. -/// -/// Both functions return a Status, allowing them to explain what went -/// wrong if required. -template -class SerializationTraits; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SERIALIZATION_TRAITS_H diff --git a/linx64/include/grpc++/impl/codegen/server_context.h b/linx64/include/grpc++/impl/codegen/server_context.h deleted file mode 100644 index b5e37fd1..00000000 --- a/linx64/include/grpc++/impl/codegen/server_context.h +++ /dev/null @@ -1,299 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SERVER_CONTEXT_H -#define GRPCXX_IMPL_CODEGEN_SERVER_CONTEXT_H - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -struct grpc_metadata; -struct grpc_call; -struct census_context; - -namespace grpc { -class ClientContext; -template -class ServerAsyncReader; -template -class ServerAsyncWriter; -template -class ServerAsyncResponseWriter; -template -class ServerAsyncReaderWriter; -template -class ServerReader; -template -class ServerWriter; -namespace internal { -template -class ServerReaderWriterBody; -} -template -class RpcMethodHandler; -template -class ClientStreamingHandler; -template -class ServerStreamingHandler; -template -class BidiStreamingHandler; -class UnknownMethodHandler; - -class Call; -class CallOpBuffer; -class CompletionQueue; -class Server; -class ServerInterface; - -namespace testing { -class InteropServerContextInspector; -class ServerContextTestSpouse; -} // namespace testing - -/// A ServerContext allows the person implementing a service handler to: -/// -/// - Add custom initial and trailing metadata key-value pairs that will -/// propagated to the client side. -/// - Control call settings such as compression and authentication. -/// - Access metadata coming from the client. -/// - Get performance metrics (ie, census). -/// -/// Context settings are only relevant to the call handler they are supplied to, -/// that is to say, they aren't sticky across multiple calls. Some of these -/// settings, such as the compression options, can be made persistant at server -/// construction time by specifying the approriate \a ChannelArguments -/// to a \a grpc::ServerBuilder, via \a ServerBuilder::AddChannelArgument. -/// -/// \warning ServerContext instances should \em not be reused across rpcs. -class ServerContext { - public: - ServerContext(); // for async calls - ~ServerContext(); - - /// Return the deadline for the server call. - std::chrono::system_clock::time_point deadline() const { - return Timespec2Timepoint(deadline_); - } - - /// Return a \a gpr_timespec representation of the server call's deadline. - gpr_timespec raw_deadline() const { return deadline_; } - - /// Add the (\a meta_key, \a meta_value) pair to the initial metadata - /// associated with a server call. These are made available at the client side - /// by the \a grpc::ClientContext::GetServerInitialMetadata() method. - /// - /// \warning This method should only be called before sending initial metadata - /// to the client (which can happen explicitly, or implicitly when sending a - /// a response message or status to the client). - /// - /// \param meta_key The metadata key. If \a meta_value is binary data, it must - /// end in "-bin". - /// \param meta_value The metadata value. If its value is binary, the key name - /// must end in "-bin". - void AddInitialMetadata(const grpc::string& key, const grpc::string& value); - - /// Add the (\a meta_key, \a meta_value) pair to the initial metadata - /// associated with a server call. These are made available at the client - /// side by the \a grpc::ClientContext::GetServerTrailingMetadata() method. - /// - /// \warning This method should only be called before sending trailing - /// metadata to the client (which happens when the call is finished and a - /// status is sent to the client). - /// - /// \param meta_key The metadata key. If \a meta_value is binary data, - /// it must end in "-bin". - /// \param meta_value The metadata value. If its value is binary, the key name - /// must end in "-bin". - void AddTrailingMetadata(const grpc::string& key, const grpc::string& value); - - /// IsCancelled is always safe to call when using sync API. - /// When using async API, it is only safe to call IsCancelled after - /// the AsyncNotifyWhenDone tag has been delivered. - bool IsCancelled() const; - - /// Cancel the Call from the server. This is a best-effort API and - /// depending on when it is called, the RPC may still appear successful to - /// the client. - /// For example, if TryCancel() is called on a separate thread, it might race - /// with the server handler which might return success to the client before - /// TryCancel() was even started by the thread. - /// - /// It is the caller's responsibility to prevent such races and ensure that if - /// TryCancel() is called, the serverhandler must return Status::CANCELLED. - /// The only exception is that if the serverhandler is already returning an - /// error status code, it is ok to not return Status::CANCELLED even if - /// TryCancel() was called. - void TryCancel() const; - - /// Return a collection of initial metadata key-value pairs sent from the - /// client. Note that keys may happen more than - /// once (ie, a \a std::multimap is returned). - /// - /// It is safe to use this method after initial metadata has been received, - /// Calls always begin with the client sending initial metadata, so this is - /// safe to access as soon as the call has begun on the server side. - /// - /// \return A multimap of initial metadata key-value pairs from the server. - const std::multimap& client_metadata() - const { - return *client_metadata_.map(); - } - - /// Return the compression algorithm to be used by the server call. - grpc_compression_level compression_level() const { - return compression_level_; - } - - /// Set \a algorithm to be the compression algorithm used for the server call. - /// - /// \param algorithm The compression algorithm used for the server call. - void set_compression_level(grpc_compression_level level) { - compression_level_set_ = true; - compression_level_ = level; - } - - /// Return a bool indicating whether the compression level for this call - /// has been set (either implicitly or through a previous call to - /// \a set_compression_level. - bool compression_level_set() const { return compression_level_set_; } - - /// Return the compression algorithm to be used by the server call. - grpc_compression_algorithm compression_algorithm() const { - return compression_algorithm_; - } - /// Set \a algorithm to be the compression algorithm used for the server call. - /// - /// \param algorithm The compression algorithm used for the server call. - void set_compression_algorithm(grpc_compression_algorithm algorithm); - - /// Set the load reporting costs in \a cost_data for the call. - void SetLoadReportingCosts(const std::vector& cost_data); - - /// Return the authentication context for this server call. - /// - /// \see grpc::AuthContext. - std::shared_ptr auth_context() const { - if (auth_context_.get() == nullptr) { - auth_context_ = CreateAuthContext(call_); - } - return auth_context_; - } - - /// Return the peer uri in a string. - /// WARNING: this value is never authenticated or subject to any security - /// related code. It must not be used for any authentication related - /// functionality. Instead, use auth_context. - grpc::string peer() const; - - /// Get the census context associated with this server call. - const struct census_context* census_context() const; - - /// Async only. Has to be called before the rpc starts. - /// Returns the tag in completion queue when the rpc finishes. - /// IsCancelled() can then be called to check whether the rpc was cancelled. - void AsyncNotifyWhenDone(void* tag) { - has_notify_when_done_tag_ = true; - async_notify_when_done_tag_ = tag; - } - - /// Should be used for framework-level extensions only. - /// Applications never need to call this method. - grpc_call* c_call() { return call_; } - - private: - friend class ::grpc::testing::InteropServerContextInspector; - friend class ::grpc::testing::ServerContextTestSpouse; - friend class ::grpc::ServerInterface; - friend class ::grpc::Server; - template - friend class ::grpc::ServerAsyncReader; - template - friend class ::grpc::ServerAsyncWriter; - template - friend class ::grpc::ServerAsyncResponseWriter; - template - friend class ::grpc::ServerAsyncReaderWriter; - template - friend class ::grpc::ServerReader; - template - friend class ::grpc::ServerWriter; - template - friend class ::grpc::internal::ServerReaderWriterBody; - template - friend class RpcMethodHandler; - template - friend class ClientStreamingHandler; - template - friend class ServerStreamingHandler; - template - friend class TemplatedBidiStreamingHandler; - friend class UnknownMethodHandler; - friend class ::grpc::ClientContext; - - /// Prevent copying. - ServerContext(const ServerContext&); - ServerContext& operator=(const ServerContext&); - - class CompletionOp; - - void BeginCompletionOp(Call* call); - /// Return the tag queued by BeginCompletionOp() - CompletionQueueTag* GetCompletionOpTag(); - - ServerContext(gpr_timespec deadline, grpc_metadata_array* arr); - - void set_call(grpc_call* call) { call_ = call; } - - uint32_t initial_metadata_flags() const { return 0; } - - CompletionOp* completion_op_; - bool has_notify_when_done_tag_; - void* async_notify_when_done_tag_; - - gpr_timespec deadline_; - grpc_call* call_; - CompletionQueue* cq_; - bool sent_initial_metadata_; - mutable std::shared_ptr auth_context_; - MetadataMap client_metadata_; - std::multimap initial_metadata_; - std::multimap trailing_metadata_; - - bool compression_level_set_; - grpc_compression_level compression_level_; - grpc_compression_algorithm compression_algorithm_; - - CallOpSet pending_ops_; - bool has_pending_ops_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SERVER_CONTEXT_H diff --git a/linx64/include/grpc++/impl/codegen/server_interface.h b/linx64/include/grpc++/impl/codegen/server_interface.h deleted file mode 100644 index 55937f19..00000000 --- a/linx64/include/grpc++/impl/codegen/server_interface.h +++ /dev/null @@ -1,270 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SERVER_INTERFACE_H -#define GRPCXX_IMPL_CODEGEN_SERVER_INTERFACE_H - -#include -#include -#include -#include -#include - -namespace grpc { - -class AsyncGenericService; -class Channel; -class GenericServerContext; -class RpcService; -class ServerAsyncStreamingInterface; -class ServerCompletionQueue; -class ServerContext; -class ServerCredentials; -class Service; -class ThreadPoolInterface; - -extern CoreCodegenInterface* g_core_codegen_interface; - -/// Models a gRPC server. -/// -/// Servers are configured and started via \a grpc::ServerBuilder. -class ServerInterface : public CallHook { - public: - virtual ~ServerInterface() {} - - /// Shutdown the server, blocking until all rpc processing finishes. - /// Forcefully terminate pending calls after \a deadline expires. - /// - /// All completion queue associated with the server (for example, for async - /// serving) must be shutdown *after* this method has returned: - /// See \a ServerBuilder::AddCompletionQueue for details. - /// - /// \param deadline How long to wait until pending rpcs are forcefully - /// terminated. - template - void Shutdown(const T& deadline) { - ShutdownInternal(TimePoint(deadline).raw_time()); - } - - /// Shutdown the server, waiting for all rpc processing to finish. - /// - /// All completion queue associated with the server (for example, for async - /// serving) must be shutdown *after* this method has returned: - /// See \a ServerBuilder::AddCompletionQueue for details. - void Shutdown() { - ShutdownInternal( - g_core_codegen_interface->gpr_inf_future(GPR_CLOCK_MONOTONIC)); - } - - /// Block waiting for all work to complete. - /// - /// \warning The server must be either shutting down or some other thread must - /// call \a Shutdown for this function to ever return. - virtual void Wait() = 0; - - protected: - friend class Service; - - /// Register a service. This call does not take ownership of the service. - /// The service must exist for the lifetime of the Server instance. - virtual bool RegisterService(const grpc::string* host, Service* service) = 0; - - /// Register a generic service. This call does not take ownership of the - /// service. The service must exist for the lifetime of the Server instance. - virtual void RegisterAsyncGenericService(AsyncGenericService* service) = 0; - - /// Tries to bind \a server to the given \a addr. - /// - /// It can be invoked multiple times. - /// - /// \param addr The address to try to bind to the server (eg, localhost:1234, - /// 192.168.1.1:31416, [::1]:27182, etc.). - /// \params creds The credentials associated with the server. - /// - /// \return bound port number on sucess, 0 on failure. - /// - /// \warning It's an error to call this method on an already started server. - virtual int AddListeningPort(const grpc::string& addr, - ServerCredentials* creds) = 0; - - /// Start the server. - /// - /// \param cqs Completion queues for handling asynchronous services. The - /// caller is required to keep all completion queues live until the server is - /// destroyed. - /// \param num_cqs How many completion queues does \a cqs hold. - virtual void Start(ServerCompletionQueue** cqs, size_t num_cqs) = 0; - - virtual void ShutdownInternal(gpr_timespec deadline) = 0; - - virtual int max_receive_message_size() const = 0; - - virtual grpc_server* server() = 0; - - virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0; - - class BaseAsyncRequest : public CompletionQueueTag { - public: - BaseAsyncRequest(ServerInterface* server, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, void* tag, - bool delete_on_finalize); - virtual ~BaseAsyncRequest(); - - bool FinalizeResult(void** tag, bool* status) override; - - protected: - ServerInterface* const server_; - ServerContext* const context_; - ServerAsyncStreamingInterface* const stream_; - CompletionQueue* const call_cq_; - void* const tag_; - const bool delete_on_finalize_; - grpc_call* call_; - }; - - class RegisteredAsyncRequest : public BaseAsyncRequest { - public: - RegisteredAsyncRequest(ServerInterface* server, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, void* tag); - - // uses BaseAsyncRequest::FinalizeResult - - protected: - void IssueRequest(void* registered_method, grpc_byte_buffer** payload, - ServerCompletionQueue* notification_cq); - }; - - class NoPayloadAsyncRequest final : public RegisteredAsyncRequest { - public: - NoPayloadAsyncRequest(void* registered_method, ServerInterface* server, - ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag) - : RegisteredAsyncRequest(server, context, stream, call_cq, tag) { - IssueRequest(registered_method, nullptr, notification_cq); - } - - // uses RegisteredAsyncRequest::FinalizeResult - }; - - template - class PayloadAsyncRequest final : public RegisteredAsyncRequest { - public: - PayloadAsyncRequest(void* registered_method, ServerInterface* server, - ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag, - Message* request) - : RegisteredAsyncRequest(server, context, stream, call_cq, tag), - registered_method_(registered_method), - server_(server), - context_(context), - stream_(stream), - call_cq_(call_cq), - notification_cq_(notification_cq), - tag_(tag), - request_(request) { - IssueRequest(registered_method, &payload_, notification_cq); - } - - bool FinalizeResult(void** tag, bool* status) override { - if (*status) { - if (payload_ == nullptr || - !SerializationTraits::Deserialize(payload_, request_) - .ok()) { - // If deserialization fails, we cancel the call and instantiate - // a new instance of ourselves to request another call. We then - // return false, which prevents the call from being returned to - // the application. - g_core_codegen_interface->grpc_call_cancel_with_status( - call_, GRPC_STATUS_INTERNAL, "Unable to parse request", nullptr); - g_core_codegen_interface->grpc_call_unref(call_); - new PayloadAsyncRequest(registered_method_, server_, context_, - stream_, call_cq_, notification_cq_, tag_, - request_); - delete this; - return false; - } - } - return RegisteredAsyncRequest::FinalizeResult(tag, status); - } - - private: - void* const registered_method_; - ServerInterface* const server_; - ServerContext* const context_; - ServerAsyncStreamingInterface* const stream_; - CompletionQueue* const call_cq_; - ServerCompletionQueue* const notification_cq_; - void* const tag_; - Message* const request_; - grpc_byte_buffer* payload_; - }; - - class GenericAsyncRequest : public BaseAsyncRequest { - public: - GenericAsyncRequest(ServerInterface* server, GenericServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag, - bool delete_on_finalize); - - bool FinalizeResult(void** tag, bool* status) override; - - private: - grpc_call_details call_details_; - }; - - template - void RequestAsyncCall(RpcServiceMethod* method, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag, - Message* message) { - GPR_CODEGEN_ASSERT(method); - new PayloadAsyncRequest(method->server_tag(), this, context, - stream, call_cq, notification_cq, tag, - message); - } - - void RequestAsyncCall(RpcServiceMethod* method, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag) { - GPR_CODEGEN_ASSERT(method); - new NoPayloadAsyncRequest(method->server_tag(), this, context, stream, - call_cq, notification_cq, tag); - } - - void RequestAsyncGenericCall(GenericServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, - void* tag) { - new GenericAsyncRequest(this, context, stream, call_cq, notification_cq, - tag, true); - } -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SERVER_INTERFACE_H diff --git a/linx64/include/grpc++/impl/codegen/service_type.h b/linx64/include/grpc++/impl/codegen/service_type.h deleted file mode 100644 index 2dc4ea0e..00000000 --- a/linx64/include/grpc++/impl/codegen/service_type.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SERVICE_TYPE_H -#define GRPCXX_IMPL_CODEGEN_SERVICE_TYPE_H - -#include -#include -#include -#include -#include -#include - -namespace grpc { - -class Call; -class CompletionQueue; -class Server; -class ServerInterface; -class ServerCompletionQueue; -class ServerContext; - -class ServerAsyncStreamingInterface { - public: - virtual ~ServerAsyncStreamingInterface() {} - - /// Request notification of the sending of initial metadata to the client. - /// Completion will be notified by \a tag on the associated completion - /// queue. This call is optional, but if it is used, it cannot be used - /// concurrently with or after the \a Finish method. - /// - /// \param[in] tag Tag identifying this request. - virtual void SendInitialMetadata(void* tag) = 0; - - private: - friend class ServerInterface; - virtual void BindCall(Call* call) = 0; -}; - -/// Desriptor of an RPC service and its various RPC methods -class Service { - public: - Service() : server_(nullptr) {} - virtual ~Service() {} - - bool has_async_methods() const { - for (auto it = methods_.begin(); it != methods_.end(); ++it) { - if (*it && (*it)->handler() == nullptr) { - return true; - } - } - return false; - } - - bool has_synchronous_methods() const { - for (auto it = methods_.begin(); it != methods_.end(); ++it) { - if (*it && (*it)->handler() != nullptr) { - return true; - } - } - return false; - } - - bool has_generic_methods() const { - for (auto it = methods_.begin(); it != methods_.end(); ++it) { - if (it->get() == nullptr) { - return true; - } - } - return false; - } - - protected: - template - void RequestAsyncUnary(int index, ServerContext* context, Message* request, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag) { - server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq, - notification_cq, tag, request); - } - void RequestAsyncClientStreaming(int index, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, - void* tag) { - server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq, - notification_cq, tag); - } - template - void RequestAsyncServerStreaming(int index, ServerContext* context, - Message* request, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, - void* tag) { - server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq, - notification_cq, tag, request); - } - void RequestAsyncBidiStreaming(int index, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, - void* tag) { - server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq, - notification_cq, tag); - } - - void AddMethod(RpcServiceMethod* method) { methods_.emplace_back(method); } - - void MarkMethodAsync(int index) { - GPR_CODEGEN_ASSERT( - methods_[index].get() != nullptr && - "Cannot mark the method as 'async' because it has already been " - "marked as 'generic'."); - methods_[index]->ResetHandler(); - } - - void MarkMethodGeneric(int index) { - GPR_CODEGEN_ASSERT( - methods_[index]->handler() != nullptr && - "Cannot mark the method as 'generic' because it has already been " - "marked as 'async'."); - methods_[index].reset(); - } - - void MarkMethodStreamed(int index, MethodHandler* streamed_method) { - GPR_CODEGEN_ASSERT(methods_[index] && methods_[index]->handler() && - "Cannot mark an async or generic method Streamed"); - methods_[index]->SetHandler(streamed_method); - - // From the server's point of view, streamed unary is a special - // case of BIDI_STREAMING that has 1 read and 1 write, in that order, - // and split server-side streaming is BIDI_STREAMING with 1 read and - // any number of writes, in that order. - methods_[index]->SetMethodType(::grpc::RpcMethod::BIDI_STREAMING); - } - - private: - friend class Server; - friend class ServerInterface; - ServerInterface* server_; - std::vector> methods_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SERVICE_TYPE_H diff --git a/linx64/include/grpc++/impl/codegen/slice.h b/linx64/include/grpc++/impl/codegen/slice.h deleted file mode 100644 index e682bdef..00000000 --- a/linx64/include/grpc++/impl/codegen/slice.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SLICE_H -#define GRPCXX_IMPL_CODEGEN_SLICE_H - -#include -#include - -namespace grpc { - -inline grpc::string_ref StringRefFromSlice(const grpc_slice* slice) { - return grpc::string_ref( - reinterpret_cast(GRPC_SLICE_START_PTR(*slice)), - GRPC_SLICE_LENGTH(*slice)); -} - -inline grpc::string StringFromCopiedSlice(grpc_slice slice) { - return grpc::string(reinterpret_cast(GRPC_SLICE_START_PTR(slice)), - GRPC_SLICE_LENGTH(slice)); -} - -inline grpc_slice SliceReferencingString(const grpc::string& str) { - return g_core_codegen_interface->grpc_slice_from_static_buffer(str.data(), - str.length()); -} - -inline grpc_slice SliceFromCopiedString(const grpc::string& str) { - return g_core_codegen_interface->grpc_slice_from_copied_buffer(str.data(), - str.length()); -} - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SLICE_H diff --git a/linx64/include/grpc++/impl/codegen/status.h b/linx64/include/grpc++/impl/codegen/status.h deleted file mode 100644 index 6f013cf0..00000000 --- a/linx64/include/grpc++/impl/codegen/status.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_STATUS_H -#define GRPCXX_IMPL_CODEGEN_STATUS_H - -#include -#include - -namespace grpc { - -/// Did it work? If it didn't, why? -/// -/// See \a grpc::StatusCode for details on the available code and their meaning. -class Status { - public: - /// Construct an OK instance. - Status() : code_(StatusCode::OK) {} - - /// Construct an instance with associated \a code and \a error_message. - /// It is an error to construct an OK status with non-empty \a error_message. - Status(StatusCode code, const grpc::string& error_message) - : code_(code), error_message_(error_message) {} - - /// Construct an instance with \a code, \a error_message and - /// \a error_details. It is an error to construct an OK status with non-empty - /// \a error_message and/or \a error_details. - Status(StatusCode code, const grpc::string& error_message, - const grpc::string& error_details) - : code_(code), - error_message_(error_message), - binary_error_details_(error_details) {} - - // Pre-defined special status objects. - /// An OK pre-defined instance. - static const Status& OK; - /// A CANCELLED pre-defined instance. - static const Status& CANCELLED; - - /// Return the instance's error code. - StatusCode error_code() const { return code_; } - /// Return the instance's error message. - grpc::string error_message() const { return error_message_; } - /// Return the (binary) error details. - // Usually it contains a serialized google.rpc.Status proto. - grpc::string error_details() const { return binary_error_details_; } - - /// Is the status OK? - bool ok() const { return code_ == StatusCode::OK; } - - // Ignores any errors. This method does nothing except potentially suppress - // complaints from any tools that are checking that errors are not dropped on - // the floor. - void IgnoreError() const {} - - private: - StatusCode code_; - grpc::string error_message_; - grpc::string binary_error_details_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_STATUS_H diff --git a/linx64/include/grpc++/impl/codegen/status_code_enum.h b/linx64/include/grpc++/impl/codegen/status_code_enum.h deleted file mode 100644 index 68da185c..00000000 --- a/linx64/include/grpc++/impl/codegen/status_code_enum.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_STATUS_CODE_ENUM_H -#define GRPCXX_IMPL_CODEGEN_STATUS_CODE_ENUM_H - -namespace grpc { - -enum StatusCode { - /// Not an error; returned on success. - OK = 0, - - /// The operation was cancelled (typically by the caller). - CANCELLED = 1, - - /// Unknown error. An example of where this error may be returned is if a - /// Status value received from another address space belongs to an error-space - /// that is not known in this address space. Also errors raised by APIs that - /// do not return enough error information may be converted to this error. - UNKNOWN = 2, - - /// Client specified an invalid argument. Note that this differs from - /// FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments that are - /// problematic regardless of the state of the system (e.g., a malformed file - /// name). - INVALID_ARGUMENT = 3, - - /// Deadline expired before operation could complete. For operations that - /// change the state of the system, this error may be returned even if the - /// operation has completed successfully. For example, a successful response - /// from a server could have been delayed long enough for the deadline to - /// expire. - DEADLINE_EXCEEDED = 4, - - /// Some requested entity (e.g., file or directory) was not found. - NOT_FOUND = 5, - - /// Some entity that we attempted to create (e.g., file or directory) already - /// exists. - ALREADY_EXISTS = 6, - - /// The caller does not have permission to execute the specified operation. - /// PERMISSION_DENIED must not be used for rejections caused by exhausting - /// some resource (use RESOURCE_EXHAUSTED instead for those errors). - /// PERMISSION_DENIED must not be used if the caller can not be identified - /// (use UNAUTHENTICATED instead for those errors). - PERMISSION_DENIED = 7, - - /// The request does not have valid authentication credentials for the - /// operation. - UNAUTHENTICATED = 16, - - /// Some resource has been exhausted, perhaps a per-user quota, or perhaps the - /// entire file system is out of space. - RESOURCE_EXHAUSTED = 8, - - /// Operation was rejected because the system is not in a state required for - /// the operation's execution. For example, directory to be deleted may be - /// non-empty, an rmdir operation is applied to a non-directory, etc. - /// - /// A litmus test that may help a service implementor in deciding - /// between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE: - /// (a) Use UNAVAILABLE if the client can retry just the failing call. - /// (b) Use ABORTED if the client should retry at a higher-level - /// (e.g., restarting a read-modify-write sequence). - /// (c) Use FAILED_PRECONDITION if the client should not retry until - /// the system state has been explicitly fixed. E.g., if an "rmdir" - /// fails because the directory is non-empty, FAILED_PRECONDITION - /// should be returned since the client should not retry unless - /// they have first fixed up the directory by deleting files from it. - /// (d) Use FAILED_PRECONDITION if the client performs conditional - /// REST Get/Update/Delete on a resource and the resource on the - /// server does not match the condition. E.g., conflicting - /// read-modify-write on the same resource. - FAILED_PRECONDITION = 9, - - /// The operation was aborted, typically due to a concurrency issue like - /// sequencer check failures, transaction aborts, etc. - /// - /// See litmus test above for deciding between FAILED_PRECONDITION, ABORTED, - /// and UNAVAILABLE. - ABORTED = 10, - - /// Operation was attempted past the valid range. E.g., seeking or reading - /// past end of file. - /// - /// Unlike INVALID_ARGUMENT, this error indicates a problem that may be fixed - /// if the system state changes. For example, a 32-bit file system will - /// generate INVALID_ARGUMENT if asked to read at an offset that is not in the - /// range [0,2^32-1], but it will generate OUT_OF_RANGE if asked to read from - /// an offset past the current file size. - /// - /// There is a fair bit of overlap between FAILED_PRECONDITION and - /// OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific error) - /// when it applies so that callers who are iterating through a space can - /// easily look for an OUT_OF_RANGE error to detect when they are done. - OUT_OF_RANGE = 11, - - /// Operation is not implemented or not supported/enabled in this service. - UNIMPLEMENTED = 12, - - /// Internal errors. Means some invariants expected by underlying System has - /// been broken. If you see one of these errors, Something is very broken. - INTERNAL = 13, - - /// The service is currently unavailable. This is a most likely a transient - /// condition and may be corrected by retrying with a backoff. - /// - /// \warning Although data MIGHT not have been transmitted when this - /// status occurs, there is NOT A GUARANTEE that the server has not seen - /// anything. So in general it is unsafe to retry on this status code - /// if the call is non-idempotent. - /// - /// See litmus test above for deciding between FAILED_PRECONDITION, ABORTED, - /// and UNAVAILABLE. - UNAVAILABLE = 14, - - /// Unrecoverable data loss or corruption. - DATA_LOSS = 15, - - /// Force users to include a default branch: - DO_NOT_USE = -1 -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_STATUS_CODE_ENUM_H diff --git a/linx64/include/grpc++/impl/codegen/string_ref.h b/linx64/include/grpc++/impl/codegen/string_ref.h deleted file mode 100644 index dbe3f197..00000000 --- a/linx64/include/grpc++/impl/codegen/string_ref.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_STRING_REF_H -#define GRPCXX_IMPL_CODEGEN_STRING_REF_H - -#include - -#include -#include -#include -#include - -#include - -namespace grpc { - -/// This class is a non owning reference to a string. -/// -/// It should be a strict subset of the upcoming std::string_ref. -/// -/// \see http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3442.html -/// -/// The constexpr is dropped or replaced with const for legacy compiler -/// compatibility. -class string_ref { - public: - /// types - typedef const char* const_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - /// constants - const static size_t npos; - - /// construct/copy. - string_ref() : data_(nullptr), length_(0) {} - string_ref(const string_ref& other) - : data_(other.data_), length_(other.length_) {} - string_ref& operator=(const string_ref& rhs) { - data_ = rhs.data_; - length_ = rhs.length_; - return *this; - } - - string_ref(const char* s) : data_(s), length_(strlen(s)) {} - string_ref(const char* s, size_t l) : data_(s), length_(l) {} - string_ref(const grpc::string& s) : data_(s.data()), length_(s.length()) {} - - /// iterators - const_iterator begin() const { return data_; } - const_iterator end() const { return data_ + length_; } - const_iterator cbegin() const { return data_; } - const_iterator cend() const { return data_ + length_; } - const_reverse_iterator rbegin() const { - return const_reverse_iterator(end()); - } - const_reverse_iterator rend() const { - return const_reverse_iterator(begin()); - } - const_reverse_iterator crbegin() const { - return const_reverse_iterator(end()); - } - const_reverse_iterator crend() const { - return const_reverse_iterator(begin()); - } - - /// capacity - size_t size() const { return length_; } - size_t length() const { return length_; } - size_t max_size() const { return length_; } - bool empty() const { return length_ == 0; } - - /// element access - const char* data() const { return data_; } - - /// string operations - int compare(string_ref x) const { - size_t min_size = length_ < x.length_ ? length_ : x.length_; - int r = memcmp(data_, x.data_, min_size); - if (r < 0) return -1; - if (r > 0) return 1; - if (length_ < x.length_) return -1; - if (length_ > x.length_) return 1; - return 0; - } - - bool starts_with(string_ref x) const { - return length_ >= x.length_ && (memcmp(data_, x.data_, x.length_) == 0); - } - - bool ends_with(string_ref x) const { - return length_ >= x.length_ && - (memcmp(data_ + (length_ - x.length_), x.data_, x.length_) == 0); - } - - size_t find(string_ref s) const { - auto it = std::search(cbegin(), cend(), s.cbegin(), s.cend()); - return it == cend() ? npos : std::distance(cbegin(), it); - } - - size_t find(char c) const { - auto it = std::find(cbegin(), cend(), c); - return it == cend() ? npos : std::distance(cbegin(), it); - } - - string_ref substr(size_t pos, size_t n = npos) const { - if (pos > length_) pos = length_; - if (n > (length_ - pos)) n = length_ - pos; - return string_ref(data_ + pos, n); - } - - private: - const char* data_; - size_t length_; -}; - -/// Comparison operators -inline bool operator==(string_ref x, string_ref y) { return x.compare(y) == 0; } -inline bool operator!=(string_ref x, string_ref y) { return x.compare(y) != 0; } -inline bool operator<(string_ref x, string_ref y) { return x.compare(y) < 0; } -inline bool operator<=(string_ref x, string_ref y) { return x.compare(y) <= 0; } -inline bool operator>(string_ref x, string_ref y) { return x.compare(y) > 0; } -inline bool operator>=(string_ref x, string_ref y) { return x.compare(y) >= 0; } - -inline std::ostream& operator<<(std::ostream& out, const string_ref& string) { - return out << grpc::string(string.begin(), string.end()); -} - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_STRING_REF_H diff --git a/linx64/include/grpc++/impl/codegen/stub_options.h b/linx64/include/grpc++/impl/codegen/stub_options.h deleted file mode 100644 index 380d052a..00000000 --- a/linx64/include/grpc++/impl/codegen/stub_options.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_STUB_OPTIONS_H -#define GRPCXX_IMPL_CODEGEN_STUB_OPTIONS_H - -namespace grpc { - -/// Useful interface for generated stubs -class StubOptions {}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_STUB_OPTIONS_H diff --git a/linx64/include/grpc++/impl/codegen/sync_stream.h b/linx64/include/grpc++/impl/codegen/sync_stream.h deleted file mode 100644 index 3fa20896..00000000 --- a/linx64/include/grpc++/impl/codegen/sync_stream.h +++ /dev/null @@ -1,853 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SYNC_STREAM_H -#define GRPCXX_IMPL_CODEGEN_SYNC_STREAM_H - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace grpc { - -/// Common interface for all synchronous client side streaming. -class ClientStreamingInterface { - public: - virtual ~ClientStreamingInterface() {} - - /// Block waiting until the stream finishes and a final status of the call is - /// available. - /// - /// It is appropriate to call this method when both: - /// * the calling code (client-side) has no more message to send - /// (this can be declared implicitly by calling this method, or - /// explicitly through an earlier call to WritesDone method of the - /// class in use, e.g. \a ClientWriterInterface::WritesDone or - /// \a ClientReaderWriterInterface::WritesDone). - /// * there are no more messages to be received from the server (which can - /// be known implicitly, or explicitly from an earlier call to \a - /// ReaderInterface::Read that returned "false"). - /// - /// This function will return either: - /// - when all incoming messages have been read and the server has - /// returned status. - /// - when the server has returned a non-OK status. - /// - OR when the call failed for some reason and the library generated a - /// status. - /// - /// Return values: - /// - \a Status contains the status code, message and details for the call - /// - the \a ClientContext associated with this call is updated with - /// possible trailing metadata sent from the server. - virtual Status Finish() = 0; -}; - -/// Common interface for all synchronous server side streaming. -class ServerStreamingInterface { - public: - virtual ~ServerStreamingInterface() {} - - /// Block to send initial metadata to client. - /// This call is optional, but if it is used, it cannot be used concurrently - /// with or after the \a Finish method. - /// - /// The initial metadata that will be sent to the client will be - /// taken from the \a ServerContext associated with the call. - virtual void SendInitialMetadata() = 0; -}; - -/// An interface that yields a sequence of messages of type \a R. -template -class ReaderInterface { - public: - virtual ~ReaderInterface() {} - - /// Get an upper bound on the next message size available for reading on this - /// stream. - virtual bool NextMessageSize(uint32_t* sz) = 0; - - /// Block to read a message and parse to \a msg. Returns \a true on success. - /// This is thread-safe with respect to \a Write or \WritesDone methods on - /// the same stream. It should not be called concurrently with another \a - /// Read on the same stream as the order of delivery will not be defined. - /// - /// \param[out] msg The read message. - /// - /// \return \a false when there will be no more incoming messages, either - /// because the other side has called \a WritesDone() or the stream has failed - /// (or been cancelled). - virtual bool Read(R* msg) = 0; -}; - -/// An interface that can be fed a sequence of messages of type \a W. -template -class WriterInterface { - public: - virtual ~WriterInterface() {} - - /// Block to write \a msg to the stream with WriteOptions \a options. - /// This is thread-safe with respect to \a ReaderInterface::Read - /// - /// \param msg The message to be written to the stream. - /// \param options The WriteOptions affecting the write operation. - /// - /// \return \a true on success, \a false when the stream has been closed. - virtual bool Write(const W& msg, WriteOptions options) = 0; - - /// Block to write \a msg to the stream with default write options. - /// This is thread-safe with respect to \a ReaderInterface::Read - /// - /// \param msg The message to be written to the stream. - /// - /// \return \a true on success, \a false when the stream has been closed. - inline bool Write(const W& msg) { return Write(msg, WriteOptions()); } - - /// Write \a msg and coalesce it with the writing of trailing metadata, using - /// WriteOptions \a options. - /// - /// For client, WriteLast is equivalent of performing Write and WritesDone in - /// a single step. \a msg and trailing metadata are coalesced and sent on wire - /// by calling this function. For server, WriteLast buffers the \a msg. - /// The writing of \a msg is held until the service handler returns, - /// where \a msg and trailing metadata are coalesced and sent on wire. - /// Note that WriteLast can only buffer \a msg up to the flow control window - /// size. If \a msg size is larger than the window size, it will be sent on - /// wire without buffering. - /// - /// \param[in] msg The message to be written to the stream. - /// \param[in] options The WriteOptions to be used to write this message. - void WriteLast(const W& msg, WriteOptions options) { - Write(msg, options.set_last_message()); - } -}; - -/// Client-side interface for streaming reads of message of type \a R. -template -class ClientReaderInterface : public ClientStreamingInterface, - public ReaderInterface { - public: - /// Block to wait for initial metadata from server. The received metadata - /// can only be accessed after this call returns. Should only be called before - /// the first read. Calling this method is optional, and if it is not called - /// the metadata will be available in ClientContext after the first read. - virtual void WaitForInitialMetadata() = 0; -}; - -/// Synchronous (blocking) client-side API for doing server-streaming RPCs, -/// where the stream of messages coming from the server has messages -/// of type \a R. -template -class ClientReader final : public ClientReaderInterface { - public: - /// Block to create a stream and write the initial metadata and \a request - /// out. Note that \a context will be used to fill in custom initial - /// metadata used to send to the server when starting the call. - template - ClientReader(ChannelInterface* channel, const RpcMethod& method, - ClientContext* context, const W& request) - : context_(context), - cq_(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK, - GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq - call_(channel->CreateCall(method, context, &cq_)) { - CallOpSet - ops; - ops.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(ops.SendMessage(request).ok()); - ops.ClientSendClose(); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - - /// See the \a ClientStreamingInterface.WaitForInitialMetadata method for - /// semantics. - /// - // Side effect: - /// Once complete, the initial metadata read from - /// the server will be accessable through the \a ClientContext used to - /// construct this object. - void WaitForInitialMetadata() override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - CallOpSet ops; - ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); /// status ignored - } - - bool NextMessageSize(uint32_t* sz) override { - *sz = call_.max_receive_message_size(); - return true; - } - - /// See the \a ReaderInterface.Read method for semantics. - /// Side effect: - /// This also receives initial metadata from the server, if not - /// already received (if initial metadata is received, it can be then - /// accessed through the \a ClientContext associated with this call). - bool Read(R* msg) override { - CallOpSet> ops; - if (!context_->initial_metadata_received_) { - ops.RecvInitialMetadata(context_); - } - ops.RecvMessage(msg); - call_.PerformOps(&ops); - return cq_.Pluck(&ops) && ops.got_message; - } - - /// See the \a ClientStreamingInterface.Finish method for semantics. - /// - /// Side effect: - /// The \a ClientContext associated with this call is updated with - /// possible metadata received from the server. - Status Finish() override { - CallOpSet ops; - Status status; - ops.ClientRecvStatus(context_, &status); - call_.PerformOps(&ops); - GPR_CODEGEN_ASSERT(cq_.Pluck(&ops)); - return status; - } - - private: - ClientContext* context_; - CompletionQueue cq_; - Call call_; -}; - -/// Client-side interface for streaming writes of message type \a W. -template -class ClientWriterInterface : public ClientStreamingInterface, - public WriterInterface { - public: - /// Half close writing from the client. (signal that the stream of messages - /// coming from the clinet is complete). - /// Blocks until currently-pending writes are completed. - /// Thread safe with respect to \a ReaderInterface::Read operations only - /// - /// \return Whether the writes were successful. - virtual bool WritesDone() = 0; -}; - -/// Synchronous (blocking) client-side API for doing client-streaming RPCs, -/// where the outgoing message stream coming from the client has messages of -/// type \a W. -template -class ClientWriter : public ClientWriterInterface { - public: - /// Block to create a stream (i.e. send request headers and other initial - /// metadata to the server). Note that \a context will be used to fill - /// in custom initial metadata. \a response will be filled in with the - /// single expected response message from the server upon a successful - /// call to the \a Finish method of this instance. - template - ClientWriter(ChannelInterface* channel, const RpcMethod& method, - ClientContext* context, R* response) - : context_(context), - cq_(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK, - GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq - call_(channel->CreateCall(method, context, &cq_)) { - finish_ops_.RecvMessage(response); - finish_ops_.AllowNoMessage(); - - if (!context_->initial_metadata_corked_) { - CallOpSet ops; - ops.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - } - - /// See the \a ClientStreamingInterface.WaitForInitialMetadata method for - /// semantics. - /// - // Side effect: - /// Once complete, the initial metadata read from the server will be - /// accessable through the \a ClientContext used to construct this object. - void WaitForInitialMetadata() { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - CallOpSet ops; - ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); // status ignored - } - - /// See the WriterInterface.Write(const W& msg, WriteOptions options) method - /// for semantics. - /// - /// Side effect: - /// Also sends initial metadata if not already sent (using the - /// \a ClientContext associated with this call). - using WriterInterface::Write; - bool Write(const W& msg, WriteOptions options) override { - CallOpSet - ops; - - if (options.is_last_message()) { - options.set_buffer_hint(); - ops.ClientSendClose(); - } - if (context_->initial_metadata_corked_) { - ops.SendInitialMetadata(context_->send_initial_metadata_, - context_->initial_metadata_flags()); - context_->set_initial_metadata_corked(false); - } - if (!ops.SendMessage(msg, options).ok()) { - return false; - } - - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - bool WritesDone() override { - CallOpSet ops; - ops.ClientSendClose(); - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - /// See the ClientStreamingInterface.Finish method for semantics. - /// Side effects: - /// - Also receives initial metadata if not already received. - /// - Attempts to fill in the \a response parameter passed - /// to the constructor of this instance with the response - /// message from the server. - Status Finish() override { - Status status; - if (!context_->initial_metadata_received_) { - finish_ops_.RecvInitialMetadata(context_); - } - finish_ops_.ClientRecvStatus(context_, &status); - call_.PerformOps(&finish_ops_); - GPR_CODEGEN_ASSERT(cq_.Pluck(&finish_ops_)); - return status; - } - - private: - ClientContext* context_; - CallOpSet - finish_ops_; - CompletionQueue cq_; - Call call_; -}; - -/// Client-side interface for bi-directional streaming with -/// client-to-server stream messages of type \a W and -/// server-to-client stream messages of type \a R. -template -class ClientReaderWriterInterface : public ClientStreamingInterface, - public WriterInterface, - public ReaderInterface { - public: - /// Block to wait for initial metadata from server. The received metadata - /// can only be accessed after this call returns. Should only be called before - /// the first read. Calling this method is optional, and if it is not called - /// the metadata will be available in ClientContext after the first read. - virtual void WaitForInitialMetadata() = 0; - - /// Half close writing from the client. (signal that the stream of messages - /// coming from the clinet is complete). - /// Blocks until currently-pending writes are completed. - /// Thread-safe with respect to \a ReaderInterface::Read - /// - /// \return Whether the writes were successful. - virtual bool WritesDone() = 0; -}; - -/// Synchronous (blocking) client-side API for bi-directional streaming RPCs, -/// where the outgoing message stream coming from the client has messages of -/// type \a W, and the incoming messages stream coming from the server has -/// messages of type \a R. -template -class ClientReaderWriter final : public ClientReaderWriterInterface { - public: - /// Block to create a stream and write the initial metadata and \a request - /// out. Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - ClientReaderWriter(ChannelInterface* channel, const RpcMethod& method, - ClientContext* context) - : context_(context), - cq_(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK, - GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq - call_(channel->CreateCall(method, context, &cq_)) { - if (!context_->initial_metadata_corked_) { - CallOpSet ops; - ops.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - } - - /// Block waiting to read initial metadata from the server. - /// This call is optional, but if it is used, it cannot be used concurrently - /// with or after the \a Finish method. - /// - /// Once complete, the initial metadata read from the server will be - /// accessable through the \a ClientContext used to construct this object. - void WaitForInitialMetadata() override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - CallOpSet ops; - ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); // status ignored - } - - bool NextMessageSize(uint32_t* sz) override { - *sz = call_.max_receive_message_size(); - return true; - } - - /// See the \a ReaderInterface.Read method for semantics. - /// Side effect: - /// Also receives initial metadata if not already received (updates the \a - /// ClientContext associated with this call in that case). - bool Read(R* msg) override { - CallOpSet> ops; - if (!context_->initial_metadata_received_) { - ops.RecvInitialMetadata(context_); - } - ops.RecvMessage(msg); - call_.PerformOps(&ops); - return cq_.Pluck(&ops) && ops.got_message; - } - - /// See the \a WriterInterface.Write method for semantics. - /// - /// Side effect: - /// Also sends initial metadata if not already sent (using the - /// \a ClientContext associated with this call to fill in values). - using WriterInterface::Write; - bool Write(const W& msg, WriteOptions options) override { - CallOpSet - ops; - - if (options.is_last_message()) { - options.set_buffer_hint(); - ops.ClientSendClose(); - } - if (context_->initial_metadata_corked_) { - ops.SendInitialMetadata(context_->send_initial_metadata_, - context_->initial_metadata_flags()); - context_->set_initial_metadata_corked(false); - } - if (!ops.SendMessage(msg, options).ok()) { - return false; - } - - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - bool WritesDone() override { - CallOpSet ops; - ops.ClientSendClose(); - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - /// See the ClientStreamingInterface.Finish method for semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible trailing metadata sent from the server. - Status Finish() override { - CallOpSet ops; - if (!context_->initial_metadata_received_) { - ops.RecvInitialMetadata(context_); - } - Status status; - ops.ClientRecvStatus(context_, &status); - call_.PerformOps(&ops); - GPR_CODEGEN_ASSERT(cq_.Pluck(&ops)); - return status; - } - - private: - ClientContext* context_; - CompletionQueue cq_; - Call call_; -}; - -/// Server-side interface for streaming reads of message of type \a R. -template -class ServerReaderInterface : public ServerStreamingInterface, - public ReaderInterface {}; - -/// Synchronous (blocking) server-side API for doing client-streaming RPCs, -/// where the incoming message stream coming from the client has messages of -/// type \a R. -template -class ServerReader final : public ServerReaderInterface { - public: - ServerReader(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} - - /// See the \a ServerStreamingInterface.SendInitialMetadata method - /// for semantics. Note that initial metadata will be affected by the - /// \a ServerContext associated with this call. - void SendInitialMetadata() override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet ops; - ops.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - bool NextMessageSize(uint32_t* sz) override { - *sz = call_->max_receive_message_size(); - return true; - } - - bool Read(R* msg) override { - CallOpSet> ops; - ops.RecvMessage(msg); - call_->PerformOps(&ops); - return call_->cq()->Pluck(&ops) && ops.got_message; - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; - -/// Server-side interface for streaming writes of message of type \a W. -template -class ServerWriterInterface : public ServerStreamingInterface, - public WriterInterface {}; - -/// Synchronous (blocking) server-side API for doing for doing a -/// server-streaming RPCs, where the outgoing message stream coming from the -/// server has messages of type \a W. -template -class ServerWriter final : public ServerWriterInterface { - public: - ServerWriter(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} - - /// See the \a ServerStreamingInterface.SendInitialMetadata method - /// for semantics. - /// Note that initial metadata will be affected by the - /// \a ServerContext associated with this call. - void SendInitialMetadata() override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet ops; - ops.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - /// See the \a WriterInterface.Write method for semantics. - /// - /// Side effect: - /// Also sends initial metadata if not already sent (using the - /// \a ClientContext associated with this call to fill in values). - using WriterInterface::Write; - bool Write(const W& msg, WriteOptions options) override { - if (options.is_last_message()) { - options.set_buffer_hint(); - } - if (!ctx_->pending_ops_.SendMessage(msg, options).ok()) { - return false; - } - if (!ctx_->sent_initial_metadata_) { - ctx_->pending_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ctx_->pending_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - call_->PerformOps(&ctx_->pending_ops_); - // if this is the last message we defer the pluck until AFTER we start - // the trailing md op. This prevents hangs. See - // https://github.com/grpc/grpc/issues/11546 - if (options.is_last_message()) { - ctx_->has_pending_ops_ = true; - return true; - } - ctx_->has_pending_ops_ = false; - return call_->cq()->Pluck(&ctx_->pending_ops_); - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; - -/// Server-side interface for bi-directional streaming. -template -class ServerReaderWriterInterface : public ServerStreamingInterface, - public WriterInterface, - public ReaderInterface {}; - -/// Actual implementation of bi-directional streaming -namespace internal { -template -class ServerReaderWriterBody final { - public: - ServerReaderWriterBody(Call* call, ServerContext* ctx) - : call_(call), ctx_(ctx) {} - - void SendInitialMetadata() { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet ops; - ops.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - bool NextMessageSize(uint32_t* sz) { - *sz = call_->max_receive_message_size(); - return true; - } - - bool Read(R* msg) { - CallOpSet> ops; - ops.RecvMessage(msg); - call_->PerformOps(&ops); - return call_->cq()->Pluck(&ops) && ops.got_message; - } - - bool Write(const W& msg, WriteOptions options) { - if (options.is_last_message()) { - options.set_buffer_hint(); - } - if (!ctx_->pending_ops_.SendMessage(msg, options).ok()) { - return false; - } - if (!ctx_->sent_initial_metadata_) { - ctx_->pending_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ctx_->pending_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - call_->PerformOps(&ctx_->pending_ops_); - // if this is the last message we defer the pluck until AFTER we start - // the trailing md op. This prevents hangs. See - // https://github.com/grpc/grpc/issues/11546 - if (options.is_last_message()) { - ctx_->has_pending_ops_ = true; - return true; - } - ctx_->has_pending_ops_ = false; - return call_->cq()->Pluck(&ctx_->pending_ops_); - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; -} // namespace internal - -/// Synchronous (blocking) server-side API for a bidirectional -/// streaming call, where the incoming message stream coming from the client has -/// messages of type \a R, and the outgoing message streaming coming from -/// the server has messages of type \a W. -template -class ServerReaderWriter final : public ServerReaderWriterInterface { - public: - ServerReaderWriter(Call* call, ServerContext* ctx) : body_(call, ctx) {} - - /// See the \a ServerStreamingInterface.SendInitialMetadata method - /// for semantics. Note that initial metadata will be affected by the - /// \a ServerContext associated with this call. - void SendInitialMetadata() override { body_.SendInitialMetadata(); } - - bool NextMessageSize(uint32_t* sz) override { - return body_.NextMessageSize(sz); - } - - bool Read(R* msg) override { return body_.Read(msg); } - - /// See the \a WriterInterface.Write(const W& msg, WriteOptions options) - /// method for semantics. - /// Side effect: - /// Also sends initial metadata if not already sent (using the \a - /// ServerContext associated with this call). - using WriterInterface::Write; - bool Write(const W& msg, WriteOptions options) override { - return body_.Write(msg, options); - } - - private: - internal::ServerReaderWriterBody body_; -}; - -/// A class to represent a flow-controlled unary call. This is something -/// of a hybrid between conventional unary and streaming. This is invoked -/// through a unary call on the client side, but the server responds to it -/// as though it were a single-ping-pong streaming call. The server can use -/// the \a NextMessageSize method to determine an upper-bound on the size of -/// the message. A key difference relative to streaming: ServerUnaryStreamer -/// must have exactly 1 Read and exactly 1 Write, in that order, to function -/// correctly. Otherwise, the RPC is in error. -template -class ServerUnaryStreamer final - : public ServerReaderWriterInterface { - public: - ServerUnaryStreamer(Call* call, ServerContext* ctx) - : body_(call, ctx), read_done_(false), write_done_(false) {} - - /// Block to send initial metadata to client. - /// Implicit input parameter: - /// - the \a ServerContext associated with this call will be used for - /// sending initial metadata. - void SendInitialMetadata() override { body_.SendInitialMetadata(); } - - /// Get an upper bound on the request message size from the client. - bool NextMessageSize(uint32_t* sz) override { - return body_.NextMessageSize(sz); - } - - /// Read a message of type \a R into \a msg. Completion will be notified by \a - /// tag on the associated completion queue. - /// This is thread-safe with respect to \a Write or \a WritesDone methods. It - /// should not be called concurrently with other streaming APIs - /// on the same stream. It is not meaningful to call it concurrently - /// with another \a ReaderInterface::Read on the same stream since reads on - /// the same stream are delivered in order. - /// - /// \param[out] msg Where to eventually store the read message. - /// \param[in] tag The tag identifying the operation. - bool Read(RequestType* request) override { - if (read_done_) { - return false; - } - read_done_ = true; - return body_.Read(request); - } - - /// Block to write \a msg to the stream with WriteOptions \a options. - /// This is thread-safe with respect to \a ReaderInterface::Read - /// - /// \param msg The message to be written to the stream. - /// \param options The WriteOptions affecting the write operation. - /// - /// \return \a true on success, \a false when the stream has been closed. - using WriterInterface::Write; - bool Write(const ResponseType& response, WriteOptions options) override { - if (write_done_ || !read_done_) { - return false; - } - write_done_ = true; - return body_.Write(response, options); - } - - private: - internal::ServerReaderWriterBody body_; - bool read_done_; - bool write_done_; -}; - -/// A class to represent a flow-controlled server-side streaming call. -/// This is something of a hybrid between server-side and bidi streaming. -/// This is invoked through a server-side streaming call on the client side, -/// but the server responds to it as though it were a bidi streaming call that -/// must first have exactly 1 Read and then any number of Writes. -template -class ServerSplitStreamer final - : public ServerReaderWriterInterface { - public: - ServerSplitStreamer(Call* call, ServerContext* ctx) - : body_(call, ctx), read_done_(false) {} - - /// Block to send initial metadata to client. - /// Implicit input parameter: - /// - the \a ServerContext associated with this call will be used for - /// sending initial metadata. - void SendInitialMetadata() override { body_.SendInitialMetadata(); } - - /// Get an upper bound on the request message size from the client. - bool NextMessageSize(uint32_t* sz) override { - return body_.NextMessageSize(sz); - } - - /// Read a message of type \a R into \a msg. Completion will be notified by \a - /// tag on the associated completion queue. - /// This is thread-safe with respect to \a Write or \a WritesDone methods. It - /// should not be called concurrently with other streaming APIs - /// on the same stream. It is not meaningful to call it concurrently - /// with another \a ReaderInterface::Read on the same stream since reads on - /// the same stream are delivered in order. - /// - /// \param[out] msg Where to eventually store the read message. - /// \param[in] tag The tag identifying the operation. - bool Read(RequestType* request) override { - if (read_done_) { - return false; - } - read_done_ = true; - return body_.Read(request); - } - - /// Block to write \a msg to the stream with WriteOptions \a options. - /// This is thread-safe with respect to \a ReaderInterface::Read - /// - /// \param msg The message to be written to the stream. - /// \param options The WriteOptions affecting the write operation. - /// - /// \return \a true on success, \a false when the stream has been closed. - using WriterInterface::Write; - bool Write(const ResponseType& response, WriteOptions options) override { - return read_done_ && body_.Write(response, options); - } - - private: - internal::ServerReaderWriterBody body_; - bool read_done_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SYNC_STREAM_H diff --git a/linx64/include/grpc++/impl/codegen/time.h b/linx64/include/grpc++/impl/codegen/time.h deleted file mode 100644 index 589deb4f..00000000 --- a/linx64/include/grpc++/impl/codegen/time.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_TIME_H -#define GRPCXX_IMPL_CODEGEN_TIME_H - -#include -#include - -namespace grpc { - -/** If you are trying to use CompletionQueue::AsyncNext with a time class that - isn't either gpr_timespec or std::chrono::system_clock::time_point, you - will most likely be looking at this comment as your compiler will have - fired an error below. In order to fix this issue, you have two potential - solutions: - - 1. Use gpr_timespec or std::chrono::system_clock::time_point instead - 2. Specialize the TimePoint class with whichever time class that you - want to use here. See below for two examples of how to do this. - */ -template -class TimePoint { - public: - TimePoint(const T& time) { you_need_a_specialization_of_TimePoint(); } - gpr_timespec raw_time() { - gpr_timespec t; - return t; - } - - private: - void you_need_a_specialization_of_TimePoint(); -}; - -template <> -class TimePoint { - public: - TimePoint(const gpr_timespec& time) : time_(time) {} - gpr_timespec raw_time() { return time_; } - - private: - gpr_timespec time_; -}; - -} // namespace grpc - -#include - -#include - -namespace grpc { - -// from and to should be absolute time. -void Timepoint2Timespec(const std::chrono::system_clock::time_point& from, - gpr_timespec* to); -void TimepointHR2Timespec( - const std::chrono::high_resolution_clock::time_point& from, - gpr_timespec* to); - -std::chrono::system_clock::time_point Timespec2Timepoint(gpr_timespec t); - -template <> -class TimePoint { - public: - TimePoint(const std::chrono::system_clock::time_point& time) { - Timepoint2Timespec(time, &time_); - } - gpr_timespec raw_time() const { return time_; } - - private: - gpr_timespec time_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_TIME_H diff --git a/linx64/include/grpc++/impl/grpc_library.h b/linx64/include/grpc++/impl/grpc_library.h deleted file mode 100644 index 55c867dd..00000000 --- a/linx64/include/grpc++/impl/grpc_library.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_GRPC_LIBRARY_H -#define GRPCXX_IMPL_GRPC_LIBRARY_H - -#include - -#include -#include -#include -#include - -namespace grpc { - -namespace internal { -class GrpcLibrary final : public GrpcLibraryInterface { - public: - void init() override { grpc_init(); } - void shutdown() override { grpc_shutdown(); } -}; - -static GrpcLibrary g_gli; -static CoreCodegen g_core_codegen; - -/// Instantiating this class ensures the proper initialization of gRPC. -class GrpcLibraryInitializer final { - public: - GrpcLibraryInitializer() { - if (grpc::g_glip == nullptr) { - grpc::g_glip = &g_gli; - } - if (grpc::g_core_codegen_interface == nullptr) { - grpc::g_core_codegen_interface = &g_core_codegen; - } - } - - /// A no-op method to force the linker to reference this class, which will - /// take care of initializing and shutting down the gRPC runtime. - int summon() { return 0; } -}; - -} // namespace internal -} // namespace grpc - -#endif // GRPCXX_IMPL_GRPC_LIBRARY_H diff --git a/linx64/include/grpc++/impl/method_handler_impl.h b/linx64/include/grpc++/impl/method_handler_impl.h deleted file mode 100644 index 0b1ab027..00000000 --- a/linx64/include/grpc++/impl/method_handler_impl.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_METHOD_HANDLER_IMPL_H -#define GRPCXX_IMPL_METHOD_HANDLER_IMPL_H - -#include - -#endif // GRPCXX_IMPL_METHOD_HANDLER_IMPL_H diff --git a/linx64/include/grpc++/impl/rpc_method.h b/linx64/include/grpc++/impl/rpc_method.h deleted file mode 100644 index 51e95bb1..00000000 --- a/linx64/include/grpc++/impl/rpc_method.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_RPC_METHOD_H -#define GRPCXX_IMPL_RPC_METHOD_H - -#include - -#endif // GRPCXX_IMPL_RPC_METHOD_H diff --git a/linx64/include/grpc++/impl/rpc_service_method.h b/linx64/include/grpc++/impl/rpc_service_method.h deleted file mode 100644 index efde374e..00000000 --- a/linx64/include/grpc++/impl/rpc_service_method.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_RPC_SERVICE_METHOD_H -#define GRPCXX_IMPL_RPC_SERVICE_METHOD_H - -#include - -#endif // GRPCXX_IMPL_RPC_SERVICE_METHOD_H diff --git a/linx64/include/grpc++/impl/serialization_traits.h b/linx64/include/grpc++/impl/serialization_traits.h deleted file mode 100644 index 91e894c9..00000000 --- a/linx64/include/grpc++/impl/serialization_traits.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_SERIALIZATION_TRAITS_H -#define GRPCXX_IMPL_SERIALIZATION_TRAITS_H - -#include - -#endif // GRPCXX_IMPL_SERIALIZATION_TRAITS_H diff --git a/linx64/include/grpc++/impl/server_builder_option.h b/linx64/include/grpc++/impl/server_builder_option.h deleted file mode 100644 index ab04a1c9..00000000 --- a/linx64/include/grpc++/impl/server_builder_option.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_SERVER_BUILDER_OPTION_H -#define GRPCXX_IMPL_SERVER_BUILDER_OPTION_H - -#include -#include - -#include -#include - -namespace grpc { - -/// Interface to pass an option to a \a ServerBuilder. -class ServerBuilderOption { - public: - virtual ~ServerBuilderOption() {} - /// Alter the \a ChannelArguments used to create the gRPC server. - virtual void UpdateArguments(ChannelArguments* args) = 0; - /// Alter the ServerBuilderPlugin map that will be added into ServerBuilder. - virtual void UpdatePlugins( - std::vector>* plugins) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_SERVER_BUILDER_OPTION_H diff --git a/linx64/include/grpc++/impl/server_builder_plugin.h b/linx64/include/grpc++/impl/server_builder_plugin.h deleted file mode 100644 index e15cd7b4..00000000 --- a/linx64/include/grpc++/impl/server_builder_plugin.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H -#define GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H - -#include - -#include - -namespace grpc { - -class ServerBuilder; -class ServerInitializer; -class ChannelArguments; - -/// This interface is meant for internal usage only. Implementations of this -/// interface should add themselves to a \a ServerBuilder instance through the -/// \a InternalAddPluginFactory method. -class ServerBuilderPlugin { - public: - virtual ~ServerBuilderPlugin() {} - virtual grpc::string name() = 0; - - /// UpdateServerBuilder will be called at the beginning of - /// \a ServerBuilder::BuildAndStart(). - virtual void UpdateServerBuilder(ServerBuilder* builder) {} - - /// InitServer will be called in ServerBuilder::BuildAndStart(), after the - /// Server instance is created. - virtual void InitServer(ServerInitializer* si) = 0; - - /// Finish will be called at the end of ServerBuilder::BuildAndStart(). - virtual void Finish(ServerInitializer* si) = 0; - - /// ChangeArguments is an interface that can be used in - /// ServerBuilderOption::UpdatePlugins - virtual void ChangeArguments(const grpc::string& name, void* value) = 0; - - /// UpdateChannelArguments will be called in ServerBuilder::BuildAndStart(), - /// before the Server instance is created. - virtual void UpdateChannelArguments(ChannelArguments* args) {} - - virtual bool has_sync_methods() const { return false; } - virtual bool has_async_methods() const { return false; } -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H diff --git a/linx64/include/grpc++/impl/server_initializer.h b/linx64/include/grpc++/impl/server_initializer.h deleted file mode 100644 index 873c46fb..00000000 --- a/linx64/include/grpc++/impl/server_initializer.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_SERVER_INITIALIZER_H -#define GRPCXX_IMPL_SERVER_INITIALIZER_H - -#include -#include - -#include - -namespace grpc { - -class Server; -class Service; - -class ServerInitializer { - public: - ServerInitializer(Server* server) : server_(server) {} - - bool RegisterService(std::shared_ptr service) { - if (!server_->RegisterService(nullptr, service.get())) { - return false; - } - default_services_.push_back(service); - return true; - } - - const std::vector* GetServiceList() { - return &server_->services_; - } - - private: - Server* server_; - std::vector > default_services_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_SERVER_INITIALIZER_H diff --git a/linx64/include/grpc++/impl/service_type.h b/linx64/include/grpc++/impl/service_type.h deleted file mode 100644 index 6a9e90a9..00000000 --- a/linx64/include/grpc++/impl/service_type.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_SERVICE_TYPE_H -#define GRPCXX_IMPL_SERVICE_TYPE_H - -#include - -#endif // GRPCXX_IMPL_SERVICE_TYPE_H diff --git a/linx64/include/grpc++/resource_quota.h b/linx64/include/grpc++/resource_quota.h deleted file mode 100644 index ef214dba..00000000 --- a/linx64/include/grpc++/resource_quota.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_RESOURCE_QUOTA_H -#define GRPCXX_RESOURCE_QUOTA_H - -struct grpc_resource_quota; - -#include -#include - -namespace grpc { - -/// ResourceQuota represents a bound on memory usage by the gRPC library. -/// A ResourceQuota can be attached to a server (via \a ServerBuilder), -/// or a client channel (via \a ChannelArguments). -/// gRPC will attempt to keep memory used by all attached entities -/// below the ResourceQuota bound. -class ResourceQuota final : private GrpcLibraryCodegen { - public: - /// \param name - a unique name for this ResourceQuota. - explicit ResourceQuota(const grpc::string& name); - ResourceQuota(); - ~ResourceQuota(); - - /// Resize this \a ResourceQuota to a new size. If \a new_size is smaller - /// than the current size of the pool, memory usage will be monotonically - /// decreased until it falls under \a new_size. - /// No time bound is given for this to occur however. - ResourceQuota& Resize(size_t new_size); - - grpc_resource_quota* c_resource_quota() const { return impl_; } - - private: - ResourceQuota(const ResourceQuota& rhs); - ResourceQuota& operator=(const ResourceQuota& rhs); - - grpc_resource_quota* const impl_; -}; - -} // namespace grpc - -#endif // GRPCXX_RESOURCE_QUOTA_H diff --git a/linx64/include/grpc++/security/auth_context.h b/linx64/include/grpc++/security/auth_context.h deleted file mode 100644 index 71f5d6e5..00000000 --- a/linx64/include/grpc++/security/auth_context.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SECURITY_AUTH_CONTEXT_H -#define GRPCXX_SECURITY_AUTH_CONTEXT_H - -#include - -#endif // GRPCXX_SECURITY_AUTH_CONTEXT_H diff --git a/linx64/include/grpc++/security/auth_metadata_processor.h b/linx64/include/grpc++/security/auth_metadata_processor.h deleted file mode 100644 index a49e30f8..00000000 --- a/linx64/include/grpc++/security/auth_metadata_processor.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * - * 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 GRPCXX_SECURITY_AUTH_METADATA_PROCESSOR_H -#define GRPCXX_SECURITY_AUTH_METADATA_PROCESSOR_H - -#include - -#include -#include -#include - -namespace grpc { - -/// Interface allowing custom server-side authorization based on credentials -/// encoded in metadata. Objects of this type can be passed to -/// \a ServerCredentials::SetAuthMetadataProcessor(). -class AuthMetadataProcessor { - public: - typedef std::multimap InputMetadata; - typedef std::multimap OutputMetadata; - - virtual ~AuthMetadataProcessor() {} - - /// If this method returns true, the \a Process function will be scheduled in - /// a different thread from the one processing the call. - virtual bool IsBlocking() const { return true; } - - /// context is read/write: it contains the properties of the channel peer and - /// it is the job of the Process method to augment it with properties derived - /// from the passed-in auth_metadata. - /// consumed_auth_metadata needs to be filled with metadata that has been - /// consumed by the processor and will be removed from the call. - /// response_metadata is the metadata that will be sent as part of the - /// response. - /// If the return value is not Status::OK, the rpc call will be aborted with - /// the error code and error message sent back to the client. - virtual Status Process(const InputMetadata& auth_metadata, - AuthContext* context, - OutputMetadata* consumed_auth_metadata, - OutputMetadata* response_metadata) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_SECURITY_AUTH_METADATA_PROCESSOR_H diff --git a/linx64/include/grpc++/security/credentials.h b/linx64/include/grpc++/security/credentials.h deleted file mode 100644 index 92330d42..00000000 --- a/linx64/include/grpc++/security/credentials.h +++ /dev/null @@ -1,224 +0,0 @@ -/* - * - * 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 GRPCXX_SECURITY_CREDENTIALS_H -#define GRPCXX_SECURITY_CREDENTIALS_H - -#include -#include - -#include -#include -#include -#include - -struct grpc_call; - -namespace grpc { -class ChannelArguments; -class Channel; -class SecureChannelCredentials; -class CallCredentials; -class SecureCallCredentials; - -/// A channel credentials object encapsulates all the state needed by a client -/// to authenticate with a server for a given channel. -/// It can make various assertions, e.g., about the client’s identity, role -/// for all the calls on that channel. -/// -/// \see https://grpc.io/docs/guides/auth.html -class ChannelCredentials : private GrpcLibraryCodegen { - public: - ChannelCredentials(); - ~ChannelCredentials(); - - protected: - friend std::shared_ptr CompositeChannelCredentials( - const std::shared_ptr& channel_creds, - const std::shared_ptr& call_creds); - - virtual SecureChannelCredentials* AsSecureCredentials() = 0; - - private: - friend std::shared_ptr CreateCustomChannel( - const grpc::string& target, - const std::shared_ptr& creds, - const ChannelArguments& args); - - virtual std::shared_ptr CreateChannel( - const grpc::string& target, const ChannelArguments& args) = 0; -}; - -/// A call credentials object encapsulates the state needed by a client to -/// authenticate with a server for a given call on a channel. -/// -/// \see https://grpc.io/docs/guides/auth.html -class CallCredentials : private GrpcLibraryCodegen { - public: - CallCredentials(); - ~CallCredentials(); - - /// Apply this instance's credentials to \a call. - virtual bool ApplyToCall(grpc_call* call) = 0; - - protected: - friend std::shared_ptr CompositeChannelCredentials( - const std::shared_ptr& channel_creds, - const std::shared_ptr& call_creds); - - friend std::shared_ptr CompositeCallCredentials( - const std::shared_ptr& creds1, - const std::shared_ptr& creds2); - - virtual SecureCallCredentials* AsSecureCredentials() = 0; -}; - -/// Options used to build SslCredentials. -struct SslCredentialsOptions { - /// The buffer containing the PEM encoding of the server root certificates. If - /// this parameter is empty, the default roots will be used. The default - /// roots can be overridden using the \a GRPC_DEFAULT_SSL_ROOTS_FILE_PATH - /// environment variable pointing to a file on the file system containing the - /// roots. - grpc::string pem_root_certs; - - /// The buffer containing the PEM encoding of the client's private key. This - /// parameter can be empty if the client does not have a private key. - grpc::string pem_private_key; - - /// The buffer containing the PEM encoding of the client's certificate chain. - /// This parameter can be empty if the client does not have a certificate - /// chain. - grpc::string pem_cert_chain; -}; - -// Factories for building different types of Credentials The functions may -// return empty shared_ptr when credentials cannot be created. If a -// Credentials pointer is returned, it can still be invalid when used to create -// a channel. A lame channel will be created then and all rpcs will fail on it. - -/// Builds credentials with reasonable defaults. -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr GoogleDefaultCredentials(); - -/// Builds SSL Credentials given SSL specific options -std::shared_ptr SslCredentials( - const SslCredentialsOptions& options); - -/// Builds credentials for use when running in GCE -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr GoogleComputeEngineCredentials(); - -/// Constant for maximum auth token lifetime. -constexpr long kMaxAuthTokenLifetimeSecs = 3600; - -/// Builds Service Account JWT Access credentials. -/// json_key is the JSON key string containing the client's private key. -/// token_lifetime_seconds is the lifetime in seconds of each Json Web Token -/// (JWT) created with this credentials. It should not exceed -/// \a kMaxAuthTokenLifetimeSecs or will be cropped to this value. -std::shared_ptr ServiceAccountJWTAccessCredentials( - const grpc::string& json_key, - long token_lifetime_seconds = kMaxAuthTokenLifetimeSecs); - -/// Builds refresh token credentials. -/// json_refresh_token is the JSON string containing the refresh token along -/// with a client_id and client_secret. -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr GoogleRefreshTokenCredentials( - const grpc::string& json_refresh_token); - -/// Builds access token credentials. -/// access_token is an oauth2 access token that was fetched using an out of band -/// mechanism. -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr AccessTokenCredentials( - const grpc::string& access_token); - -/// Builds IAM credentials. -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr GoogleIAMCredentials( - const grpc::string& authorization_token, - const grpc::string& authority_selector); - -/// Combines a channel credentials and a call credentials into a composite -/// channel credentials. -std::shared_ptr CompositeChannelCredentials( - const std::shared_ptr& channel_creds, - const std::shared_ptr& call_creds); - -/// Combines two call credentials objects into a composite call credentials. -std::shared_ptr CompositeCallCredentials( - const std::shared_ptr& creds1, - const std::shared_ptr& creds2); - -/// Credentials for an unencrypted, unauthenticated channel -std::shared_ptr InsecureChannelCredentials(); - -/// Credentials for a channel using Cronet. -std::shared_ptr CronetChannelCredentials(void* engine); - -/// User defined metadata credentials. -class MetadataCredentialsPlugin { - public: - virtual ~MetadataCredentialsPlugin() {} - - /// If this method returns true, the Process function will be scheduled in - /// a different thread from the one processing the call. - virtual bool IsBlocking() const { return true; } - - /// Type of credentials this plugin is implementing. - virtual const char* GetType() const { return ""; } - - /// Gets the auth metatada produced by this plugin. - /// The fully qualified method name is: - /// service_url + "/" + method_name. - /// The channel_auth_context contains (among other things), the identity of - /// the server. - virtual Status GetMetadata( - grpc::string_ref service_url, grpc::string_ref method_name, - const AuthContext& channel_auth_context, - std::multimap* metadata) = 0; -}; - -std::shared_ptr MetadataCredentialsFromPlugin( - std::unique_ptr plugin); - -} // namespace grpc - -#endif // GRPCXX_SECURITY_CREDENTIALS_H diff --git a/linx64/include/grpc++/security/server_credentials.h b/linx64/include/grpc++/security/server_credentials.h deleted file mode 100644 index 74a61b51..00000000 --- a/linx64/include/grpc++/security/server_credentials.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * - * 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 GRPCXX_SECURITY_SERVER_CREDENTIALS_H -#define GRPCXX_SECURITY_SERVER_CREDENTIALS_H - -#include -#include - -#include -#include -#include - -struct grpc_server; - -namespace grpc { -class Server; - -/// Wrapper around \a grpc_server_credentials, a way to authenticate a server. -class ServerCredentials { - public: - virtual ~ServerCredentials(); - - /// This method is not thread-safe and has to be called before the server is - /// started. The last call to this function wins. - virtual void SetAuthMetadataProcessor( - const std::shared_ptr& processor) = 0; - - private: - friend class ::grpc::Server; - - /// Tries to bind \a server to the given \a addr (eg, localhost:1234, - /// 192.168.1.1:31416, [::1]:27182, etc.) - /// - /// \return bound port number on sucess, 0 on failure. - // TODO(dgq): the "port" part seems to be a misnomer. - virtual int AddPortToServer(const grpc::string& addr, - grpc_server* server) = 0; -}; - -/// Options to create ServerCredentials with SSL -struct SslServerCredentialsOptions { - /// \warning Deprecated - SslServerCredentialsOptions() - : force_client_auth(false), - client_certificate_request(GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE) {} - SslServerCredentialsOptions( - grpc_ssl_client_certificate_request_type request_type) - : force_client_auth(false), client_certificate_request(request_type) {} - - struct PemKeyCertPair { - grpc::string private_key; - grpc::string cert_chain; - }; - grpc::string pem_root_certs; - std::vector pem_key_cert_pairs; - /// \warning Deprecated - bool force_client_auth; - - /// If both \a force_client_auth and \a client_certificate_request - /// fields are set, \a force_client_auth takes effect, i.e. - /// \a REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY - /// will be enforced. - grpc_ssl_client_certificate_request_type client_certificate_request; -}; - -/// Builds SSL ServerCredentials given SSL specific options -std::shared_ptr SslServerCredentials( - const SslServerCredentialsOptions& options); - -/// Builds insecure server credentials. -std::shared_ptr InsecureServerCredentials(); - -} // namespace grpc - -#endif // GRPCXX_SECURITY_SERVER_CREDENTIALS_H diff --git a/linx64/include/grpc++/server.h b/linx64/include/grpc++/server.h deleted file mode 100644 index 0a3aae82..00000000 --- a/linx64/include/grpc++/server.h +++ /dev/null @@ -1,226 +0,0 @@ -/* - * - * 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 GRPCXX_SERVER_H -#define GRPCXX_SERVER_H - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct grpc_server; - -namespace grpc { - -class AsyncGenericService; -class HealthCheckServiceInterface; -class ServerContext; -class ServerInitializer; - -/// Represents a gRPC server. -/// -/// Use a \a grpc::ServerBuilder to create, configure, and start -/// \a Server instances. -class Server final : public ServerInterface, private GrpcLibraryCodegen { - public: - ~Server(); - - /// Block until the server shuts down. - /// - /// \warning The server must be either shutting down or some other thread must - /// call \a Shutdown for this function to ever return. - void Wait() override; - - /// Global callbacks are a set of hooks that are called when server - /// events occur. \a SetGlobalCallbacks method is used to register - /// the hooks with gRPC. Note that - /// the \a GlobalCallbacks instance will be shared among all - /// \a Server instances in an application and can be set exactly - /// once per application. - class GlobalCallbacks { - public: - virtual ~GlobalCallbacks() {} - /// Called before server is created. - virtual void UpdateArguments(ChannelArguments* args) {} - /// Called before application callback for each synchronous server request - virtual void PreSynchronousRequest(ServerContext* context) = 0; - /// Called after application callback for each synchronous server request - virtual void PostSynchronousRequest(ServerContext* context) = 0; - /// Called before server is started. - virtual void PreServerStart(Server* server) {} - /// Called after a server port is added. - virtual void AddPort(Server* server, const grpc::string& addr, - ServerCredentials* creds, int port) {} - }; - /// Set the global callback object. Can only be called once per application. - /// Does not take ownership of callbacks, and expects the pointed to object - /// to be alive until all server objects in the process have been destroyed. - /// The same \a GlobalCallbacks object will be used throughout the - /// application and is shared among all \a Server objects. - static void SetGlobalCallbacks(GlobalCallbacks* callbacks); - - // Returns a \em raw pointer to the underlying \a grpc_server instance. - grpc_server* c_server(); - - /// Returns the health check service. - HealthCheckServiceInterface* GetHealthCheckService() const { - return health_check_service_.get(); - } - - /// Establish a channel for in-process communication - std::shared_ptr InProcessChannel(const ChannelArguments& args); - - private: - friend class AsyncGenericService; - friend class ServerBuilder; - friend class ServerInitializer; - - class SyncRequest; - class AsyncRequest; - class ShutdownRequest; - - /// SyncRequestThreadManager is an implementation of ThreadManager. This class - /// is responsible for polling for incoming RPCs and calling the RPC handlers. - /// This is only used in case of a Sync server (i.e a server exposing a sync - /// interface) - class SyncRequestThreadManager; - - class UnimplementedAsyncRequestContext; - class UnimplementedAsyncRequest; - class UnimplementedAsyncResponse; - - /// Server constructors. To be used by \a ServerBuilder only. - /// - /// \param max_message_size Maximum message length that the channel can - /// receive. - /// - /// \param args The channel args - /// - /// \param sync_server_cqs The completion queues to use if the server is a - /// synchronous server (or a hybrid server). The server polls for new RPCs on - /// these queues - /// - /// \param min_pollers The minimum number of polling threads per server - /// completion queue (in param sync_server_cqs) to use for listening to - /// incoming requests (used only in case of sync server) - /// - /// \param max_pollers The maximum number of polling threads per server - /// completion queue (in param sync_server_cqs) to use for listening to - /// incoming requests (used only in case of sync server) - /// - /// \param sync_cq_timeout_msec The timeout to use when calling AsyncNext() on - /// server completion queues passed via sync_server_cqs param. - Server(int max_message_size, ChannelArguments* args, - std::shared_ptr>> - sync_server_cqs, - int min_pollers, int max_pollers, int sync_cq_timeout_msec); - - /// Register a service. This call does not take ownership of the service. - /// The service must exist for the lifetime of the Server instance. - bool RegisterService(const grpc::string* host, Service* service) override; - - /// Register a generic service. This call does not take ownership of the - /// service. The service must exist for the lifetime of the Server instance. - void RegisterAsyncGenericService(AsyncGenericService* service) override; - - /// Try binding the server to the given \a addr endpoint - /// (port, and optionally including IP address to bind to). - /// - /// It can be invoked multiple times. Should be used before - /// starting the server. - /// - /// \param addr The address to try to bind to the server (eg, localhost:1234, - /// 192.168.1.1:31416, [::1]:27182, etc.). - /// \param creds The credentials associated with the server. - /// - /// \return bound port number on success, 0 on failure. - /// - /// \warning It is an error to call this method on an already started server. - int AddListeningPort(const grpc::string& addr, - ServerCredentials* creds) override; - - /// Start the server. - /// - /// \param cqs Completion queues for handling asynchronous services. The - /// caller is required to keep all completion queues live until the server is - /// destroyed. - /// \param num_cqs How many completion queues does \a cqs hold. - void Start(ServerCompletionQueue** cqs, size_t num_cqs) override; - - void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) override; - - void ShutdownInternal(gpr_timespec deadline) override; - - int max_receive_message_size() const override { - return max_receive_message_size_; - }; - - grpc_server* server() override { return server_; }; - - ServerInitializer* initializer(); - - const int max_receive_message_size_; - - /// The following completion queues are ONLY used in case of Sync API - /// i.e. if the server has any services with sync methods. The server uses - /// these completion queues to poll for new RPCs - std::shared_ptr>> - sync_server_cqs_; - - /// List of \a ThreadManager instances (one for each cq in - /// the \a sync_server_cqs) - std::vector> sync_req_mgrs_; - - // Sever status - std::mutex mu_; - bool started_; - bool shutdown_; - bool shutdown_notified_; // Was notify called on the shutdown_cv_ - - std::condition_variable shutdown_cv_; - - std::shared_ptr global_callbacks_; - - std::vector services_; - bool has_generic_service_; - - // Pointer to the wrapped grpc_server. - grpc_server* server_; - - std::unique_ptr server_initializer_; - - std::unique_ptr health_check_service_; - bool health_check_service_disabled_; -}; - -} // namespace grpc - -#endif // GRPCXX_SERVER_H diff --git a/linx64/include/grpc++/server_builder.h b/linx64/include/grpc++/server_builder.h deleted file mode 100644 index eafd6361..00000000 --- a/linx64/include/grpc++/server_builder.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * - * Copyright 2015-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. - * - */ - -#ifndef GRPCXX_SERVER_BUILDER_H -#define GRPCXX_SERVER_BUILDER_H - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -struct grpc_resource_quota; - -namespace grpc { - -class AsyncGenericService; -class ResourceQuota; -class CompletionQueue; -class RpcService; -class Server; -class ServerCompletionQueue; -class ServerCredentials; -class Service; - -namespace testing { -class ServerBuilderPluginTest; -} // namespace testing - -/// A builder class for the creation and startup of \a grpc::Server instances. -class ServerBuilder { - public: - ServerBuilder(); - ~ServerBuilder(); - - /// Options for synchronous servers. - enum SyncServerOption { - NUM_CQS, ///< Number of completion queues. - MIN_POLLERS, ///< Minimum number of polling threads. - MAX_POLLERS, ///< Maximum number of polling threads. - CQ_TIMEOUT_MSEC ///< Completion queue timeout in milliseconds. - }; - - /// Register a service. This call does not take ownership of the service. - /// The service must exist for the lifetime of the \a Server instance returned - /// by \a BuildAndStart(). - /// Matches requests with any :authority - ServerBuilder& RegisterService(Service* service); - - /// Register a generic service. - /// Matches requests with any :authority - ServerBuilder& RegisterAsyncGenericService(AsyncGenericService* service); - - /// Register a service. This call does not take ownership of the service. - /// The service must exist for the lifetime of the \a Server instance returned - /// by \a BuildAndStart(). - /// Only matches requests with :authority \a host - ServerBuilder& RegisterService(const grpc::string& host, Service* service); - - /// Set max receive message size in bytes. - ServerBuilder& SetMaxReceiveMessageSize(int max_receive_message_size) { - max_receive_message_size_ = max_receive_message_size; - return *this; - } - - /// Set max send message size in bytes. - ServerBuilder& SetMaxSendMessageSize(int max_send_message_size) { - max_send_message_size_ = max_send_message_size; - return *this; - } - - /// \deprecated For backward compatibility. - ServerBuilder& SetMaxMessageSize(int max_message_size) { - return SetMaxReceiveMessageSize(max_message_size); - } - - /// Set the support status for compression algorithms. All algorithms are - /// enabled by default. - /// - /// Incoming calls compressed with an unsupported algorithm will fail with - /// \a GRPC_STATUS_UNIMPLEMENTED. - ServerBuilder& SetCompressionAlgorithmSupportStatus( - grpc_compression_algorithm algorithm, bool enabled); - - /// The default compression level to use for all channel calls in the - /// absence of a call-specific level. - ServerBuilder& SetDefaultCompressionLevel(grpc_compression_level level); - - /// The default compression algorithm to use for all channel calls in the - /// absence of a call-specific level. Note that it overrides any compression - /// level set by \a SetDefaultCompressionLevel. - ServerBuilder& SetDefaultCompressionAlgorithm( - grpc_compression_algorithm algorithm); - - /// Set the attached buffer pool for this server - ServerBuilder& SetResourceQuota(const ResourceQuota& resource_quota); - - ServerBuilder& SetOption(std::unique_ptr option); - - /// Only useful if this is a Synchronous server. - ServerBuilder& SetSyncServerOption(SyncServerOption option, int value); - - /// Add a channel argument (an escape hatch to tuning core library parameters - /// directly) - template - ServerBuilder& AddChannelArgument(const grpc::string& arg, const T& value) { - return SetOption(MakeChannelArgumentOption(arg, value)); - } - - /// Enlists an endpoint \a addr (port with an optional IP address) to - /// bind the \a grpc::Server object to be created to. - /// - /// It can be invoked multiple times. - /// - /// \param addr_uri The address to try to bind to the server in URI form. If - /// the scheme name is omitted, "dns:///" is assumed. Valid values include - /// dns:///localhost:1234, / 192.168.1.1:31416, dns:///[::1]:27182, etc.). - /// \params creds The credentials associated with the server. - /// \param selected_port[out] If not `nullptr`, gets populated with the port - /// number bound to the \a grpc::Server for the corresponding endpoint after - /// it is successfully bound, 0 otherwise. - /// - // TODO(dgq): the "port" part seems to be a misnomer. - ServerBuilder& AddListeningPort(const grpc::string& addr_uri, - std::shared_ptr creds, - int* selected_port = nullptr); - - /// Add a completion queue for handling asynchronous services. - /// - /// Caller is required to shutdown the server prior to shutting down the - /// returned completion queue. A typical usage scenario: - /// - /// // While building the server: - /// ServerBuilder builder; - /// ... - /// cq_ = builder.AddCompletionQueue(); - /// server_ = builder.BuildAndStart(); - /// - /// // While shutting down the server; - /// server_->Shutdown(); - /// cq_->Shutdown(); // Always *after* the associated server's Shutdown()! - /// - /// \param is_frequently_polled This is an optional parameter to inform gRPC - /// library about whether this completion queue would be frequently polled - /// (i.e. by calling \a Next() or \a AsyncNext()). The default value is - /// 'true' and is the recommended setting. Setting this to 'false' (i.e. - /// not polling the completion queue frequently) will have a significantly - /// negative performance impact and hence should not be used in production - /// use cases. - std::unique_ptr AddCompletionQueue( - bool is_frequently_polled = true); - - /// Return a running server which is ready for processing calls. - std::unique_ptr BuildAndStart(); - - /// For internal use only: Register a ServerBuilderPlugin factory function. - static void InternalAddPluginFactory( - std::unique_ptr (*CreatePlugin)()); - - /// Enable a server workaround. Do not use unless you know what the workaround - /// does. For explanation and detailed descriptions of workarounds, see - /// doc/workarounds.md. - ServerBuilder& EnableWorkaround(grpc_workaround_list id); - - private: - friend class ::grpc::testing::ServerBuilderPluginTest; - - struct Port { - grpc::string addr; - std::shared_ptr creds; - int* selected_port; - }; - - struct SyncServerSettings { - SyncServerSettings() - : num_cqs(1), min_pollers(1), max_pollers(2), cq_timeout_msec(10000) {} - - /// Number of server completion queues to create to listen to incoming RPCs. - int num_cqs; - - /// Minimum number of threads per completion queue that should be listening - /// to incoming RPCs. - int min_pollers; - - /// Maximum number of threads per completion queue that can be listening to - /// incoming RPCs. - int max_pollers; - - /// The timeout for server completion queue's AsyncNext call. - int cq_timeout_msec; - }; - - typedef std::unique_ptr HostString; - struct NamedService { - explicit NamedService(Service* s) : service(s) {} - NamedService(const grpc::string& h, Service* s) - : host(new grpc::string(h)), service(s) {} - HostString host; - Service* service; - }; - - int max_receive_message_size_; - int max_send_message_size_; - std::vector> options_; - std::vector> services_; - std::vector ports_; - - SyncServerSettings sync_server_settings_; - - /// List of completion queues added via \a AddCompletionQueue method. - std::vector cqs_; - - std::shared_ptr creds_; - std::vector> plugins_; - grpc_resource_quota* resource_quota_; - AsyncGenericService* generic_service_; - struct { - bool is_set; - grpc_compression_level level; - } maybe_default_compression_level_; - struct { - bool is_set; - grpc_compression_algorithm algorithm; - } maybe_default_compression_algorithm_; - uint32_t enabled_compression_algorithms_bitset_; -}; - -} // namespace grpc - -#endif // GRPCXX_SERVER_BUILDER_H diff --git a/linx64/include/grpc++/server_context.h b/linx64/include/grpc++/server_context.h deleted file mode 100644 index f9b98e18..00000000 --- a/linx64/include/grpc++/server_context.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SERVER_CONTEXT_H -#define GRPCXX_SERVER_CONTEXT_H - -#include - -#endif // GRPCXX_SERVER_CONTEXT_H diff --git a/linx64/include/grpc++/server_posix.h b/linx64/include/grpc++/server_posix.h deleted file mode 100644 index 6cafcff5..00000000 --- a/linx64/include/grpc++/server_posix.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_SERVER_POSIX_H -#define GRPCXX_SERVER_POSIX_H - -#include - -#include -#include - -namespace grpc { - -#ifdef GPR_SUPPORT_CHANNELS_FROM_FD - -/// Add a new client to a \a Server communicating over the given -/// file descriptor. -/// -/// \param server The server to add the client to. -/// \param fd The file descriptor representing a socket. -void AddInsecureChannelFromFd(Server* server, int fd); - -#endif // GPR_SUPPORT_CHANNELS_FROM_FD - -} // namespace grpc - -#endif // GRPCXX_SERVER_POSIX_H diff --git a/linx64/include/grpc++/support/async_stream.h b/linx64/include/grpc++/support/async_stream.h deleted file mode 100644 index f2cab848..00000000 --- a/linx64/include/grpc++/support/async_stream.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_ASYNC_STREAM_H -#define GRPCXX_SUPPORT_ASYNC_STREAM_H - -#include - -#endif // GRPCXX_SUPPORT_ASYNC_STREAM_H diff --git a/linx64/include/grpc++/support/async_unary_call.h b/linx64/include/grpc++/support/async_unary_call.h deleted file mode 100644 index 4947c442..00000000 --- a/linx64/include/grpc++/support/async_unary_call.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H -#define GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H - -#include - -#endif // GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H diff --git a/linx64/include/grpc++/support/byte_buffer.h b/linx64/include/grpc++/support/byte_buffer.h deleted file mode 100644 index df16c6a7..00000000 --- a/linx64/include/grpc++/support/byte_buffer.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_BYTE_BUFFER_H -#define GRPCXX_SUPPORT_BYTE_BUFFER_H - -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace grpc { - -/// 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(); - - ByteBuffer& operator=(const ByteBuffer&); - - /// Dump (read) the buffer contents into \a slices. - Status Dump(std::vector* slices) const; - - /// Remove all data. - void Clear(); - - /// Buffer size in bytes. - size_t Length() const; - - /// Swap the state of *this and *other. - void Swap(ByteBuffer* other); - - private: - friend class SerializationTraits; - - // takes ownership - void set_buffer(grpc_byte_buffer* buf) { - if (buffer_) { - Clear(); - } - buffer_ = buf; - } - - // For \a SerializationTraits's usage. - grpc_byte_buffer* buffer() const { return buffer_; } - - grpc_byte_buffer* buffer_; -}; - -template <> -class SerializationTraits { - public: - static Status Deserialize(grpc_byte_buffer* byte_buffer, ByteBuffer* dest) { - dest->set_buffer(byte_buffer); - return Status::OK; - } - static Status Serialize(const ByteBuffer& source, grpc_byte_buffer** buffer, - bool* own_buffer) { - *buffer = grpc_byte_buffer_copy(source.buffer()); - *own_buffer = true; - return Status::OK; - } -}; - -} // namespace grpc - -#endif // GRPCXX_SUPPORT_BYTE_BUFFER_H diff --git a/linx64/include/grpc++/support/channel_arguments.h b/linx64/include/grpc++/support/channel_arguments.h deleted file mode 100644 index 7b6befea..00000000 --- a/linx64/include/grpc++/support/channel_arguments.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H -#define GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H - -#include -#include - -#include -#include -#include - -namespace grpc { -namespace testing { -class ChannelArgumentsTest; -} // namespace testing - -class ResourceQuota; - -/// Options for channel creation. The user can use generic setters to pass -/// key value pairs down to C channel creation code. For gRPC related options, -/// concrete setters are provided. -class ChannelArguments { - public: - ChannelArguments(); - ~ChannelArguments(); - - ChannelArguments(const ChannelArguments& other); - ChannelArguments& operator=(ChannelArguments other) { - Swap(other); - return *this; - } - - void Swap(ChannelArguments& other); - - /// Dump arguments in this instance to \a channel_args. Does not take - /// ownership of \a channel_args. - /// - /// Note that the underlying arguments are shared. Changes made to either \a - /// channel_args or this instance would be reflected on both. - void SetChannelArgs(grpc_channel_args* channel_args) const; - - // gRPC specific channel argument setters - /// Set target name override for SSL host name checking. This option is for - /// testing only and should never be used in production. - void SetSslTargetNameOverride(const grpc::string& name); - // TODO(yangg) add flow control options - /// Set the compression algorithm for the channel. - void SetCompressionAlgorithm(grpc_compression_algorithm algorithm); - - /// Set the socket mutator for the channel. - void SetSocketMutator(grpc_socket_mutator* mutator); - - /// Set the string to prepend to the user agent. - void SetUserAgentPrefix(const grpc::string& user_agent_prefix); - - /// Set the buffer pool to be attached to the constructed channel. - void SetResourceQuota(const ResourceQuota& resource_quota); - - /// Set the max receive and send message sizes. - void SetMaxReceiveMessageSize(int size); - void SetMaxSendMessageSize(int size); - - /// Set LB policy name. - /// Note that if the name resolver returns only balancer addresses, the - /// grpclb LB policy will be used, regardless of what is specified here. - void SetLoadBalancingPolicyName(const grpc::string& lb_policy_name); - - /// Set service config in JSON form. - /// Primarily meant for use in unit tests. - void SetServiceConfigJSON(const grpc::string& service_config_json); - - // Generic channel argument setters. Only for advanced use cases. - /// Set an integer argument \a value under \a key. - void SetInt(const grpc::string& key, int value); - - // Generic channel argument setter. Only for advanced use cases. - /// Set a pointer argument \a value under \a key. Owership is not transferred. - void SetPointer(const grpc::string& key, void* value); - - void SetPointerWithVtable(const grpc::string& key, void* value, - const grpc_arg_pointer_vtable* vtable); - - /// Set a textual argument \a value under \a key. - void SetString(const grpc::string& key, const grpc::string& value); - - /// Return (by value) a C \a grpc_channel_args structure which points to - /// arguments owned by this \a ChannelArguments instance - grpc_channel_args c_channel_args() const { - grpc_channel_args out; - out.num_args = args_.size(); - out.args = args_.empty() ? NULL : const_cast(&args_[0]); - return out; - } - - private: - friend class SecureChannelCredentials; - friend class testing::ChannelArgumentsTest; - - /// Default pointer argument operations. - struct PointerVtableMembers { - static void* Copy(void* in) { return in; } - static void Destroy(grpc_exec_ctx* exec_ctx, void* in) {} - static int Compare(void* a, void* b) { - if (a < b) return -1; - if (a > b) return 1; - return 0; - } - }; - - // Returns empty string when it is not set. - grpc::string GetSslTargetNameOverride() const; - - std::vector args_; - std::list strings_; -}; - -} // namespace grpc - -#endif // GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H diff --git a/linx64/include/grpc++/support/config.h b/linx64/include/grpc++/support/config.h deleted file mode 100644 index b65af312..00000000 --- a/linx64/include/grpc++/support/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_CONFIG_H -#define GRPCXX_SUPPORT_CONFIG_H - -#include - -#endif // GRPCXX_SUPPORT_CONFIG_H diff --git a/linx64/include/grpc++/support/error_details.h b/linx64/include/grpc++/support/error_details.h deleted file mode 100644 index 8925fa84..00000000 --- a/linx64/include/grpc++/support/error_details.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * - * 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_SUPPORT_ERROR_DETAILS_H -#define GRPCXX_SUPPORT_ERROR_DETAILS_H - -#include - -namespace google { -namespace rpc { -class Status; -} // namespace rpc -} // namespace google - -namespace grpc { - -/// Map a \a grpc::Status to a \a google::rpc::Status. -/// The given \a to object will be cleared. -/// On success, returns status with OK. -/// Returns status with \a INVALID_ARGUMENT, if failed to deserialize. -/// Returns status with \a FAILED_PRECONDITION, if \a to is nullptr. -Status ExtractErrorDetails(const Status& from, ::google::rpc::Status* to); - -/// Map \a google::rpc::Status to a \a grpc::Status. -/// Returns OK on success. -/// Returns status with \a FAILED_PRECONDITION if \a to is nullptr. -Status SetErrorDetails(const ::google::rpc::Status& from, Status* to); - -} // namespace grpc - -#endif // GRPCXX_SUPPORT_ERROR_DETAILS_H diff --git a/linx64/include/grpc++/support/slice.h b/linx64/include/grpc++/support/slice.h deleted file mode 100644 index bbf97f28..00000000 --- a/linx64/include/grpc++/support/slice.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_SLICE_H -#define GRPCXX_SUPPORT_SLICE_H - -#include -#include - -namespace grpc { - -/// A wrapper around \a grpc_slice. -/// -/// A slice represents a contiguous reference counted array of bytes. -/// It is cheap to take references to a slice, and it is cheap to create a -/// slice pointing to a subset of another slice. -class Slice final { - public: - /// Construct an empty slice. - Slice(); - /// Destructor - drops one reference. - ~Slice(); - - enum AddRef { ADD_REF }; - /// Construct a slice from \a slice, adding a reference. - Slice(grpc_slice slice, AddRef); - - enum StealRef { STEAL_REF }; - /// Construct a slice from \a slice, stealing a reference. - Slice(grpc_slice slice, StealRef); - - /// Allocate a slice of specified size - Slice(size_t len); - - /// Construct a slice from a copied buffer - Slice(const void* buf, size_t len); - - /// Construct a slice from a copied string - Slice(const grpc::string& str); - - enum StaticSlice { STATIC_SLICE }; - - /// Construct a slice from a static buffer - Slice(const void* buf, size_t len, StaticSlice); - - /// Copy constructor, adds a reference. - Slice(const Slice& other); - - /// Assignment, reference count is unchanged. - Slice& operator=(Slice other) { - std::swap(slice_, other.slice_); - return *this; - } - - /// Create a slice pointing at some data. Calls malloc to allocate a refcount - /// for the object, and arranges that destroy will be called with the - /// user data pointer passed in at destruction. Can be the same as buf or - /// different (e.g., if data is part of a larger structure that must be - /// destroyed when the data is no longer needed) - Slice(void* buf, size_t len, void (*destroy)(void*), void* user_data); - - /// Specialization of above for common case where buf == user_data - Slice(void* buf, size_t len, void (*destroy)(void*)) - : Slice(buf, len, destroy, buf) {} - - /// Similar to the above but has a destroy that also takes slice length - Slice(void* buf, size_t len, void (*destroy)(void*, size_t)); - - /// Byte size. - size_t size() const { return GRPC_SLICE_LENGTH(slice_); } - - /// Raw pointer to the beginning (first element) of the slice. - const uint8_t* begin() const { return GRPC_SLICE_START_PTR(slice_); } - - /// Raw pointer to the end (one byte \em past the last element) of the slice. - const uint8_t* end() const { return GRPC_SLICE_END_PTR(slice_); } - - /// Raw C slice. Caller needs to call grpc_slice_unref when done. - grpc_slice c_slice() const { return grpc_slice_ref(slice_); } - - private: - friend class ByteBuffer; - - grpc_slice slice_; -}; - -} // namespace grpc - -#endif // GRPCXX_SUPPORT_SLICE_H diff --git a/linx64/include/grpc++/support/status.h b/linx64/include/grpc++/support/status.h deleted file mode 100644 index 1fa910a6..00000000 --- a/linx64/include/grpc++/support/status.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_STATUS_H -#define GRPCXX_SUPPORT_STATUS_H - -#include - -#endif // GRPCXX_SUPPORT_STATUS_H diff --git a/linx64/include/grpc++/support/status_code_enum.h b/linx64/include/grpc++/support/status_code_enum.h deleted file mode 100644 index d320c0cf..00000000 --- a/linx64/include/grpc++/support/status_code_enum.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_STATUS_CODE_ENUM_H -#define GRPCXX_SUPPORT_STATUS_CODE_ENUM_H - -#include - -#endif // GRPCXX_SUPPORT_STATUS_CODE_ENUM_H diff --git a/linx64/include/grpc++/support/string_ref.h b/linx64/include/grpc++/support/string_ref.h deleted file mode 100644 index 873be63c..00000000 --- a/linx64/include/grpc++/support/string_ref.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_STRING_REF_H -#define GRPCXX_SUPPORT_STRING_REF_H - -#include - -#endif // GRPCXX_SUPPORT_STRING_REF_H diff --git a/linx64/include/grpc++/support/stub_options.h b/linx64/include/grpc++/support/stub_options.h deleted file mode 100644 index 87843cf3..00000000 --- a/linx64/include/grpc++/support/stub_options.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_STUB_OPTIONS_H -#define GRPCXX_SUPPORT_STUB_OPTIONS_H - -#include - -#endif // GRPCXX_SUPPORT_STUB_OPTIONS_H diff --git a/linx64/include/grpc++/support/sync_stream.h b/linx64/include/grpc++/support/sync_stream.h deleted file mode 100644 index 6a6e0c79..00000000 --- a/linx64/include/grpc++/support/sync_stream.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_SYNC_STREAM_H -#define GRPCXX_SUPPORT_SYNC_STREAM_H - -#include - -#endif // GRPCXX_SUPPORT_SYNC_STREAM_H diff --git a/linx64/include/grpc++/support/time.h b/linx64/include/grpc++/support/time.h deleted file mode 100644 index e47a593a..00000000 --- a/linx64/include/grpc++/support/time.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_TIME_H -#define GRPCXX_SUPPORT_TIME_H - -#include - -#endif // GRPCXX_SUPPORT_TIME_H diff --git a/linx64/include/grpc/byte_buffer.h b/linx64/include/grpc/byte_buffer.h deleted file mode 100644 index 55e191da..00000000 --- a/linx64/include/grpc/byte_buffer.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * - * 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_BYTE_BUFFER_H -#define GRPC_BYTE_BUFFER_H - -#include -#include - -#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_BYTE_BUFFER_H */ diff --git a/linx64/include/grpc/byte_buffer_reader.h b/linx64/include/grpc/byte_buffer_reader.h deleted file mode 100644 index 6bd07847..00000000 --- a/linx64/include/grpc/byte_buffer_reader.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_BYTE_BUFFER_READER_H -#define GRPC_BYTE_BUFFER_READER_H - -#include - -#endif /* GRPC_BYTE_BUFFER_READER_H */ diff --git a/linx64/include/grpc/census.h b/linx64/include/grpc/census.h deleted file mode 100644 index de8e7a66..00000000 --- a/linx64/include/grpc/census.h +++ /dev/null @@ -1,469 +0,0 @@ -/* - * - * Copyright 2015-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. - * - */ - -/** RPC-internal Census API's. These are designed to be generic enough that - * they can (ultimately) be used in many different RPC systems (with differing - * implementations). */ - -#ifndef GRPC_CENSUS_H -#define GRPC_CENSUS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Identify census features that can be enabled via census_initialize(). */ -enum census_features { - CENSUS_FEATURE_NONE = 0, /** Do not enable census. */ - CENSUS_FEATURE_TRACING = 1, /** Enable census tracing. */ - CENSUS_FEATURE_STATS = 2, /** Enable Census stats collection. */ - CENSUS_FEATURE_CPU = 4, /** Enable Census CPU usage collection. */ - CENSUS_FEATURE_ALL = - CENSUS_FEATURE_TRACING | CENSUS_FEATURE_STATS | CENSUS_FEATURE_CPU -}; - -/** Shutdown and startup census subsystem. The 'features' argument should be - * the OR (|) of census_features values. If census fails to initialize, then - * census_initialize() will return -1, otherwise the set of enabled features - * (which may be smaller than that provided in the `features` argument, see - * census_supported()) is returned. It is an error to call census_initialize() - * more than once (without an intervening census_shutdown()). These functions - * are not thread-safe. */ -CENSUSAPI int census_initialize(int features); -CENSUSAPI void census_shutdown(void); - -/** Return the features supported by the current census implementation (not all - * features will be available on all platforms). */ -CENSUSAPI int census_supported(void); - -/** Return the census features currently enabled. */ -CENSUSAPI int census_enabled(void); - -/** - A Census Context is a handle used by Census to represent the current tracing - and stats collection information. Contexts should be propagated across RPC's - (this is the responsibility of the local RPC system). A context is typically - used as the first argument to most census functions. Conceptually, they - should be thought of as specific to a single RPC/thread. The user visible - context representation is that of a collection of key:value string pairs, - each of which is termed a 'tag'; these form the basis against which Census - metrics will be recorded. Keys are unique within a context. */ -typedef struct census_context census_context; - -/** A tag is a key:value pair. Both keys and values are nil-terminated strings, - containing printable ASCII characters (decimal 32-126). Keys must be at - least one character in length. Both keys and values can have at most - CENSUS_MAX_TAG_KB_LEN characters (including the terminating nil). The - maximum number of tags that can be propagated is - CENSUS_MAX_PROPAGATED_TAGS. Users should also remember that some systems - may have limits on, e.g., the number of bytes that can be transmitted as - metadata, and that larger tags means more memory consumed and time in - processing. */ -typedef struct { - const char *key; - const char *value; - uint8_t flags; -} census_tag; - -/** Maximum length of a tag's key or value. */ -#define CENSUS_MAX_TAG_KV_LEN 255 -/** Maximum number of propagatable tags. */ -#define CENSUS_MAX_PROPAGATED_TAGS 255 - -/** Tag flags. */ -#define CENSUS_TAG_PROPAGATE 1 /** Tag should be propagated over RPC */ -#define CENSUS_TAG_STATS 2 /** Tag will be used for statistics aggregation */ -#define CENSUS_TAG_RESERVED 4 /** Reserved for internal use. */ -/** Flag values 4,8,16,32,64,128 are reserved for future/internal use. Clients - should not use or rely on their values. */ - -#define CENSUS_TAG_IS_PROPAGATED(flags) (flags & CENSUS_TAG_PROPAGATE) -#define CENSUS_TAG_IS_STATS(flags) (flags & CENSUS_TAG_STATS) - -/** An instance of this structure is kept by every context, and records the - basic information associated with the creation of that context. */ -typedef struct { - int n_propagated_tags; /** number of propagated tags */ - int n_local_tags; /** number of non-propagated (local) tags */ - int n_deleted_tags; /** number of tags that were deleted */ - int n_added_tags; /** number of tags that were added */ - int n_modified_tags; /** number of tags that were modified */ - int n_invalid_tags; /** number of tags with bad keys or values (e.g. - longer than CENSUS_MAX_TAG_KV_LEN) */ - int n_ignored_tags; /** number of tags ignored because of - CENSUS_MAX_PROPAGATED_TAGS limit. */ -} census_context_status; - -/** Create a new context, adding and removing tags from an existing context. - This will copy all tags from the 'tags' input, so it is recommended - to add as many tags in a single operation as is practical for the client. - @param base Base context to build upon. Can be NULL. - @param tags A set of tags to be added/changed/deleted. Tags with keys that - are in 'tags', but not 'base', are added to the context. Keys that are in - both 'tags' and 'base' will have their value/flags modified. Tags with keys - in both, but with NULL values, will be deleted from the context. Tags with - invalid (too long or short) keys or values will be ignored. - If adding a tag will result in more than CENSUS_MAX_PROPAGATED_TAGS in either - binary or non-binary tags, they will be ignored, as will deletions of - tags that don't exist. - @param ntags number of tags in 'tags' - @param status If not NULL, will return a pointer to a census_context_status - structure containing information about the new context and status of the - tags used in its creation. - @return A new, valid census_context. -*/ -CENSUSAPI census_context *census_context_create( - const census_context *base, const census_tag *tags, int ntags, - census_context_status const **status); - -/** Destroy a context. Once this function has been called, the context cannot - be reused. */ -CENSUSAPI void census_context_destroy(census_context *context); - -/** Get a pointer to the original status from the context creation. */ -CENSUSAPI const census_context_status *census_context_get_status( - const census_context *context); - -/** Structure used for iterating over the tags in a context. API clients should - not use or reference internal fields - neither their contents or - presence/absence are guaranteed. */ -typedef struct { - const census_context *context; - int base; - int index; - char *kvm; -} census_context_iterator; - -/** Initialize a census_tag_iterator. Must be called before first use. */ -CENSUSAPI void census_context_initialize_iterator( - const census_context *context, census_context_iterator *iterator); - -/** Get the contents of the "next" tag in the context. If there are no more - tags, returns 0 (and 'tag' contents will be unchanged), otherwise returns 1. - */ -CENSUSAPI int census_context_next_tag(census_context_iterator *iterator, - census_tag *tag); - -/** Get a context tag by key. Returns 0 if the key is not present. */ -CENSUSAPI int census_context_get_tag(const census_context *context, - const char *key, census_tag *tag); - -/** Tag set encode/decode functionality. These functions are intended - for use by RPC systems only, for purposes of transmitting/receiving contexts. - */ - -/** Encode a context into a buffer. - @param context context to be encoded - @param buffer buffer into which the context will be encoded. - @param buf_size number of available bytes in buffer. - @return The number of buffer bytes consumed for the encoded context, or - zero if the buffer was of insufficient size. */ -CENSUSAPI size_t census_context_encode(const census_context *context, - char *buffer, size_t buf_size); - -/** Decode context buffer encoded with census_context_encode(). Returns NULL - if there is an error in parsing either buffer. */ -CENSUSAPI census_context *census_context_decode(const char *buffer, - size_t size); - -/** Distributed traces can have a number of options. */ -enum census_trace_mask_values { - CENSUS_TRACE_MASK_NONE = 0, /** Default, empty flags */ - CENSUS_TRACE_MASK_IS_SAMPLED = 1 /** RPC tracing enabled for this context. */ -}; - -/** Get the current trace mask associated with this context. The value returned - will be the logical OR of census_trace_mask_values values. */ -CENSUSAPI int census_trace_mask(const census_context *context); - -/** Set the trace mask associated with a context. */ -CENSUSAPI void census_set_trace_mask(int trace_mask); - -/** The concept of "operation" is a fundamental concept for Census. In an RPC - system, an operation typically represents a single RPC, or a significant - sub-part thereof (e.g. a single logical "read" RPC to a distributed storage - system might do several other actions in parallel, from looking up metadata - indices to making requests of other services - each of these could be a - sub-operation with the larger RPC operation). Census uses operations for the - following: - - CPU accounting: If enabled, census will measure the thread CPU time - consumed between operation start and end times. - - Active operations: Census will maintain information on all currently - active operations. - - Distributed tracing: Each operation serves as a logical trace span. - - Stats collection: Stats are broken down by operation (e.g. latency - breakdown for each unique RPC path). - - The following functions serve to delineate the start and stop points for - each logical operation. */ - -/** - This structure represents a timestamp as used by census to record the time - at which an operation begins. -*/ -typedef struct { - /** Use gpr_timespec for default implementation. High performance - * implementations should use a cycle-counter based timestamp. */ - gpr_timespec ts; -} census_timestamp; - -/** - Mark the beginning of an RPC operation. The information required to call the - functions to record the start of RPC operations (both client and server) may - not be callable at the true start time of the operation, due to information - not being available (e.g. the census context data will not be available in a - server RPC until at least initial metadata has been processed). To ensure - correct CPU accounting and latency recording, RPC systems can call this - function to get the timestamp of operation beginning. This can later be used - as an argument to census_start_{client,server}_rpc_op(). NB: for correct - CPU accounting, the system must guarantee that the same thread is used - for all request processing after this function is called. - - @return A timestamp representing the operation start time. -*/ -CENSUSAPI census_timestamp census_start_rpc_op_timestamp(void); - -/** - Represent functions to map RPC name ID to service/method names. Census - breaks down all RPC stats by service and method names. We leave the - definition and format of these to the RPC system. For efficiency purposes, - we encode these as a single 64 bit identifier, and allow the RPC system to - provide a structure for functions that can convert these to service and - method strings. - - TODO(aveitch): Instead of providing this as an argument to the rpc_start_op() - functions, maybe it should be set once at census initialization. -*/ -typedef struct { - const char *(*get_rpc_service_name)(int64_t id); - const char *(*get_rpc_method_name)(int64_t id); -} census_rpc_name_info; - -/** - Start a client rpc operation. This function should be called as early in the - client RPC path as possible. This function will create a new context. If - the context argument is non-null, then the new context will inherit all - its properties, with the following changes: - - create a new operation ID for the new context, marking it as a child of - the previous operation. - - use the new RPC path and peer information for tracing and stats - collection purposes, rather than those from the original context - - If the context argument is NULL, then a new root context is created. This - is particularly important for tracing purposes (the trace spans generated - will be unassociated with any other trace spans, except those - downstream). The trace_mask will be used for tracing operations associated - with the new context. - - In some RPC systems (e.g. where load balancing is used), peer information - may not be available at the time the operation starts. In this case, use a - NULL value for peer, and set it later using the - census_set_rpc_client_peer() function. - - @param context The parent context. Can be NULL. - @param rpc_name_id The rpc name identifier to be associated with this RPC. - @param rpc_name_info Used to decode rpc_name_id. - @param peer RPC peer. If not available at the time, NULL can be used, - and a later census_set_rpc_client_peer() call made. - @param trace_mask An OR of census_trace_mask_values values. Only used in - the creation of a new root context (context == NULL). - @param start_time A timestamp returned from census_start_rpc_op_timestamp(). - Can be NULL. Used to set the true time the operation - begins. - - @return A new census context. - */ -CENSUSAPI census_context *census_start_client_rpc_op( - const census_context *context, int64_t rpc_name_id, - const census_rpc_name_info *rpc_name_info, const char *peer, int trace_mask, - const census_timestamp *start_time); - -/** - Add peer information to a context representing a client RPC operation. -*/ -CENSUSAPI void census_set_rpc_client_peer(census_context *context, - const char *peer); - -/** - Start a server RPC operation. Returns a new context to be used in future - census calls. If buffer is non-NULL, then the buffer contents should - represent the client context, as generated by census_context_serialize(). - If buffer is NULL, a new root context is created. - - @param buffer Buffer containing bytes output from census_context_serialize(). - @param rpc_name_id The rpc name identifier to be associated with this RPC. - @param rpc_name_info Used to decode rpc_name_id. - @param peer RPC peer. - @param trace_mask An OR of census_trace_mask_values values. Only used in - the creation of a new root context (buffer == NULL). - @param start_time A timestamp returned from census_start_rpc_op_timestamp(). - Can be NULL. Used to set the true time the operation - begins. - - @return A new census context. - */ -CENSUSAPI census_context *census_start_server_rpc_op( - const char *buffer, int64_t rpc_name_id, - const census_rpc_name_info *rpc_name_info, const char *peer, int trace_mask, - census_timestamp *start_time); - -/** - Start a new, non-RPC operation. In general, this function works very - similarly to census_start_client_rpc_op, with the primary difference being - the replacement of host/path information with the more generic family/name - tags. If the context argument is non-null, then the new context will - inherit all its properties, with the following changes: - - create a new operation ID for the new context, marking it as a child of - the previous operation. - - use the family and name information for tracing and stats collection - purposes, rather than those from the original context - - If the context argument is NULL, then a new root context is created. This - is particularly important for tracing purposes (the trace spans generated - will be unassociated with any other trace spans, except those - downstream). The trace_mask will be used for tracing - operations associated with the new context. - - @param context The base context. Can be NULL. - @param family Family name to associate with the trace - @param name Name within family to associate with traces/stats - @param trace_mask An OR of census_trace_mask_values values. Only used if - context is NULL. - - @return A new census context. - */ -CENSUSAPI census_context *census_start_op(census_context *context, - const char *family, const char *name, - int trace_mask); - -/** - End an operation started by any of the census_start_*_op*() calls. The - context used in this call will no longer be valid once this function - completes. - - @param context Context associated with operation which is ending. - @param status status associated with the operation. Not interpreted by - census. -*/ -CENSUSAPI void census_end_op(census_context *context, int status); - -#define CENSUS_TRACE_RECORD_START_OP ((uint32_t)0) -#define CENSUS_TRACE_RECORD_END_OP ((uint32_t)1) - -/** Insert a trace record into the trace stream. The record consists of an - arbitrary size buffer, the size of which is provided in 'n'. - @param context Trace context - @param type User-defined type to associate with trace entry. - @param buffer Pointer to buffer to use - @param n Number of bytes in buffer -*/ -CENSUSAPI void census_trace_print(census_context *context, uint32_t type, - const char *buffer, size_t n); - -/** Trace record. */ -typedef struct { - census_timestamp timestamp; /** Time of record creation */ - uint64_t trace_id; /** Trace ID associated with record */ - uint64_t op_id; /** Operation ID associated with record */ - uint32_t type; /** Type (as used in census_trace_print() */ - const char *buffer; /** Buffer (from census_trace_print() */ - size_t buf_size; /** Number of bytes inside buffer */ -} census_trace_record; - -/** Start a scan of existing trace records. While a scan is ongoing, addition - of new trace records will be blocked if the underlying trace buffers - fill up, so trace processing systems should endeavor to complete - reading as soon as possible. - @param consume if non-zero, indicates that reading records also "consumes" - the previously read record - i.e. releases space in the trace log - while scanning is ongoing. - @returns 0 on success, non-zero on failure (e.g. if a scan is already ongoing) -*/ -CENSUSAPI int census_trace_scan_start(int consume); - -/** Get a trace record. The data pointed to by the trace buffer is guaranteed - stable until the next census_get_trace_record() call (if the consume - argument to census_trace_scan_start was non-zero) or census_trace_scan_end() - is called (otherwise). - @param trace_record structure that will be filled in with oldest trace record. - @returns -1 if an error occurred (e.g. no previous call to - census_trace_scan_start()), 0 if there is no more trace data (and - trace_record will not be modified) or 1 otherwise. -*/ -CENSUSAPI int census_get_trace_record(census_trace_record *trace_record); - -/** End a scan previously started by census_trace_scan_start() */ -CENSUSAPI void census_trace_scan_end(); - -/** Core stats collection API's. The following concepts are used: - * Resource: Users record measurements for a single resource. Examples - include RPC latency, CPU seconds consumed, and bytes transmitted. - * Aggregation: An aggregation of a set of measurements. Census supports the - following aggregation types: - * Distribution - statistical distribution information, used for - recording average, standard deviation etc. Can include a histogram. - * Interval - a count of events that happen in a rolling time window. - * View: A view is a combination of a Resource, a set of tag keys and an - Aggregation. When a measurement for a Resource matches the View tags, it is - recorded (for each unique set of tag values) using the Aggregation type. - Each resource can have an arbitrary number of views by which it will be - broken down. - - Census uses protos to define each of the above, and output results. This - ensures unification across the different language and runtime - implementations. The proto definitions can be found in src/proto/census. -*/ - -/** Define a new resource. `resource_pb` should contain an encoded Resource - protobuf, `resource_pb_size` being the size of the buffer. Returns a -ve - value on error, or a positive (>= 0) resource id (for use in - census_delete_resource() and census_record_values()). In order to be valid, a - resource must have a name, and at least one numerator in its unit type. The - resource name must be unique, and an error will be returned if it is not. */ -CENSUSAPI int32_t census_define_resource(const uint8_t *resource_pb, - size_t resource_pb_size); - -/** Delete a resource created by census_define_resource(). */ -CENSUSAPI void census_delete_resource(int32_t resource_id); - -/** Determine the id of a resource, given its name. returns -1 if the resource - does not exist. */ -CENSUSAPI int32_t census_resource_id(const char *name); - -/** A single value to be recorded comprises two parts: an ID for the particular - * resource and the value to be recorded against it. */ -typedef struct { - int32_t resource_id; - double value; -} census_value; - -/** Record new usage values against the given context. */ -CENSUSAPI void census_record_values(census_context *context, - census_value *values, size_t nvalues); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_CENSUS_H */ diff --git a/linx64/include/grpc/compression.h b/linx64/include/grpc/compression.h deleted file mode 100644 index d47074c9..00000000 --- a/linx64/include/grpc/compression.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - * 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_COMPRESSION_H -#define GRPC_COMPRESSION_H - -#include - -#include - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Parses the first \a name_length bytes of \a name as a - * grpc_compression_algorithm instance, updating \a algorithm. Returns 1 upon - * success, 0 otherwise. */ -GRPCAPI int grpc_compression_algorithm_parse( - grpc_slice value, grpc_compression_algorithm *algorithm); - -/** Updates \a name with the encoding name corresponding to a valid \a - * algorithm. Note that \a name is statically allocated and must *not* be freed. - * Returns 1 upon success, 0 otherwise. */ -GRPCAPI int grpc_compression_algorithm_name( - grpc_compression_algorithm algorithm, char **name); - -/** Returns the compression algorithm corresponding to \a level for the - * compression algorithms encoded in the \a accepted_encodings bitset. - * - * It abort()s for unknown levels . */ -GRPCAPI grpc_compression_algorithm grpc_compression_algorithm_for_level( - grpc_compression_level level, uint32_t accepted_encodings); - -GRPCAPI void grpc_compression_options_init(grpc_compression_options *opts); - -/** Mark \a algorithm as enabled in \a opts. */ -GRPCAPI void grpc_compression_options_enable_algorithm( - grpc_compression_options *opts, grpc_compression_algorithm algorithm); - -/** Mark \a algorithm as disabled in \a opts. */ -GRPCAPI void grpc_compression_options_disable_algorithm( - grpc_compression_options *opts, grpc_compression_algorithm algorithm); - -/** Returns true if \a algorithm is marked as enabled in \a opts. */ -GRPCAPI int grpc_compression_options_is_algorithm_enabled( - const grpc_compression_options *opts, grpc_compression_algorithm algorithm); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_COMPRESSION_H */ diff --git a/linx64/include/grpc/grpc.h b/linx64/include/grpc/grpc.h deleted file mode 100644 index 943d6e48..00000000 --- a/linx64/include/grpc/grpc.h +++ /dev/null @@ -1,450 +0,0 @@ -/* - * - * Copyright 2015-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. - * - */ - -#ifndef GRPC_GRPC_H -#define GRPC_GRPC_H - -#include - -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/*! \mainpage GRPC Core - * - * The GRPC Core library is a low-level library designed to be wrapped by higher - * level libraries. The top-level API is provided in grpc.h. Security related - * functionality lives in grpc_security.h. - */ - -GRPCAPI void grpc_metadata_array_init(grpc_metadata_array *array); -GRPCAPI void grpc_metadata_array_destroy(grpc_metadata_array *array); - -GRPCAPI void grpc_call_details_init(grpc_call_details *details); -GRPCAPI void grpc_call_details_destroy(grpc_call_details *details); - -/** Registers a plugin to be initialized and destroyed with the library. - - The \a init and \a destroy functions will be invoked as part of - \a grpc_init() and \a grpc_shutdown(), respectively. - Note that these functions can be invoked an arbitrary number of times - (and hence so will \a init and \a destroy). - It is safe to pass NULL to either argument. Plugins are destroyed in - the reverse order they were initialized. */ -GRPCAPI void grpc_register_plugin(void (*init)(void), void (*destroy)(void)); - -/** Initialize the grpc library. - - It is not safe to call any other grpc functions before calling this. - (To avoid overhead, little checking is done, and some things may work. We - do not warrant that they will continue to do so in future revisions of this - library). */ -GRPCAPI void grpc_init(void); - -/** Shut down the grpc library. - - No memory is used by grpc after this call returns, nor are any instructions - executing within the grpc library. - Prior to calling, all application owned grpc objects must have been - destroyed. */ -GRPCAPI void grpc_shutdown(void); - -/** Return a string representing the current version of grpc */ -GRPCAPI const char *grpc_version_string(void); - -/** Return a string specifying what the 'g' in gRPC stands for */ -GRPCAPI const char *grpc_g_stands_for(void); - -/** Returns the completion queue factory based on the attributes. MAY return a - NULL if no factory can be found */ -GRPCAPI const grpc_completion_queue_factory * -grpc_completion_queue_factory_lookup( - const grpc_completion_queue_attributes *attributes); - -/** Helper function to create a completion queue with grpc_cq_completion_type - of GRPC_CQ_NEXT and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING */ -GRPCAPI grpc_completion_queue *grpc_completion_queue_create_for_next( - void *reserved); - -/** Helper function to create a completion queue with grpc_cq_completion_type - of GRPC_CQ_PLUCK and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING */ -GRPCAPI grpc_completion_queue *grpc_completion_queue_create_for_pluck( - void *reserved); - -/** Create a completion queue */ -GRPCAPI grpc_completion_queue *grpc_completion_queue_create( - const grpc_completion_queue_factory *factory, - const grpc_completion_queue_attributes *attributes, void *reserved); - -/** Blocks until an event is available, the completion queue is being shut down, - or deadline is reached. - - Returns a grpc_event with type GRPC_QUEUE_TIMEOUT on timeout, - otherwise a grpc_event describing the event that occurred. - - Callers must not call grpc_completion_queue_next and - grpc_completion_queue_pluck simultaneously on the same completion queue. */ -GRPCAPI grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, - gpr_timespec deadline, - void *reserved); - -/** Blocks until an event with tag 'tag' is available, the completion queue is - being shutdown or deadline is reached. - - Returns a grpc_event with type GRPC_QUEUE_TIMEOUT on timeout, - otherwise a grpc_event describing the event that occurred. - - Callers must not call grpc_completion_queue_next and - grpc_completion_queue_pluck simultaneously on the same completion queue. - - Completion queues support a maximum of GRPC_MAX_COMPLETION_QUEUE_PLUCKERS - concurrently executing plucks at any time. */ -GRPCAPI grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cq, - void *tag, gpr_timespec deadline, - void *reserved); - -/** Maximum number of outstanding grpc_completion_queue_pluck executions per - completion queue */ -#define GRPC_MAX_COMPLETION_QUEUE_PLUCKERS 6 - -/** Begin destruction of a completion queue. Once all possible events are - drained then grpc_completion_queue_next will start to produce - GRPC_QUEUE_SHUTDOWN events only. At that point it's safe to call - grpc_completion_queue_destroy. - - After calling this function applications should ensure that no - NEW work is added to be published on this completion queue. */ -GRPCAPI void grpc_completion_queue_shutdown(grpc_completion_queue *cq); - -/** Destroy a completion queue. The caller must ensure that the queue is - drained and no threads are executing grpc_completion_queue_next */ -GRPCAPI void grpc_completion_queue_destroy(grpc_completion_queue *cq); - -/** Create a completion queue alarm instance associated to \a cq. - * - * Once the alarm expires (at \a deadline) or it's cancelled (see \a - * grpc_alarm_cancel), an event with tag \a tag will be added to \a cq. If the - * alarm expired, the event's success bit will be true, false otherwise (ie, - * upon cancellation). */ -GRPCAPI grpc_alarm *grpc_alarm_create(grpc_completion_queue *cq, - gpr_timespec deadline, void *tag); - -/** Cancel a completion queue alarm. Calling this function over an alarm that - * has already fired has no effect. */ -GRPCAPI void grpc_alarm_cancel(grpc_alarm *alarm); - -/** Destroy the given completion queue alarm, cancelling it in the process. */ -GRPCAPI void grpc_alarm_destroy(grpc_alarm *alarm); - -/** Check the connectivity state of a channel. */ -GRPCAPI grpc_connectivity_state grpc_channel_check_connectivity_state( - grpc_channel *channel, int try_to_connect); - -/** Number of active "external connectivity state watchers" attached to a - * channel. - * Useful for testing. **/ -GRPCAPI int grpc_channel_num_external_connectivity_watchers( - grpc_channel *channel); - -/** Watch for a change in connectivity state. - Once the channel connectivity state is different from last_observed_state, - tag will be enqueued on cq with success=1. - If deadline expires BEFORE the state is changed, tag will be enqueued on cq - with success=0. */ -GRPCAPI void grpc_channel_watch_connectivity_state( - grpc_channel *channel, grpc_connectivity_state last_observed_state, - gpr_timespec deadline, grpc_completion_queue *cq, void *tag); - -/** Create a call given a grpc_channel, in order to call 'method'. All - completions are sent to 'completion_queue'. 'method' and 'host' need only - live through the invocation of this function. - If parent_call is non-NULL, it must be a server-side call. It will be used - to propagate properties from the server call to this new client call, - depending on the value of \a propagation_mask (see propagation_bits.h for - possible values). */ -GRPCAPI grpc_call *grpc_channel_create_call( - grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, - grpc_completion_queue *completion_queue, grpc_slice method, - const grpc_slice *host, gpr_timespec deadline, void *reserved); - -/** Ping the channels peer (load balanced channels will select one sub-channel - to ping); if the channel is not connected, posts a failed. */ -GRPCAPI void grpc_channel_ping(grpc_channel *channel, grpc_completion_queue *cq, - void *tag, void *reserved); - -/** Pre-register a method/host pair on a channel. */ -GRPCAPI void *grpc_channel_register_call(grpc_channel *channel, - const char *method, const char *host, - void *reserved); - -/** Create a call given a handle returned from grpc_channel_register_call. - \sa grpc_channel_create_call. */ -GRPCAPI grpc_call *grpc_channel_create_registered_call( - grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, - grpc_completion_queue *completion_queue, void *registered_call_handle, - gpr_timespec deadline, void *reserved); - -/** Allocate memory in the grpc_call arena: this memory is automatically - discarded at call completion */ -GRPCAPI void *grpc_call_arena_alloc(grpc_call *call, size_t size); - -/** Start a batch of operations defined in the array ops; when complete, post a - completion of type 'tag' to the completion queue bound to the call. - The order of ops specified in the batch has no significance. - Only one operation of each type can be active at once in any given - batch. - If a call to grpc_call_start_batch returns GRPC_CALL_OK you must call - grpc_completion_queue_next or grpc_completion_queue_pluck on the completion - queue associated with 'call' for work to be performed. If a call to - grpc_call_start_batch returns any value other than GRPC_CALL_OK it is - guaranteed that no state associated with 'call' is changed and it is not - appropriate to call grpc_completion_queue_next or - grpc_completion_queue_pluck consequent to the failed grpc_call_start_batch - call. - THREAD SAFETY: access to grpc_call_start_batch in multi-threaded environment - needs to be synchronized. As an optimization, you may synchronize batches - containing just send operations independently from batches containing just - receive operations. */ -GRPCAPI grpc_call_error grpc_call_start_batch(grpc_call *call, - const grpc_op *ops, size_t nops, - void *tag, void *reserved); - -/** Returns a newly allocated string representing the endpoint to which this - call is communicating with. The string is in the uri format accepted by - grpc_channel_create. - The returned string should be disposed of with gpr_free(). - - WARNING: this value is never authenticated or subject to any security - related code. It must not be used for any authentication related - functionality. Instead, use grpc_auth_context. */ -GRPCAPI char *grpc_call_get_peer(grpc_call *call); - -struct census_context; - -/** Set census context for a call; Must be called before first call to - grpc_call_start_batch(). */ -GRPCAPI void grpc_census_call_set_context(grpc_call *call, - struct census_context *context); - -/** Retrieve the calls current census context. */ -GRPCAPI struct census_context *grpc_census_call_get_context(grpc_call *call); - -/** Return a newly allocated string representing the target a channel was - created for. */ -GRPCAPI char *grpc_channel_get_target(grpc_channel *channel); - -/** Request info about the channel. - \a channel_info indicates what information is being requested and - how that information will be returned. - \a channel_info is owned by the caller. */ -GRPCAPI void grpc_channel_get_info(grpc_channel *channel, - const grpc_channel_info *channel_info); - -/** Create a client channel to 'target'. Additional channel level configuration - MAY be provided by grpc_channel_args, though the expectation is that most - clients will want to simply pass NULL. See grpc_channel_args definition for - more on this. The data in 'args' need only live through the invocation of - this function. */ -GRPCAPI grpc_channel *grpc_insecure_channel_create( - const char *target, const grpc_channel_args *args, void *reserved); - -/** Create a lame client: this client fails every operation attempted on it. */ -GRPCAPI grpc_channel *grpc_lame_client_channel_create( - const char *target, grpc_status_code error_code, const char *error_message); - -/** Close and destroy a grpc channel */ -GRPCAPI void grpc_channel_destroy(grpc_channel *channel); - -/** Error handling for grpc_call - Most grpc_call functions return a grpc_error. If the error is not GRPC_OK - then the operation failed due to some unsatisfied precondition. - If a grpc_call fails, it's guaranteed that no change to the call state - has been made. */ - -/** Called by clients to cancel an RPC on the server. - Can be called multiple times, from any thread. - THREAD-SAFETY grpc_call_cancel and grpc_call_cancel_with_status - are thread-safe, and can be called at any point before grpc_call_unref - is called.*/ -GRPCAPI grpc_call_error grpc_call_cancel(grpc_call *call, void *reserved); - -/** Called by clients to cancel an RPC on the server. - Can be called multiple times, from any thread. - If a status has not been received for the call, set it to the status code - and description passed in. - Importantly, this function does not send status nor description to the - remote endpoint. - Note that \a description doesn't need be a static string. - It doesn't need to be alive after the call to - grpc_call_cancel_with_status completes. - */ -GRPCAPI grpc_call_error grpc_call_cancel_with_status(grpc_call *call, - grpc_status_code status, - const char *description, - void *reserved); - -/** Ref a call. - THREAD SAFETY: grpc_call_unref is thread-compatible */ -GRPCAPI void grpc_call_ref(grpc_call *call); - -/** Unref a call. - THREAD SAFETY: grpc_call_unref is thread-compatible */ -GRPCAPI void grpc_call_unref(grpc_call *call); - -/** Request notification of a new call. - Once a call is received, a notification tagged with \a tag_new is added to - \a cq_for_notification. \a call, \a details and \a request_metadata are - updated with the appropriate call information. \a cq_bound_to_call is bound - to \a call, and batch operation notifications for that call will be posted - to \a cq_bound_to_call. - Note that \a cq_for_notification must have been registered to the server via - \a grpc_server_register_completion_queue. */ -GRPCAPI grpc_call_error grpc_server_request_call( - grpc_server *server, grpc_call **call, grpc_call_details *details, - grpc_metadata_array *request_metadata, - grpc_completion_queue *cq_bound_to_call, - grpc_completion_queue *cq_for_notification, void *tag_new); - -/** How to handle payloads for a registered method */ -typedef enum { - /** Don't try to read the payload */ - GRPC_SRM_PAYLOAD_NONE, - /** Read the initial payload as a byte buffer */ - GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER -} grpc_server_register_method_payload_handling; - -/** Registers a method in the server. - Methods to this (host, method) pair will not be reported by - grpc_server_request_call, but instead be reported by - grpc_server_request_registered_call when passed the appropriate - registered_method (as returned by this function). - Must be called before grpc_server_start. - Returns NULL on failure. */ -GRPCAPI void *grpc_server_register_method( - grpc_server *server, const char *method, const char *host, - grpc_server_register_method_payload_handling payload_handling, - uint32_t flags); - -/** Request notification of a new pre-registered call. 'cq_for_notification' - must have been registered to the server via - grpc_server_register_completion_queue. */ -GRPCAPI grpc_call_error grpc_server_request_registered_call( - grpc_server *server, void *registered_method, grpc_call **call, - gpr_timespec *deadline, grpc_metadata_array *request_metadata, - grpc_byte_buffer **optional_payload, - grpc_completion_queue *cq_bound_to_call, - grpc_completion_queue *cq_for_notification, void *tag_new); - -/** Create a server. Additional configuration for each incoming channel can - be specified with args. If no additional configuration is needed, args can - be NULL. See grpc_channel_args for more. The data in 'args' need only live - through the invocation of this function. */ -GRPCAPI grpc_server *grpc_server_create(const grpc_channel_args *args, - void *reserved); - -/** Register a completion queue with the server. Must be done for any - notification completion queue that is passed to grpc_server_request_*_call - and to grpc_server_shutdown_and_notify. Must be performed prior to - grpc_server_start. */ -GRPCAPI void grpc_server_register_completion_queue(grpc_server *server, - grpc_completion_queue *cq, - void *reserved); - -/** Add a HTTP2 over plaintext over tcp listener. - Returns bound port number on success, 0 on failure. - REQUIRES: server not started */ -GRPCAPI int grpc_server_add_insecure_http2_port(grpc_server *server, - const char *addr); - -/** Start a server - tells all listeners to start listening */ -GRPCAPI void grpc_server_start(grpc_server *server); - -/** Begin shutting down a server. - After completion, no new calls or connections will be admitted. - Existing calls will be allowed to complete. - Send a GRPC_OP_COMPLETE event when there are no more calls being serviced. - Shutdown is idempotent, and all tags will be notified at once if multiple - grpc_server_shutdown_and_notify calls are made. 'cq' must have been - registered to this server via grpc_server_register_completion_queue. */ -GRPCAPI void grpc_server_shutdown_and_notify(grpc_server *server, - grpc_completion_queue *cq, - void *tag); - -/** Cancel all in-progress calls. - Only usable after shutdown. */ -GRPCAPI void grpc_server_cancel_all_calls(grpc_server *server); - -/** Destroy a server. - Shutdown must have completed beforehand (i.e. all tags generated by - grpc_server_shutdown_and_notify must have been received, and at least - one call to grpc_server_shutdown_and_notify must have been made). */ -GRPCAPI void grpc_server_destroy(grpc_server *server); - -/** Enable or disable a tracer. - - Tracers (usually controlled by the environment variable GRPC_TRACE) - allow printf-style debugging on GRPC internals, and are useful for - tracking down problems in the field. - - Use of this function is not strictly thread-safe, but the - thread-safety issues raised by it should not be of concern. */ -GRPCAPI int grpc_tracer_set_enabled(const char *name, int enabled); - -/** Check whether a metadata key is legal (will be accepted by core) */ -GRPCAPI int grpc_header_key_is_legal(grpc_slice slice); - -/** Check whether a non-binary metadata value is legal (will be accepted by - core) */ -GRPCAPI int grpc_header_nonbin_value_is_legal(grpc_slice slice); - -/** Check whether a metadata key corresponds to a binary value */ -GRPCAPI int grpc_is_binary_header(grpc_slice slice); - -/** Convert grpc_call_error values to a string */ -GRPCAPI const char *grpc_call_error_to_string(grpc_call_error error); - -/** Create a buffer pool */ -GRPCAPI grpc_resource_quota *grpc_resource_quota_create(const char *trace_name); - -/** Add a reference to a buffer pool */ -GRPCAPI void grpc_resource_quota_ref(grpc_resource_quota *resource_quota); - -/** Drop a reference to a buffer pool */ -GRPCAPI void grpc_resource_quota_unref(grpc_resource_quota *resource_quota); - -/** Update the size of a buffer pool */ -GRPCAPI void grpc_resource_quota_resize(grpc_resource_quota *resource_quota, - size_t new_size); - -/** Fetch a vtable for a grpc_channel_arg that points to a grpc_resource_quota - */ -GRPCAPI const grpc_arg_pointer_vtable *grpc_resource_quota_arg_vtable(void); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_H */ diff --git a/linx64/include/grpc/grpc_cronet.h b/linx64/include/grpc/grpc_cronet.h deleted file mode 100644 index 44330c6e..00000000 --- a/linx64/include/grpc/grpc_cronet.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_GRPC_CRONET_H -#define GRPC_GRPC_CRONET_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -GRPCAPI grpc_channel *grpc_cronet_secure_channel_create( - void *engine, const char *target, const grpc_channel_args *args, - void *reserved); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_CRONET_H */ diff --git a/linx64/include/grpc/grpc_posix.h b/linx64/include/grpc/grpc_posix.h deleted file mode 100644 index c7429eae..00000000 --- a/linx64/include/grpc/grpc_posix.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_GRPC_POSIX_H -#define GRPC_GRPC_POSIX_H - -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/*! \mainpage GRPC Core POSIX - * - * The GRPC Core POSIX library provides some POSIX-specific low-level - * functionality on top of GRPC Core. - */ - -/** Create a client channel to 'target' using file descriptor 'fd'. The 'target' - argument will be used to indicate the name for this channel. See the comment - for grpc_insecure_channel_create for description of 'args' argument. */ -GRPCAPI grpc_channel *grpc_insecure_channel_create_from_fd( - const char *target, int fd, const grpc_channel_args *args); - -/** Add the connected communication channel based on file descriptor 'fd' to the - 'server'. The 'fd' must be an open file descriptor corresponding to a - connected socket. Events from the file descriptor may come on any of the - server completion queues (i.e completion queues registered via the - grpc_server_register_completion_queue API). - - The 'reserved' pointer MUST be NULL. - */ -GRPCAPI void grpc_server_add_insecure_channel_from_fd(grpc_server *server, - void *reserved, int fd); - -/** GRPC Core POSIX library may internally use signals to optimize some work. - The library uses (SIGRTMIN + 6) signal by default. Use this API to instruct - the library to use a different signal i.e 'signum' instead. - Note: - - To prevent GRPC library from using any signals, pass a 'signum' of -1 - - This API is optional but if called, it MUST be called before grpc_init() */ -GRPCAPI void grpc_use_signal(int signum); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_POSIX_H */ diff --git a/linx64/include/grpc/grpc_security.h b/linx64/include/grpc/grpc_security.h deleted file mode 100644 index 2005e25d..00000000 --- a/linx64/include/grpc/grpc_security.h +++ /dev/null @@ -1,375 +0,0 @@ -/* - * - * 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_GRPC_SECURITY_H -#define GRPC_GRPC_SECURITY_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** --- Authentication Context. --- */ - -typedef struct grpc_auth_context grpc_auth_context; - -typedef struct grpc_auth_property_iterator { - const grpc_auth_context *ctx; - size_t index; - const char *name; -} grpc_auth_property_iterator; - -/** value, if not NULL, is guaranteed to be NULL terminated. */ -typedef struct grpc_auth_property { - char *name; - char *value; - size_t value_length; -} grpc_auth_property; - -/** Returns NULL when the iterator is at the end. */ -GRPCAPI const grpc_auth_property *grpc_auth_property_iterator_next( - grpc_auth_property_iterator *it); - -/** Iterates over the auth context. */ -GRPCAPI grpc_auth_property_iterator -grpc_auth_context_property_iterator(const grpc_auth_context *ctx); - -/** Gets the peer identity. Returns an empty iterator (first _next will return - NULL) if the peer is not authenticated. */ -GRPCAPI grpc_auth_property_iterator -grpc_auth_context_peer_identity(const grpc_auth_context *ctx); - -/** Finds a property in the context. May return an empty iterator (first _next - will return NULL) if no property with this name was found in the context. */ -GRPCAPI grpc_auth_property_iterator grpc_auth_context_find_properties_by_name( - const grpc_auth_context *ctx, const char *name); - -/** Gets the name of the property that indicates the peer identity. Will return - NULL if the peer is not authenticated. */ -GRPCAPI const char *grpc_auth_context_peer_identity_property_name( - const grpc_auth_context *ctx); - -/** Returns 1 if the peer is authenticated, 0 otherwise. */ -GRPCAPI int grpc_auth_context_peer_is_authenticated( - const grpc_auth_context *ctx); - -/** Gets the auth context from the call. Caller needs to call - grpc_auth_context_release on the returned context. */ -GRPCAPI grpc_auth_context *grpc_call_auth_context(grpc_call *call); - -/** Releases the auth context returned from grpc_call_auth_context. */ -GRPCAPI void grpc_auth_context_release(grpc_auth_context *context); - -/** -- - The following auth context methods should only be called by a server metadata - processor to set properties extracted from auth metadata. - -- */ - -/** Add a property. */ -GRPCAPI void grpc_auth_context_add_property(grpc_auth_context *ctx, - const char *name, const char *value, - size_t value_length); - -/** Add a C string property. */ -GRPCAPI void grpc_auth_context_add_cstring_property(grpc_auth_context *ctx, - const char *name, - const char *value); - -/** Sets the property name. Returns 1 if successful or 0 in case of failure - (which means that no property with this name exists). */ -GRPCAPI int grpc_auth_context_set_peer_identity_property_name( - grpc_auth_context *ctx, const char *name); - -/** --- grpc_channel_credentials object. --- - - A channel credentials object represents a way to authenticate a client on a - channel. */ - -typedef struct grpc_channel_credentials grpc_channel_credentials; - -/** Releases a channel credentials object. - The creator of the credentials object is responsible for its release. */ -GRPCAPI void grpc_channel_credentials_release(grpc_channel_credentials *creds); - -/** Creates default credentials to connect to a google gRPC service. - WARNING: Do NOT use this credentials to connect to a non-google service as - this could result in an oauth2 token leak. */ -GRPCAPI grpc_channel_credentials *grpc_google_default_credentials_create(void); - -/** Callback for getting the SSL roots override from the application. - In case of success, *pem_roots_certs must be set to a NULL terminated string - containing the list of PEM encoded root certificates. The ownership is passed - to the core and freed (laster by the core) with gpr_free. - If this function fails and GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment is - set to a valid path, it will override the roots specified this func */ -typedef grpc_ssl_roots_override_result (*grpc_ssl_roots_override_callback)( - char **pem_root_certs); - -/** Setup a callback to override the default TLS/SSL roots. - This function is not thread-safe and must be called at initialization time - before any ssl credentials are created to have the desired side effect. - If GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment is set to a valid path, the - callback will not be called. */ -GRPCAPI void grpc_set_ssl_roots_override_callback( - grpc_ssl_roots_override_callback cb); - -/** Object that holds a private key / certificate chain pair in PEM format. */ -typedef struct { - /** private_key is the NULL-terminated string containing the PEM encoding of - the client's private key. */ - const char *private_key; - - /** cert_chain is the NULL-terminated string containing the PEM encoding of - the client's certificate chain. */ - const char *cert_chain; -} grpc_ssl_pem_key_cert_pair; - -/** Creates an SSL credentials object. - - pem_root_certs is the NULL-terminated string containing the PEM encoding - of the server root certificates. If this parameter is NULL, the - implementation will first try to dereference the file pointed by the - GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable, and if that fails, - try to get the roots set by grpc_override_ssl_default_roots. Eventually, - if all these fail, it will try to get the roots from a well-known place on - disk (in the grpc install directory). - - pem_key_cert_pair is a pointer on the object containing client's private - key and certificate chain. This parameter can be NULL if the client does - not have such a key/cert pair. */ -GRPCAPI grpc_channel_credentials *grpc_ssl_credentials_create( - const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair, - void *reserved); - -/** --- grpc_call_credentials object. - - A call credentials object represents a way to authenticate on a particular - call. These credentials can be composed with a channel credentials object - so that they are sent with every call on this channel. */ - -typedef struct grpc_call_credentials grpc_call_credentials; - -/** Releases a call credentials object. - The creator of the credentials object is responsible for its release. */ -GRPCAPI void grpc_call_credentials_release(grpc_call_credentials *creds); - -/** Creates a composite channel credentials object. */ -GRPCAPI grpc_channel_credentials *grpc_composite_channel_credentials_create( - grpc_channel_credentials *channel_creds, grpc_call_credentials *call_creds, - void *reserved); - -/** Creates a composite call credentials object. */ -GRPCAPI grpc_call_credentials *grpc_composite_call_credentials_create( - grpc_call_credentials *creds1, grpc_call_credentials *creds2, - void *reserved); - -/** Creates a compute engine credentials object for connecting to Google. - WARNING: Do NOT use this credentials to connect to a non-google service as - this could result in an oauth2 token leak. */ -GRPCAPI grpc_call_credentials *grpc_google_compute_engine_credentials_create( - void *reserved); - -GRPCAPI gpr_timespec grpc_max_auth_token_lifetime(); - -/** Creates a JWT credentials object. May return NULL if the input is invalid. - - json_key is the JSON key string containing the client's private key. - - token_lifetime is the lifetime of each Json Web Token (JWT) created with - this credentials. It should not exceed grpc_max_auth_token_lifetime or - will be cropped to this value. */ -GRPCAPI grpc_call_credentials * -grpc_service_account_jwt_access_credentials_create(const char *json_key, - gpr_timespec token_lifetime, - void *reserved); - -/** Creates an Oauth2 Refresh Token credentials object for connecting to Google. - May return NULL if the input is invalid. - WARNING: Do NOT use this credentials to connect to a non-google service as - this could result in an oauth2 token leak. - - json_refresh_token is the JSON string containing the refresh token itself - along with a client_id and client_secret. */ -GRPCAPI grpc_call_credentials *grpc_google_refresh_token_credentials_create( - const char *json_refresh_token, void *reserved); - -/** Creates an Oauth2 Access Token credentials with an access token that was - aquired by an out of band mechanism. */ -GRPCAPI grpc_call_credentials *grpc_access_token_credentials_create( - const char *access_token, void *reserved); - -/** Creates an IAM credentials object for connecting to Google. */ -GRPCAPI grpc_call_credentials *grpc_google_iam_credentials_create( - const char *authorization_token, const char *authority_selector, - void *reserved); - -/** Callback function to be called by the metadata credentials plugin - implementation when the metadata is ready. - - user_data is the opaque pointer that was passed in the get_metadata method - of the grpc_metadata_credentials_plugin (see below). - - creds_md is an array of credentials metadata produced by the plugin. It - may be set to NULL in case of an error. - - num_creds_md is the number of items in the creds_md array. - - status must be GRPC_STATUS_OK in case of success or another specific error - code otherwise. - - error_details contains details about the error if any. In case of success - it should be NULL and will be otherwise ignored. */ -typedef void (*grpc_credentials_plugin_metadata_cb)( - void *user_data, const grpc_metadata *creds_md, size_t num_creds_md, - grpc_status_code status, const char *error_details); - -/** Context that can be used by metadata credentials plugin in order to create - auth related metadata. */ -typedef struct { - /** The fully qualifed service url. */ - const char *service_url; - - /** The method name of the RPC being called (not fully qualified). - The fully qualified method name can be built from the service_url: - full_qualified_method_name = ctx->service_url + '/' + ctx->method_name. */ - const char *method_name; - - /** The auth_context of the channel which gives the server's identity. */ - const grpc_auth_context *channel_auth_context; - - /** Reserved for future use. */ - void *reserved; -} grpc_auth_metadata_context; - -/** grpc_metadata_credentials plugin is an API user provided structure used to - create grpc_credentials objects that can be set on a channel (composed) or - a call. See grpc_credentials_metadata_create_from_plugin below. - The grpc client stack will call the get_metadata method of the plugin for - every call in scope for the credentials created from it. */ -typedef struct { - /** The implementation of this method has to be non-blocking. - - context is the information that can be used by the plugin to create auth - metadata. - - cb is the callback that needs to be called when the metadata is ready. - - user_data needs to be passed as the first parameter of the callback. */ - void (*get_metadata)(void *state, grpc_auth_metadata_context context, - grpc_credentials_plugin_metadata_cb cb, void *user_data); - - /** Destroys the plugin state. */ - void (*destroy)(void *state); - - /** State that will be set as the first parameter of the methods above. */ - void *state; - - /** Type of credentials that this plugin is implementing. */ - const char *type; -} grpc_metadata_credentials_plugin; - -/** Creates a credentials object from a plugin. */ -GRPCAPI grpc_call_credentials *grpc_metadata_credentials_create_from_plugin( - grpc_metadata_credentials_plugin plugin, void *reserved); - -/** --- Secure channel creation. --- */ - -/** Creates a secure channel using the passed-in credentials. */ -GRPCAPI grpc_channel *grpc_secure_channel_create( - grpc_channel_credentials *creds, const char *target, - const grpc_channel_args *args, void *reserved); - -/** --- grpc_server_credentials object. --- - - A server credentials object represents a way to authenticate a server. */ - -typedef struct grpc_server_credentials grpc_server_credentials; - -/** Releases a server_credentials object. - The creator of the server_credentials object is responsible for its release. - */ -GRPCAPI void grpc_server_credentials_release(grpc_server_credentials *creds); - -/** Deprecated in favor of grpc_ssl_server_credentials_create_ex. - Creates an SSL server_credentials object. - - pem_roots_cert is the NULL-terminated string containing the PEM encoding of - the client root certificates. This parameter may be NULL if the server does - not want the client to be authenticated with SSL. - - pem_key_cert_pairs is an array private key / certificate chains of the - server. This parameter cannot be NULL. - - num_key_cert_pairs indicates the number of items in the private_key_files - and cert_chain_files parameters. It should be at least 1. - - force_client_auth, if set to non-zero will force the client to authenticate - with an SSL cert. Note that this option is ignored if pem_root_certs is - NULL. */ -GRPCAPI grpc_server_credentials *grpc_ssl_server_credentials_create( - const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, - size_t num_key_cert_pairs, int force_client_auth, void *reserved); - -/** Same as grpc_ssl_server_credentials_create method except uses - grpc_ssl_client_certificate_request_type enum to support more ways to - authenticate client cerificates.*/ -GRPCAPI grpc_server_credentials *grpc_ssl_server_credentials_create_ex( - const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, - size_t num_key_cert_pairs, - grpc_ssl_client_certificate_request_type client_certificate_request, - void *reserved); - -/** --- Server-side secure ports. --- */ - -/** Add a HTTP2 over an encrypted link over tcp listener. - Returns bound port number on success, 0 on failure. - REQUIRES: server not started */ -GRPCAPI int grpc_server_add_secure_http2_port(grpc_server *server, - const char *addr, - grpc_server_credentials *creds); - -/** --- Call specific credentials. --- */ - -/** Sets a credentials to a call. Can only be called on the client side before - grpc_call_start_batch. */ -GRPCAPI grpc_call_error grpc_call_set_credentials(grpc_call *call, - grpc_call_credentials *creds); - -/** --- Auth Metadata Processing --- */ - -/** Callback function that is called when the metadata processing is done. - - Consumed metadata will be removed from the set of metadata available on the - call. consumed_md may be NULL if no metadata has been consumed. - - Response metadata will be set on the response. response_md may be NULL. - - status is GRPC_STATUS_OK for success or a specific status for an error. - Common error status for auth metadata processing is either - GRPC_STATUS_UNAUTHENTICATED in case of an authentication failure or - GRPC_STATUS PERMISSION_DENIED in case of an authorization failure. - - error_details gives details about the error. May be NULL. */ -typedef void (*grpc_process_auth_metadata_done_cb)( - void *user_data, const grpc_metadata *consumed_md, size_t num_consumed_md, - const grpc_metadata *response_md, size_t num_response_md, - grpc_status_code status, const char *error_details); - -/** Pluggable server-side metadata processor object. */ -typedef struct { - /** The context object is read/write: it contains the properties of the - channel peer and it is the job of the process function to augment it with - properties derived from the passed-in metadata. - The lifetime of these objects is guaranteed until cb is invoked. */ - void (*process)(void *state, grpc_auth_context *context, - const grpc_metadata *md, size_t num_md, - grpc_process_auth_metadata_done_cb cb, void *user_data); - void (*destroy)(void *state); - void *state; -} grpc_auth_metadata_processor; - -GRPCAPI void grpc_server_credentials_set_auth_metadata_processor( - grpc_server_credentials *creds, grpc_auth_metadata_processor processor); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_SECURITY_H */ diff --git a/linx64/include/grpc/grpc_security_constants.h b/linx64/include/grpc/grpc_security_constants.h deleted file mode 100644 index fde300df..00000000 --- a/linx64/include/grpc/grpc_security_constants.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_GRPC_SECURITY_CONSTANTS_H -#define GRPC_GRPC_SECURITY_CONSTANTS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME "transport_security_type" -#define GRPC_SSL_TRANSPORT_SECURITY_TYPE "ssl" - -#define GRPC_X509_CN_PROPERTY_NAME "x509_common_name" -#define GRPC_X509_SAN_PROPERTY_NAME "x509_subject_alternative_name" -#define GRPC_X509_PEM_CERT_PROPERTY_NAME "x509_pem_cert" - -/** Environment variable that points to the default SSL roots file. This file - must be a PEM encoded file with all the roots such as the one that can be - downloaded from https://pki.google.com/roots.pem. */ -#define GRPC_DEFAULT_SSL_ROOTS_FILE_PATH_ENV_VAR \ - "GRPC_DEFAULT_SSL_ROOTS_FILE_PATH" - -/** Environment variable that points to the google default application - credentials json key or refresh token. Used in the - grpc_google_default_credentials_create function. */ -#define GRPC_GOOGLE_CREDENTIALS_ENV_VAR "GOOGLE_APPLICATION_CREDENTIALS" - -/** Results for the SSL roots override callback. */ -typedef enum { - GRPC_SSL_ROOTS_OVERRIDE_OK, - GRPC_SSL_ROOTS_OVERRIDE_FAIL_PERMANENTLY, /** Do not try fallback options. */ - GRPC_SSL_ROOTS_OVERRIDE_FAIL -} grpc_ssl_roots_override_result; - -typedef enum { - /** Server does not request client certificate. A client can present a self - signed or signed certificates if it wishes to do so and they would be - accepted. */ - GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE, - /** Server requests client certificate but does not enforce that the client - presents a certificate. - - If the client presents a certificate, the client authentication is left to - the application based on the metadata like certificate etc. - - The key cert pair should still be valid for the SSL connection to be - established. */ - GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_BUT_DONT_VERIFY, - /** Server requests client certificate but does not enforce that the client - presents a certificate. - - If the client presents a certificate, the client authentication is done by - grpc framework (The client needs to either present a signed cert or skip no - certificate for a successful connection). - - The key cert pair should still be valid for the SSL connection to be - established. */ - GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_AND_VERIFY, - /** Server requests client certificate but enforces that the client presents a - certificate. - - If the client presents a certificate, the client authentication is left to - the application based on the metadata like certificate etc. - - The key cert pair should still be valid for the SSL connection to be - established. */ - GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_BUT_DONT_VERIFY, - /** Server requests client certificate but enforces that the client presents a - certificate. - - The cerificate presented by the client is verified by grpc framework (The - client needs to present signed certs for a successful connection). - - The key cert pair should still be valid for the SSL connection to be - established. */ - GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY -} grpc_ssl_client_certificate_request_type; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_SECURITY_CONSTANTS_H */ diff --git a/linx64/include/grpc/impl/codegen/atm.h b/linx64/include/grpc/impl/codegen/atm.h deleted file mode 100644 index 2cfd22ab..00000000 --- a/linx64/include/grpc/impl/codegen/atm.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * - * 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_ATM_H -#define GRPC_IMPL_CODEGEN_ATM_H - -/** This interface provides atomic operations and barriers. - It is internal to gpr support code and should not be used outside it. - - If an operation with acquire semantics precedes another memory access by the - same thread, the operation will precede that other access as seen by other - threads. - - If an operation with release semantics follows another memory access by the - same thread, the operation will follow that other access as seen by other - threads. - - Routines with "acq" or "full" in the name have acquire semantics. Routines - with "rel" or "full" in the name have release semantics. Routines with - "no_barrier" in the name have neither acquire not release semantics. - - The routines may be implemented as macros. - - // Atomic operations act on an intergral_type gpr_atm that is guaranteed to - // be the same size as a pointer. - typedef intptr_t gpr_atm; - - // A memory barrier, providing both acquire and release semantics, but not - // otherwise acting on memory. - void gpr_atm_full_barrier(void); - - // Atomically return *p, with acquire semantics. - gpr_atm gpr_atm_acq_load(gpr_atm *p); - - // Atomically set *p = value, with release semantics. - void gpr_atm_rel_store(gpr_atm *p, gpr_atm value); - - // Atomically add delta to *p, and return the old value of *p, with - // the barriers specified. - gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm *p, gpr_atm delta); - gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta); - - // Atomically, if *p==o, set *p=n and return non-zero otherwise return 0, - // with the barriers specified if the operation succeeds. - int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n); - int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n); - int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n); - int gpr_atm_full_cas(gpr_atm *p, gpr_atm o, gpr_atm n); - - // Atomically, set *p=n and return the old value of *p - gpr_atm gpr_atm_full_xchg(gpr_atm *p, gpr_atm n); -*/ - -#include - -#if defined(GPR_GCC_ATOMIC) -#include -#elif defined(GPR_GCC_SYNC) -#include -#elif defined(GPR_WINDOWS_ATOMIC) -#include -#else -#error could not determine platform for atm -#endif - -/** Adds \a delta to \a *value, clamping the result to the range specified - by \a min and \a max. Returns the new value. */ -gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm *value, gpr_atm delta, - gpr_atm min, gpr_atm max); - -#endif /* GRPC_IMPL_CODEGEN_ATM_H */ diff --git a/linx64/include/grpc/impl/codegen/atm_gcc_atomic.h b/linx64/include/grpc/impl/codegen/atm_gcc_atomic.h deleted file mode 100644 index 1793ec22..00000000 --- a/linx64/include/grpc/impl/codegen/atm_gcc_atomic.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * - * 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_ATM_GCC_ATOMIC_H -#define GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H - -/* atm_platform.h for gcc and gcc-like compilers with the - __atomic_* interface. */ -#include - -typedef intptr_t gpr_atm; -#define GPR_ATM_MAX INTPTR_MAX - -#ifdef GPR_LOW_LEVEL_COUNTERS -extern gpr_atm gpr_counter_atm_cas; -extern gpr_atm gpr_counter_atm_add; -#define GPR_ATM_INC_COUNTER(counter) \ - __atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED) -#define GPR_ATM_INC_CAS_THEN(blah) \ - (GPR_ATM_INC_COUNTER(gpr_counter_atm_cas), blah) -#define GPR_ATM_INC_ADD_THEN(blah) \ - (GPR_ATM_INC_COUNTER(gpr_counter_atm_add), blah) -#else -#define GPR_ATM_INC_CAS_THEN(blah) blah -#define GPR_ATM_INC_ADD_THEN(blah) blah -#endif - -#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST)) - -#define gpr_atm_acq_load(p) (__atomic_load_n((p), __ATOMIC_ACQUIRE)) -#define gpr_atm_no_barrier_load(p) (__atomic_load_n((p), __ATOMIC_RELAXED)) -#define gpr_atm_rel_store(p, value) \ - (__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELEASE)) -#define gpr_atm_no_barrier_store(p, value) \ - (__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELAXED)) - -#define gpr_atm_no_barrier_fetch_add(p, delta) \ - GPR_ATM_INC_ADD_THEN( \ - __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED)) -#define gpr_atm_full_fetch_add(p, delta) \ - GPR_ATM_INC_ADD_THEN( \ - __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL)) - -static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { - return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n( - p, &o, n, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED)); -} - -static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { - return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n( - p, &o, n, 0, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)); -} - -static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { - return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n( - p, &o, n, 0, __ATOMIC_RELEASE, __ATOMIC_RELAXED)); -} - -static __inline int gpr_atm_full_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { - return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n( - p, &o, n, 0, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED)); -} - -#define gpr_atm_full_xchg(p, n) \ - GPR_ATM_INC_CAS_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL)) - -#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H */ diff --git a/linx64/include/grpc/impl/codegen/atm_gcc_sync.h b/linx64/include/grpc/impl/codegen/atm_gcc_sync.h deleted file mode 100644 index 27ae0f63..00000000 --- a/linx64/include/grpc/impl/codegen/atm_gcc_sync.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * - * 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_ATM_GCC_SYNC_H -#define GRPC_IMPL_CODEGEN_ATM_GCC_SYNC_H - -/* variant of atm_platform.h for gcc and gcc-like compiers with __sync_* - interface */ -#include - -typedef intptr_t gpr_atm; -#define GPR_ATM_MAX INTPTR_MAX - -#define GPR_ATM_COMPILE_BARRIER_() __asm__ __volatile__("" : : : "memory") - -#if defined(__i386) || defined(__x86_64__) -/* All loads are acquire loads and all stores are release stores. */ -#define GPR_ATM_LS_BARRIER_() GPR_ATM_COMPILE_BARRIER_() -#else -#define GPR_ATM_LS_BARRIER_() gpr_atm_full_barrier() -#endif - -#define gpr_atm_full_barrier() (__sync_synchronize()) - -static __inline gpr_atm gpr_atm_acq_load(const gpr_atm *p) { - gpr_atm value = *p; - GPR_ATM_LS_BARRIER_(); - return value; -} - -static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm *p) { - gpr_atm value = *p; - GPR_ATM_COMPILE_BARRIER_(); - return value; -} - -static __inline void gpr_atm_rel_store(gpr_atm *p, gpr_atm value) { - GPR_ATM_LS_BARRIER_(); - *p = value; -} - -static __inline void gpr_atm_no_barrier_store(gpr_atm *p, gpr_atm value) { - GPR_ATM_COMPILE_BARRIER_(); - *p = value; -} - -#undef GPR_ATM_LS_BARRIER_ -#undef GPR_ATM_COMPILE_BARRIER_ - -#define gpr_atm_no_barrier_fetch_add(p, delta) \ - gpr_atm_full_fetch_add((p), (delta)) -#define gpr_atm_full_fetch_add(p, delta) (__sync_fetch_and_add((p), (delta))) - -#define gpr_atm_no_barrier_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n)) -#define gpr_atm_acq_cas(p, o, n) (__sync_bool_compare_and_swap((p), (o), (n))) -#define gpr_atm_rel_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n)) -#define gpr_atm_full_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n)) - -static __inline gpr_atm gpr_atm_full_xchg(gpr_atm *p, gpr_atm n) { - gpr_atm cur; - do { - cur = gpr_atm_acq_load(p); - } while (!gpr_atm_rel_cas(p, cur, n)); - return cur; -} - -#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_SYNC_H */ diff --git a/linx64/include/grpc/impl/codegen/atm_windows.h b/linx64/include/grpc/impl/codegen/atm_windows.h deleted file mode 100644 index dfcaa4cc..00000000 --- a/linx64/include/grpc/impl/codegen/atm_windows.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * - * 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_ATM_WINDOWS_H -#define GRPC_IMPL_CODEGEN_ATM_WINDOWS_H - -/** Win32 variant of atm_platform.h */ -#include - -typedef intptr_t gpr_atm; -#define GPR_ATM_MAX INTPTR_MAX - -#define gpr_atm_full_barrier MemoryBarrier - -static __inline gpr_atm gpr_atm_acq_load(const gpr_atm *p) { - gpr_atm result = *p; - gpr_atm_full_barrier(); - return result; -} - -static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm *p) { - /* TODO(dklempner): Can we implement something better here? */ - return gpr_atm_acq_load(p); -} - -static __inline void gpr_atm_rel_store(gpr_atm *p, gpr_atm value) { - gpr_atm_full_barrier(); - *p = value; -} - -static __inline void gpr_atm_no_barrier_store(gpr_atm *p, gpr_atm value) { - /* TODO(ctiller): Can we implement something better here? */ - gpr_atm_rel_store(p, value); -} - -static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { -/** InterlockedCompareExchangePointerNoFence() not available on vista or - windows7 */ -#ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeAcquire64( - (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); -#else - return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *)p, - (LONG)n, (LONG)o); -#endif -} - -static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { -#ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeAcquire64( - (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); -#else - return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *)p, - (LONG)n, (LONG)o); -#endif -} - -static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { -#ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeRelease64( - (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); -#else - return o == (gpr_atm)InterlockedCompareExchangeRelease((volatile LONG *)p, - (LONG)n, (LONG)o); -#endif -} - -static __inline int gpr_atm_full_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { -#ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG *)p, - (LONGLONG)n, (LONGLONG)o); -#else - return o == (gpr_atm)InterlockedCompareExchange((volatile LONG *)p, (LONG)n, - (LONG)o); -#endif -} - -static __inline gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm *p, - gpr_atm delta) { - /** Use the CAS operation to get pointer-sized fetch and add */ - gpr_atm old; - do { - old = *p; - } while (!gpr_atm_no_barrier_cas(p, old, old + delta)); - return old; -} - -static __inline gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta) { - /** Use a CAS operation to get pointer-sized fetch and add */ - gpr_atm old; -#ifdef GPR_ARCH_64 - do { - old = *p; - } while (old != (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG *)p, - (LONGLONG)old + delta, - (LONGLONG)old)); -#else - do { - old = *p; - } while (old != (gpr_atm)InterlockedCompareExchange( - (volatile LONG *)p, (LONG)old + delta, (LONG)old)); -#endif - return old; -} - -static __inline gpr_atm gpr_atm_full_xchg(gpr_atm *p, gpr_atm n) { - return (gpr_atm)InterlockedExchangePointer((PVOID *)p, (PVOID)n); -} - -#endif /* GRPC_IMPL_CODEGEN_ATM_WINDOWS_H */ diff --git a/linx64/include/grpc/impl/codegen/byte_buffer_reader.h b/linx64/include/grpc/impl/codegen/byte_buffer_reader.h deleted file mode 100644 index dc0f1549..00000000 --- a/linx64/include/grpc/impl/codegen/byte_buffer_reader.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * - * 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_READER_H -#define GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H - -#ifdef __cplusplus -extern "C" { -#endif - -struct grpc_byte_buffer; - -struct grpc_byte_buffer_reader { - struct grpc_byte_buffer *buffer_in; - struct grpc_byte_buffer *buffer_out; - /** Different current objects correspond to different types of byte buffers */ - union grpc_byte_buffer_reader_current { - /** Index into a slice buffer's array of slices */ - unsigned index; - } current; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H */ diff --git a/linx64/include/grpc/impl/codegen/compression_types.h b/linx64/include/grpc/impl/codegen/compression_types.h deleted file mode 100644 index f1b2de3f..00000000 --- a/linx64/include/grpc/impl/codegen/compression_types.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H -#define GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** To be used as initial metadata key for the request of a concrete compression - * algorithm */ -#define GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY \ - "grpc-internal-encoding-request" - -/** To be used in channel arguments. - * - * \addtogroup grpc_arg_keys - * \{ */ -/** Default compression algorithm for the channel. - * Its value is an int from the \a grpc_compression_algorithm enum. */ -#define GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM \ - "grpc.default_compression_algorithm" -/** Default compression level for the channel. - * Its value is an int from the \a grpc_compression_level enum. */ -#define GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL "grpc.default_compression_level" -/** Compression algorithms supported by the channel. - * Its value is a bitset (an int). Bits correspond to algorithms in \a - * grpc_compression_algorithm. For example, its LSB corresponds to - * GRPC_COMPRESS_NONE, the next bit to GRPC_COMPRESS_DEFLATE, etc. - * Unset bits disable support for the algorithm. By default all algorithms are - * supported. It's not possible to disable GRPC_COMPRESS_NONE (the attempt will - * be ignored). */ -#define GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET \ - "grpc.compression_enabled_algorithms_bitset" -/** \} */ - -/** The various compression algorithms supported by gRPC */ -typedef enum { - GRPC_COMPRESS_NONE = 0, - GRPC_COMPRESS_DEFLATE, - GRPC_COMPRESS_GZIP, - /* TODO(ctiller): snappy */ - GRPC_COMPRESS_ALGORITHMS_COUNT -} grpc_compression_algorithm; - -/** Compression levels allow a party with knowledge of its peer's accepted - * encodings to request compression in an abstract way. The level-algorithm - * mapping is performed internally and depends on the peer's supported - * compression algorithms. */ -typedef enum { - GRPC_COMPRESS_LEVEL_NONE = 0, - GRPC_COMPRESS_LEVEL_LOW, - GRPC_COMPRESS_LEVEL_MED, - GRPC_COMPRESS_LEVEL_HIGH, - GRPC_COMPRESS_LEVEL_COUNT -} grpc_compression_level; - -typedef struct grpc_compression_options { - /** All algs are enabled by default. This option corresponds to the channel - * argument key behind \a GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET - */ - uint32_t enabled_algorithms_bitset; - - /** The default channel compression level. It'll be used in the absence of - * call specific settings. This option corresponds to the channel argument key - * behind \a GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL. If present, takes - * precedence over \a default_algorithm. - * TODO(dgq): currently only available for server channels. */ - struct grpc_compression_options_default_level { - int is_set; - grpc_compression_level level; - } default_level; - - /** The default channel compression algorithm. It'll be used in the absence of - * call specific settings. This option corresponds to the channel argument key - * behind \a GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM. */ - struct grpc_compression_options_default_algorithm { - int is_set; - grpc_compression_algorithm algorithm; - } default_algorithm; - -} grpc_compression_options; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H */ diff --git a/linx64/include/grpc/impl/codegen/connectivity_state.h b/linx64/include/grpc/impl/codegen/connectivity_state.h deleted file mode 100644 index 545b4fdb..00000000 --- a/linx64/include/grpc/impl/codegen/connectivity_state.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H -#define GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** Connectivity state of a channel. */ -typedef enum { - /** channel has just been initialized */ - GRPC_CHANNEL_INIT = -1, - /** channel is idle */ - GRPC_CHANNEL_IDLE, - /** channel is connecting */ - GRPC_CHANNEL_CONNECTING, - /** channel is ready for work */ - GRPC_CHANNEL_READY, - /** channel has seen a failure but expects to recover */ - GRPC_CHANNEL_TRANSIENT_FAILURE, - /** channel has seen a failure that it cannot recover from */ - GRPC_CHANNEL_SHUTDOWN -} grpc_connectivity_state; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H */ diff --git a/linx64/include/grpc/impl/codegen/exec_ctx_fwd.h b/linx64/include/grpc/impl/codegen/exec_ctx_fwd.h deleted file mode 100644 index 005ff14e..00000000 --- a/linx64/include/grpc/impl/codegen/exec_ctx_fwd.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_EXEC_CTX_FWD_H -#define GRPC_IMPL_CODEGEN_EXEC_CTX_FWD_H - -/* forward declaration for exec_ctx.h */ -struct grpc_exec_ctx; -typedef struct grpc_exec_ctx grpc_exec_ctx; - -#endif /* GRPC_IMPL_CODEGEN_EXEC_CTX_FWD_H */ diff --git a/linx64/include/grpc/impl/codegen/gpr_slice.h b/linx64/include/grpc/impl/codegen/gpr_slice.h deleted file mode 100644 index 89fa72d5..00000000 --- a/linx64/include/grpc/impl/codegen/gpr_slice.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * 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. - * - */ -#ifndef GRPC_IMPL_CODEGEN_GPR_SLICE_H -#define GRPC_IMPL_CODEGEN_GPR_SLICE_H - -/** WARNING: Please do not use this header. This was added as a temporary - * measure to not break some of the external projects that depend on - * gpr_slice_* functions. We are actively working on moving all the - * gpr_slice_* references to grpc_slice_* and this file will be removed - */ - -/* TODO (sreek) - Allowed by default but will be very soon turned off */ -#define GRPC_ALLOW_GPR_SLICE_FUNCTIONS 1 - -#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS - -#define gpr_slice_refcount grpc_slice_refcount -#define gpr_slice grpc_slice -#define gpr_slice_buffer grpc_slice_buffer - -#define gpr_slice_ref grpc_slice_ref -#define gpr_slice_unref grpc_slice_unref -#define gpr_slice_new grpc_slice_new -#define gpr_slice_new_with_user_data grpc_slice_new_with_user_data -#define gpr_slice_new_with_len grpc_slice_new_with_len -#define gpr_slice_malloc grpc_slice_malloc -#define gpr_slice_from_copied_string grpc_slice_from_copied_string -#define gpr_slice_from_copied_buffer grpc_slice_from_copied_buffer -#define gpr_slice_from_static_string grpc_slice_from_static_string -#define gpr_slice_sub grpc_slice_sub -#define gpr_slice_sub_no_ref grpc_slice_sub_no_ref -#define gpr_slice_split_tail grpc_slice_split_tail -#define gpr_slice_split_head grpc_slice_split_head -#define gpr_slice_cmp grpc_slice_cmp -#define gpr_slice_str_cmp grpc_slice_str_cmp - -#define gpr_slice_buffer grpc_slice_buffer -#define gpr_slice_buffer_init grpc_slice_buffer_init -#define gpr_slice_buffer_destroy grpc_slice_buffer_destroy -#define gpr_slice_buffer_add grpc_slice_buffer_add -#define gpr_slice_buffer_add_indexed grpc_slice_buffer_add_indexed -#define gpr_slice_buffer_addn grpc_slice_buffer_addn -#define gpr_slice_buffer_tiny_add grpc_slice_buffer_tiny_add -#define gpr_slice_buffer_pop grpc_slice_buffer_pop -#define gpr_slice_buffer_reset_and_unref grpc_slice_buffer_reset_and_unref -#define gpr_slice_buffer_swap grpc_slice_buffer_swap -#define gpr_slice_buffer_move_into grpc_slice_buffer_move_into -#define gpr_slice_buffer_trim_end grpc_slice_buffer_trim_end -#define gpr_slice_buffer_move_first grpc_slice_buffer_move_first -#define gpr_slice_buffer_take_first grpc_slice_buffer_take_first - -#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */ - -#endif /* GRPC_IMPL_CODEGEN_GPR_SLICE_H */ diff --git a/linx64/include/grpc/impl/codegen/gpr_types.h b/linx64/include/grpc/impl/codegen/gpr_types.h deleted file mode 100644 index d7bb5452..00000000 --- a/linx64/include/grpc/impl/codegen/gpr_types.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_GPR_TYPES_H -#define GRPC_IMPL_CODEGEN_GPR_TYPES_H - -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** The clocks we support. */ -typedef enum { - /** Monotonic clock. Epoch undefined. Always moves forwards. */ - GPR_CLOCK_MONOTONIC = 0, - /** Realtime clock. May jump forwards or backwards. Settable by - the system administrator. Has its epoch at 0:00:00 UTC 1 Jan 1970. */ - GPR_CLOCK_REALTIME, - /** CPU cycle time obtained by rdtsc instruction on x86 platforms. Epoch - undefined. Degrades to GPR_CLOCK_REALTIME on other platforms. */ - GPR_CLOCK_PRECISE, - /** Unmeasurable clock type: no base, created by taking the difference - between two times */ - GPR_TIMESPAN -} gpr_clock_type; - -/** Analogous to struct timespec. On some machines, absolute times may be in - * local time. */ -typedef struct gpr_timespec { - int64_t tv_sec; - int32_t tv_nsec; - /** Against which clock was this time measured? (or GPR_TIMESPAN if - this is a relative time meaure) */ - gpr_clock_type clock_type; -} gpr_timespec; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_GPR_TYPES_H */ diff --git a/linx64/include/grpc/impl/codegen/grpc_types.h b/linx64/include/grpc/impl/codegen/grpc_types.h deleted file mode 100644 index 8813ec8f..00000000 --- a/linx64/include/grpc/impl/codegen/grpc_types.h +++ /dev/null @@ -1,618 +0,0 @@ -/* - * - * 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_GRPC_TYPES_H -#define GRPC_IMPL_CODEGEN_GRPC_TYPES_H - -#include - -#include -#include -#include -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - GRPC_BB_RAW - /** Future types may include GRPC_BB_PROTOBUF, etc. */ -} grpc_byte_buffer_type; - -typedef struct grpc_byte_buffer { - void *reserved; - grpc_byte_buffer_type type; - union grpc_byte_buffer_data { - struct /* internal */ { - void *reserved[8]; - } reserved; - struct grpc_compressed_buffer { - grpc_compression_algorithm compression; - grpc_slice_buffer slice_buffer; - } raw; - } data; -} grpc_byte_buffer; - -/** Completion Queues enable notification of the completion of - * asynchronous actions. */ -typedef struct grpc_completion_queue grpc_completion_queue; - -/** An alarm associated with a completion queue. */ -typedef struct grpc_alarm grpc_alarm; - -/** The Channel interface allows creation of Call objects. */ -typedef struct grpc_channel grpc_channel; - -/** A server listens to some port and responds to request calls */ -typedef struct grpc_server grpc_server; - -/** A Call represents an RPC. When created, it is in a configuration state - allowing properties to be set until it is invoked. After invoke, the Call - can have messages written to it and read from it. */ -typedef struct grpc_call grpc_call; - -/** The Socket Mutator interface allows changes on socket options */ -typedef struct grpc_socket_mutator grpc_socket_mutator; - -/** The Socket Factory interface creates and binds sockets */ -typedef struct grpc_socket_factory grpc_socket_factory; - -/** Type specifier for grpc_arg */ -typedef enum { - GRPC_ARG_STRING, - GRPC_ARG_INTEGER, - GRPC_ARG_POINTER -} grpc_arg_type; - -typedef struct grpc_arg_pointer_vtable { - void *(*copy)(void *p); - void (*destroy)(grpc_exec_ctx *exec_ctx, void *p); - int (*cmp)(void *p, void *q); -} grpc_arg_pointer_vtable; - -/** A single argument... each argument has a key and a value - - A note on naming keys: - Keys are namespaced into groups, usually grouped by library, and are - keys for module XYZ are named XYZ.key1, XYZ.key2, etc. Module names must - be restricted to the regex [A-Za-z][_A-Za-z0-9]{,15}. - Key names must be restricted to the regex [A-Za-z][_A-Za-z0-9]{,47}. - - GRPC core library keys are prefixed by grpc. - - Library authors are strongly encouraged to \#define symbolic constants for - their keys so that it's possible to change them in the future. */ -typedef struct { - grpc_arg_type type; - char *key; - union grpc_arg_value { - char *string; - int integer; - struct grpc_arg_pointer { - void *p; - const grpc_arg_pointer_vtable *vtable; - } pointer; - } value; -} grpc_arg; - -/** An array of arguments that can be passed around. - - Used to set optional channel-level configuration. - These configuration options are modelled as key-value pairs as defined - by grpc_arg; keys are strings to allow easy backwards-compatible extension - by arbitrary parties. All evaluation is performed at channel creation - time (i.e. the values in this structure need only live through the - creation invocation). - - See the description of the \ref grpc_arg_keys "available args" for more - details. */ -typedef struct { - size_t num_args; - grpc_arg *args; -} grpc_channel_args; - -/** \defgroup grpc_arg_keys - * Channel argument keys. - * \{ - */ -/** If non-zero, enable census for tracing and stats collection. */ -#define GRPC_ARG_ENABLE_CENSUS "grpc.census" -/** If non-zero, enable load reporting. */ -#define GRPC_ARG_ENABLE_LOAD_REPORTING "grpc.loadreporting" -/** Request that optional features default to off (regardless of what they - usually default to) - to enable tight control over what gets enabled */ -#define GRPC_ARG_MINIMAL_STACK "grpc.minimal_stack" -/** Maximum number of concurrent incoming streams to allow on a http2 - connection. Int valued. */ -#define GRPC_ARG_MAX_CONCURRENT_STREAMS "grpc.max_concurrent_streams" -/** Maximum message length that the channel can receive. Int valued, bytes. - -1 means unlimited. */ -#define GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH "grpc.max_receive_message_length" -/** \deprecated For backward compatibility. - * Use GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH instead. */ -#define GRPC_ARG_MAX_MESSAGE_LENGTH GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH -/** Maximum message length that the channel can send. Int valued, bytes. - -1 means unlimited. */ -#define GRPC_ARG_MAX_SEND_MESSAGE_LENGTH "grpc.max_send_message_length" -/** Maximum time that a channel may have no outstanding rpcs. Int valued, - milliseconds. INT_MAX means unlimited. */ -#define GRPC_ARG_MAX_CONNECTION_IDLE_MS "grpc.max_connection_idle_ms" -/** Maximum time that a channel may exist. Int valued, milliseconds. - * INT_MAX means unlimited. */ -#define GRPC_ARG_MAX_CONNECTION_AGE_MS "grpc.max_connection_age_ms" -/** Grace period after the chennel reaches its max age. Int valued, - milliseconds. INT_MAX means unlimited. */ -#define GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS "grpc.max_connection_age_grace_ms" -/** Enable/disable support for per-message compression. Defaults to 1, unless - GRPC_ARG_MINIMAL_STACK is enabled, in which case it defaults to 0. */ -#define GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION "grpc.per_message_compression" -/** Enable/disable support for deadline checking. Defaults to 1, unless - GRPC_ARG_MINIMAL_STACK is enabled, in which case it defaults to 0 */ -#define GRPC_ARG_ENABLE_DEADLINE_CHECKS "grpc.enable_deadline_checking" -/** Initial stream ID for http2 transports. Int valued. */ -#define GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER \ - "grpc.http2.initial_sequence_number" -/** Amount to read ahead on individual streams. Defaults to 64kb, larger - values can help throughput on high-latency connections. - NOTE: at some point we'd like to auto-tune this, and this parameter - will become a no-op. Int valued, bytes. */ -#define GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES "grpc.http2.lookahead_bytes" -/** How much memory to use for hpack decoding. Int valued, bytes. */ -#define GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER \ - "grpc.http2.hpack_table_size.decoder" -/** How much memory to use for hpack encoding. Int valued, bytes. */ -#define GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER \ - "grpc.http2.hpack_table_size.encoder" -/** How big a frame are we willing to receive via HTTP2. - Min 16384, max 16777215. Larger values give lower CPU usage for large - messages, but more head of line blocking for small messages. */ -#define GRPC_ARG_HTTP2_MAX_FRAME_SIZE "grpc.http2.max_frame_size" -/** Should BDP probing be performed? */ -#define GRPC_ARG_HTTP2_BDP_PROBE "grpc.http2.bdp_probe" -/** Minimum time (in milliseconds) between successive ping frames being sent */ -#define GRPC_ARG_HTTP2_MIN_TIME_BETWEEN_PINGS_MS \ - "grpc.http2.min_time_between_pings_ms" -/** Channel arg to override the http2 :scheme header */ -#define GRPC_ARG_HTTP2_SCHEME "grpc.http2_scheme" -/** How many pings can we send before needing to send a data frame or header - frame? (0 indicates that an infinite number of pings can be sent without - sending a data frame or header frame) */ -#define GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA \ - "grpc.http2.max_pings_without_data" -/** How many misbehaving pings the server can bear before sending goaway and - closing the transport? (0 indicates that the server can bear an infinite - number of misbehaving pings) */ -#define GRPC_ARG_HTTP2_MAX_PING_STRIKES "grpc.http2.max_ping_strikes" -/** Minimum allowed time between two pings without sending any data frame. Int - valued, seconds */ -#define GRPC_ARG_HTTP2_MIN_PING_INTERVAL_WITHOUT_DATA_MS \ - "grpc.http2.min_ping_interval_without_data_ms" -/** How much data are we willing to queue up per stream if - GRPC_WRITE_BUFFER_HINT is set? This is an upper bound */ -#define GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE "grpc.http2.write_buffer_size" -/** Should we allow receipt of true-binary data on http2 connections? - Defaults to on (1) */ -#define GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY "grpc.http2.true_binary" -/** After a duration of this time the client/server pings its peer to see if the - transport is still alive. Int valued, milliseconds. */ -#define GRPC_ARG_KEEPALIVE_TIME_MS "grpc.keepalive_time_ms" -/** After waiting for a duration of this time, if the keepalive ping sender does - not receive the ping ack, it will close the transport. Int valued, - milliseconds. */ -#define GRPC_ARG_KEEPALIVE_TIMEOUT_MS "grpc.keepalive_timeout_ms" -/** Is it permissible to send keepalive pings without any outstanding streams. - Int valued, 0(false)/1(true). */ -#define GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS \ - "grpc.keepalive_permit_without_calls" -/** Default authority to pass if none specified on call construction. A string. - * */ -#define GRPC_ARG_DEFAULT_AUTHORITY "grpc.default_authority" -/** Primary user agent: goes at the start of the user-agent metadata - sent on each request. A string. */ -#define GRPC_ARG_PRIMARY_USER_AGENT_STRING "grpc.primary_user_agent" -/** Secondary user agent: goes at the end of the user-agent metadata - sent on each request. A string. */ -#define GRPC_ARG_SECONDARY_USER_AGENT_STRING "grpc.secondary_user_agent" -/** The minimum time between subsequent connection attempts, in ms */ -#define GRPC_ARG_MIN_RECONNECT_BACKOFF_MS "grpc.min_reconnect_backoff_ms" -/** The maximum time between subsequent connection attempts, in ms */ -#define GRPC_ARG_MAX_RECONNECT_BACKOFF_MS "grpc.max_reconnect_backoff_ms" -/** The time between the first and second connection attempts, in ms */ -#define GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS \ - "grpc.initial_reconnect_backoff_ms" -/** This *should* be used for testing only. - The caller of the secure_channel_create functions may override the target - name used for SSL host name checking using this channel argument which is of - type \a GRPC_ARG_STRING. If this argument is not specified, the name used - for SSL host name checking will be the target parameter (assuming that the - secure channel is an SSL channel). If this parameter is specified and the - underlying is not an SSL channel, it will just be ignored. */ -#define GRPC_SSL_TARGET_NAME_OVERRIDE_ARG "grpc.ssl_target_name_override" -/** Maximum metadata size, in bytes. Note this limit applies to the max sum of - all metadata key-value entries in a batch of headers. */ -#define GRPC_ARG_MAX_METADATA_SIZE "grpc.max_metadata_size" -/** If non-zero, allow the use of SO_REUSEPORT if it's available (default 1) */ -#define GRPC_ARG_ALLOW_REUSEPORT "grpc.so_reuseport" -/** If non-zero, a pointer to a buffer pool (a pointer of type - * grpc_resource_quota*). (use grpc_resource_quota_arg_vtable() to fetch an - * appropriate pointer arg vtable) */ -#define GRPC_ARG_RESOURCE_QUOTA "grpc.resource_quota" -/** If non-zero, expand wildcard addresses to a list of local addresses. */ -#define GRPC_ARG_EXPAND_WILDCARD_ADDRS "grpc.expand_wildcard_addrs" -/** Service config data in JSON form. - This value will be ignored if the name resolver returns a service config. */ -#define GRPC_ARG_SERVICE_CONFIG "grpc.service_config" -/** Disable looking up the service config via the name resolver. */ -#define GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION \ - "grpc.service_config_disable_resolution" -/** LB policy name. */ -#define GRPC_ARG_LB_POLICY_NAME "grpc.lb_policy_name" -/** The grpc_socket_mutator instance that set the socket options. A pointer. */ -#define GRPC_ARG_SOCKET_MUTATOR "grpc.socket_mutator" -/** The grpc_socket_factory instance to create and bind sockets. A pointer. */ -#define GRPC_ARG_SOCKET_FACTORY "grpc.socket_factory" -/** If non-zero, Cronet transport will coalesce packets to fewer frames - * when possible. */ -#define GRPC_ARG_USE_CRONET_PACKET_COALESCING \ - "grpc.use_cronet_packet_coalescing" -/** Channel arg (integer) setting how large a slice to try and read from the - wire each time recvmsg (or equivalent) is called **/ -#define GRPC_ARG_TCP_READ_CHUNK_SIZE "grpc.experimental.tcp_read_chunk_size" -/** Note this is not a "channel arg" key. This is the default slice size to use - * when trying to read from the wire if the GRPC_ARG_TCP_READ_CHUNK_SIZE - * channel arg is unspecified. */ -#define GRPC_TCP_DEFAULT_READ_SLICE_SIZE 8192 -#define GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE \ - "grpc.experimental.tcp_min_read_chunk_size" -#define GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE \ - "grpc.experimental.tcp_max_read_chunk_size" -/* Timeout in milliseconds to use for calls to the grpclb load balancer. - If 0 or unset, the balancer calls will have no deadline. */ -#define GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS "grpc.grpclb_timeout_ms" -/** If non-zero, grpc server's cronet compression workaround will be enabled */ -#define GRPC_ARG_WORKAROUND_CRONET_COMPRESSION \ - "grpc.workaround.cronet_compression" -/** String defining the optimization target for a channel. - Can be: "latency" - attempt to minimize latency at the cost of throughput - "blend" - try to balance latency and throughput - "throughput" - attempt to maximize throughput at the expense of - latency - Defaults to "blend". In the current implementation "blend" is equivalent to - "latency". */ -#define GRPC_ARG_OPTIMIZATION_TARGET "grpc.optimization_target" -/** \} */ - -/** Result of a grpc call. If the caller satisfies the prerequisites of a - particular operation, the grpc_call_error returned will be GRPC_CALL_OK. - Receiving any other value listed here is an indication of a bug in the - caller. */ -typedef enum grpc_call_error { - /** everything went ok */ - GRPC_CALL_OK = 0, - /** something failed, we don't know what */ - GRPC_CALL_ERROR, - /** this method is not available on the server */ - GRPC_CALL_ERROR_NOT_ON_SERVER, - /** this method is not available on the client */ - GRPC_CALL_ERROR_NOT_ON_CLIENT, - /** this method must be called before server_accept */ - GRPC_CALL_ERROR_ALREADY_ACCEPTED, - /** this method must be called before invoke */ - GRPC_CALL_ERROR_ALREADY_INVOKED, - /** this method must be called after invoke */ - GRPC_CALL_ERROR_NOT_INVOKED, - /** this call is already finished - (writes_done or write_status has already been called) */ - GRPC_CALL_ERROR_ALREADY_FINISHED, - /** there is already an outstanding read/write operation on the call */ - GRPC_CALL_ERROR_TOO_MANY_OPERATIONS, - /** the flags value was illegal for this call */ - GRPC_CALL_ERROR_INVALID_FLAGS, - /** invalid metadata was passed to this call */ - GRPC_CALL_ERROR_INVALID_METADATA, - /** invalid message was passed to this call */ - GRPC_CALL_ERROR_INVALID_MESSAGE, - /** completion queue for notification has not been registered - * with the server */ - GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE, - /** this batch of operations leads to more operations than allowed */ - GRPC_CALL_ERROR_BATCH_TOO_BIG, - /** payload type requested is not the type registered */ - GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH, - /** completion queue has been shutdown */ - GRPC_CALL_ERROR_COMPLETION_QUEUE_SHUTDOWN -} grpc_call_error; - -/** Default send/receive message size limits in bytes. -1 for unlimited. */ -/** TODO(roth) Make this match the default receive limit after next release */ -#define GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH -1 -#define GRPC_DEFAULT_MAX_RECV_MESSAGE_LENGTH (4 * 1024 * 1024) - -/** Write Flags: */ -/** Hint that the write may be buffered and need not go out on the wire - immediately. GRPC is free to buffer the message until the next non-buffered - write, or until writes_done, but it need not buffer completely or at all. */ -#define GRPC_WRITE_BUFFER_HINT (0x00000001u) -/** Force compression to be disabled for a particular write - (start_write/add_metadata). Illegal on invoke/accept. */ -#define GRPC_WRITE_NO_COMPRESS (0x00000002u) -/** Mask of all valid flags. */ -#define GRPC_WRITE_USED_MASK (GRPC_WRITE_BUFFER_HINT | GRPC_WRITE_NO_COMPRESS) - -/** Initial metadata flags */ -/** Signal that the call is idempotent */ -#define GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST (0x00000010u) -/** Signal that the call should not return UNAVAILABLE before it has started */ -#define GRPC_INITIAL_METADATA_WAIT_FOR_READY (0x00000020u) -/** Signal that the call is cacheable. GRPC is free to use GET verb */ -#define GRPC_INITIAL_METADATA_CACHEABLE_REQUEST (0x00000040u) -/** Signal that GRPC_INITIAL_METADATA_WAIT_FOR_READY was explicitly set - by the calling application. */ -#define GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET (0x00000080u) -/** Signal that the initial metadata should be corked */ -#define GRPC_INITIAL_METADATA_CORKED (0x00000100u) - -/** Mask of all valid flags */ -#define GRPC_INITIAL_METADATA_USED_MASK \ - (GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST | \ - GRPC_INITIAL_METADATA_WAIT_FOR_READY | \ - GRPC_INITIAL_METADATA_CACHEABLE_REQUEST | \ - GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET | \ - GRPC_INITIAL_METADATA_CORKED) - -/** A single metadata element */ -typedef struct grpc_metadata { - /** the key, value values are expected to line up with grpc_mdelem: if - changing them, update metadata.h at the same time. */ - grpc_slice key; - grpc_slice value; - - uint32_t flags; - - /** The following fields are reserved for grpc internal use. - There is no need to initialize them, and they will be set to garbage - during calls to grpc. */ - struct /* internal */ { - void *obfuscated[4]; - } internal_data; -} grpc_metadata; - -/** The type of completion (for grpc_event) */ -typedef enum grpc_completion_type { - /** Shutting down */ - GRPC_QUEUE_SHUTDOWN, - /** No event before timeout */ - GRPC_QUEUE_TIMEOUT, - /** Operation completion */ - GRPC_OP_COMPLETE -} grpc_completion_type; - -/** The result of an operation. - - Returned by a completion queue when the operation started with tag. */ -typedef struct grpc_event { - /** The type of the completion. */ - grpc_completion_type type; - /** If the grpc_completion_type is GRPC_OP_COMPLETE, this field indicates - whether the operation was successful or not; 0 in case of failure and - non-zero in case of success. - If grpc_completion_type is GRPC_QUEUE_SHUTDOWN or GRPC_QUEUE_TIMEOUT, this - field is guaranteed to be 0 */ - int success; - /** The tag passed to grpc_call_start_batch etc to start this operation. - Only GRPC_OP_COMPLETE has a tag. */ - void *tag; -} grpc_event; - -typedef struct { - size_t count; - size_t capacity; - grpc_metadata *metadata; -} grpc_metadata_array; - -typedef struct { - grpc_slice method; - grpc_slice host; - gpr_timespec deadline; - uint32_t flags; - void *reserved; -} grpc_call_details; - -typedef enum { - /** Send initial metadata: one and only one instance MUST be sent for each - call, unless the call was cancelled - in which case this can be skipped. - This op completes after all bytes of metadata have been accepted by - outgoing flow control. */ - GRPC_OP_SEND_INITIAL_METADATA = 0, - /** Send a message: 0 or more of these operations can occur for each call. - This op completes after all bytes for the message have been accepted by - outgoing flow control. */ - GRPC_OP_SEND_MESSAGE, - /** Send a close from the client: one and only one instance MUST be sent from - the client, unless the call was cancelled - in which case this can be - skipped. This op completes after all bytes for the call - (including the close) have passed outgoing flow control. */ - GRPC_OP_SEND_CLOSE_FROM_CLIENT, - /** Send status from the server: one and only one instance MUST be sent from - the server unless the call was cancelled - in which case this can be - skipped. This op completes after all bytes for the call - (including the status) have passed outgoing flow control. */ - GRPC_OP_SEND_STATUS_FROM_SERVER, - /** Receive initial metadata: one and only one MUST be made on the client, - must not be made on the server. - This op completes after all initial metadata has been read from the - peer. */ - GRPC_OP_RECV_INITIAL_METADATA, - /** Receive a message: 0 or more of these operations can occur for each call. - This op completes after all bytes of the received message have been - read, or after a half-close has been received on this call. */ - GRPC_OP_RECV_MESSAGE, - /** Receive status on the client: one and only one must be made on the client. - This operation always succeeds, meaning ops paired with this operation - will also appear to succeed, even though they may not have. In that case - the status will indicate some failure. - This op completes after all activity on the call has completed. */ - GRPC_OP_RECV_STATUS_ON_CLIENT, - /** Receive close on the server: one and only one must be made on the - server. This op completes after the close has been received by the - server. This operation always succeeds, meaning ops paired with - this operation will also appear to succeed, even though they may not - have. */ - GRPC_OP_RECV_CLOSE_ON_SERVER -} grpc_op_type; - -struct grpc_byte_buffer; - -/** Operation data: one field for each op type (except SEND_CLOSE_FROM_CLIENT - which has no arguments) */ -typedef struct grpc_op { - /** Operation type, as defined by grpc_op_type */ - grpc_op_type op; - /** Write flags bitset for grpc_begin_messages */ - uint32_t flags; - /** Reserved for future usage */ - void *reserved; - union grpc_op_data { - /** Reserved for future usage */ - struct /* internal */ { - void *reserved[8]; - } reserved; - struct grpc_op_send_initial_metadata { - size_t count; - grpc_metadata *metadata; - /** If \a is_set, \a compression_level will be used for the call. - * Otherwise, \a compression_level won't be considered */ - struct grpc_op_send_initial_metadata_maybe_compression_level { - uint8_t is_set; - grpc_compression_level level; - } maybe_compression_level; - } send_initial_metadata; - struct grpc_op_send_message { - struct grpc_byte_buffer *send_message; - } send_message; - struct grpc_op_send_status_from_server { - size_t trailing_metadata_count; - grpc_metadata *trailing_metadata; - grpc_status_code status; - /** optional: set to NULL if no details need sending, non-NULL if they do - * pointer will not be retained past the start_batch call - */ - grpc_slice *status_details; - } send_status_from_server; - /** ownership of the array is with the caller, but ownership of the elements - stays with the call object (ie key, value members are owned by the call - object, recv_initial_metadata->array is owned by the caller). - After the operation completes, call grpc_metadata_array_destroy on this - value, or reuse it in a future op. */ - struct grpc_op_recv_initial_metadata { - grpc_metadata_array *recv_initial_metadata; - } recv_initial_metadata; - /** ownership of the byte buffer is moved to the caller; the caller must - call grpc_byte_buffer_destroy on this value, or reuse it in a future op. - */ - struct grpc_op_recv_message { - struct grpc_byte_buffer **recv_message; - } recv_message; - struct grpc_op_recv_status_on_client { - /** ownership of the array is with the caller, but ownership of the - elements stays with the call object (ie key, value members are owned - by the call object, trailing_metadata->array is owned by the caller). - After the operation completes, call grpc_metadata_array_destroy on - this value, or reuse it in a future op. */ - grpc_metadata_array *trailing_metadata; - grpc_status_code *status; - grpc_slice *status_details; - } recv_status_on_client; - struct grpc_op_recv_close_on_server { - /** out argument, set to 1 if the call failed in any way (seen as a - cancellation on the server), or 0 if the call succeeded */ - int *cancelled; - } recv_close_on_server; - } data; -} grpc_op; - -/** Information requested from the channel. */ -typedef struct { - /** If non-NULL, will be set to point to a string indicating the LB - * policy name. Caller takes ownership. */ - char **lb_policy_name; - /** If non-NULL, will be set to point to a string containing the - * service config used by the channel in JSON form. */ - char **service_config_json; -} grpc_channel_info; - -typedef struct grpc_resource_quota grpc_resource_quota; - -/** Completion queues internally MAY maintain a set of file descriptors in a - structure called 'pollset'. This enum specifies if a completion queue has an - associated pollset and any restrictions on the type of file descriptors that - can be present in the pollset. - - I/O progress can only be made when grpc_completion_queue_next() or - grpc_completion_queue_pluck() are called on the completion queue (unless the - grpc_cq_polling_type is GRPC_CQ_NON_POLLING) and hence it is very important - to actively call these APIs */ -typedef enum { - /** The completion queue will have an associated pollset and there is no - restriction on the type of file descriptors the pollset may contain */ - GRPC_CQ_DEFAULT_POLLING, - - /** Similar to GRPC_CQ_DEFAULT_POLLING except that the completion queues will - not contain any 'listening file descriptors' (i.e file descriptors used to - listen to incoming channels) */ - GRPC_CQ_NON_LISTENING, - - /** The completion queue will not have an associated pollset. Note that - grpc_completion_queue_next() or grpc_completion_queue_pluck() MUST still - be called to pop events from the completion queue; it is not required to - call them actively to make I/O progress */ - GRPC_CQ_NON_POLLING -} grpc_cq_polling_type; - -/** Specifies the type of APIs to use to pop events from the completion queue */ -typedef enum { - /** Events are popped out by calling grpc_completion_queue_next() API ONLY */ - GRPC_CQ_NEXT, - - /** Events are popped out by calling grpc_completion_queue_pluck() API ONLY*/ - GRPC_CQ_PLUCK -} grpc_cq_completion_type; - -#define GRPC_CQ_CURRENT_VERSION 1 -typedef struct grpc_completion_queue_attributes { - /** The version number of this structure. More fields might be added to this - structure in future. */ - int version; /** Set to GRPC_CQ_CURRENT_VERSION */ - - grpc_cq_completion_type cq_completion_type; - - grpc_cq_polling_type cq_polling_type; -} grpc_completion_queue_attributes; - -/** The completion queue factory structure is opaque to the callers of grpc */ -typedef struct grpc_completion_queue_factory grpc_completion_queue_factory; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_GRPC_TYPES_H */ diff --git a/linx64/include/grpc/impl/codegen/port_platform.h b/linx64/include/grpc/impl/codegen/port_platform.h deleted file mode 100644 index 24581fa6..00000000 --- a/linx64/include/grpc/impl/codegen/port_platform.h +++ /dev/null @@ -1,411 +0,0 @@ -/* - * - * 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_PORT_PLATFORM_H -#define GRPC_IMPL_CODEGEN_PORT_PLATFORM_H - -/* - * Define GPR_BACKWARDS_COMPATIBILITY_MODE to try harder to be ABI - * compatible with older platforms (currently only on Linux) - * Causes: - * - some libc calls to be gotten via dlsym - * - some syscalls to be made directly - */ - -/* Get windows.h included everywhere (we need it) */ -#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32) -#ifndef WIN32_LEAN_AND_MEAN -#define GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED -#define WIN32_LEAN_AND_MEAN -#endif /* WIN32_LEAN_AND_MEAN */ - -#ifndef NOMINMAX -#define GRPC_NOMINMX_WAS_NOT_DEFINED -#define NOMINMAX -#endif /* NOMINMAX */ - -#ifndef _WIN32_WINNT -#error \ - "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)" -#else /* !defined(_WIN32_WINNT) */ -#if (_WIN32_WINNT < 0x0600) -#error \ - "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)" -#endif /* _WIN32_WINNT < 0x0600 */ -#endif /* defined(_WIN32_WINNT) */ - -#include - -#ifdef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED -#undef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED -#undef WIN32_LEAN_AND_MEAN -#endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */ - -#ifdef GRPC_NOMINMAX_WAS_NOT_DEFINED -#undef GRPC_NOMINMAX_WAS_NOT_DEFINED -#undef NOMINMAX -#endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */ -#endif /* defined(_WIN64) || defined(WIN64) || defined(_WIN32) || \ - defined(WIN32) */ - -/* Override this file with one for your platform if you need to redefine - things. */ - -#if !defined(GPR_NO_AUTODETECT_PLATFORM) -#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32) -#if defined(_WIN64) || defined(WIN64) -#define GPR_ARCH_64 1 -#else -#define GPR_ARCH_32 1 -#endif -#define GPR_PLATFORM_STRING "windows" -#define GPR_WINDOWS 1 -#define GPR_WINDOWS_SUBPROCESS 1 -#define GPR_WINDOWS_ENV -#ifdef __MSYS__ -#define GPR_GETPID_IN_UNISTD_H 1 -#define GPR_MSYS_TMPFILE -#define GPR_POSIX_LOG -#define GPR_POSIX_STRING -#define GPR_POSIX_TIME -#else -#define GPR_GETPID_IN_PROCESS_H 1 -#define GPR_WINDOWS_TMPFILE -#define GPR_WINDOWS_LOG -#define GPR_WINDOWS_CRASH_HANDLER 1 -#define GPR_WINDOWS_STRING -#define GPR_WINDOWS_TIME -#endif -#ifdef __GNUC__ -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#else -#define GPR_WINDOWS_ATOMIC 1 -#define GPR_MSVC_TLS 1 -#endif -#elif defined(GPR_MANYLINUX1) -// TODO(atash): manylinux1 is just another __linux__ but with ancient -// libraries; it should be integrated with the `__linux__` definitions below. -#define GPR_PLATFORM_STRING "manylinux" -#define GPR_POSIX_CRASH_HANDLER 1 -#define GPR_CPU_POSIX 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#define GPR_LINUX 1 -#define GPR_LINUX_LOG 1 -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#define GPR_LINUX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#elif defined(ANDROID) || defined(__ANDROID__) -#define GPR_PLATFORM_STRING "android" -#define GPR_ANDROID 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#define GPR_CPU_POSIX 1 -#define GPR_GCC_SYNC 1 -#define GPR_GCC_TLS 1 -#define GPR_POSIX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_ANDROID_LOG 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#elif defined(__linux__) -#define GPR_PLATFORM_STRING "linux" -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif -#ifndef _DEFAULT_SOURCE -#define _DEFAULT_SOURCE -#endif -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#include -#define GPR_CPU_LINUX 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#define GPR_LINUX 1 -#define GPR_LINUX_LOG -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#define GPR_LINUX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#ifdef __GLIBC__ -#define GPR_POSIX_CRASH_HANDLER 1 -#else /* musl libc */ -#define GPR_MUSL_LIBC_COMPAT 1 -#endif -#elif defined(__APPLE__) -#include -#include -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif -#if TARGET_OS_IPHONE -#define GPR_PLATFORM_STRING "ios" -#define GPR_CPU_IPHONE 1 -#define GPR_PTHREAD_TLS 1 -#else /* TARGET_OS_IPHONE */ -#define GPR_PLATFORM_STRING "osx" -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 -#define GPR_CPU_IPHONE 1 -#define GPR_PTHREAD_TLS 1 -#else /* __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 */ -#define GPR_CPU_POSIX 1 -#define GPR_GCC_TLS 1 -#endif -#else /* __MAC_OS_X_VERSION_MIN_REQUIRED */ -#define GPR_CPU_POSIX 1 -#define GPR_GCC_TLS 1 -#endif -#define GPR_POSIX_CRASH_HANDLER 1 -#endif -#define GPR_APPLE 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_POSIX_LOG 1 -#define GPR_POSIX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#elif defined(__FreeBSD__) -#define GPR_PLATFORM_STRING "freebsd" -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif -#define GPR_FREEBSD 1 -#define GPR_CPU_POSIX 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#define GPR_POSIX_LOG 1 -#define GPR_POSIX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#elif defined(__native_client__) -#define GPR_PLATFORM_STRING "nacl" -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif -#ifndef _DEFAULT_SOURCE -#define _DEFAULT_SOURCE -#endif -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#define GPR_NACL 1 -#define GPR_CPU_POSIX 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#define GPR_POSIX_LOG 1 -#define GPR_POSIX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#else -#error "Could not auto-detect platform" -#endif -#endif /* GPR_NO_AUTODETECT_PLATFORM */ - -#if defined(__has_include) -#if __has_include() -#define GRPC_HAS_CXX11_ATOMIC -#endif /* __has_include() */ -#endif /* defined(__has_include) */ - -#ifndef GPR_PLATFORM_STRING -#warning "GPR_PLATFORM_STRING not auto-detected" -#define GPR_PLATFORM_STRING "unknown" -#endif - -#ifdef GPR_GCOV -#undef GPR_FORBID_UNREACHABLE_CODE -#define GPR_FORBID_UNREACHABLE_CODE 1 -#endif - -#ifdef _MSC_VER -#ifdef _PYTHON_MSVC -// The Python 3.5 Windows runtime is missing InetNtop -#define GPR_WIN_INET_NTOP -#endif // _PYTHON_MSVC -#if _MSC_VER < 1700 -typedef __int8 int8_t; -typedef __int16 int16_t; -typedef __int32 int32_t; -typedef __int64 int64_t; -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int64 uint64_t; -#else -#include -#endif /* _MSC_VER < 1700 */ -#else -#include -#endif /* _MSC_VER */ - -/* Cache line alignment */ -#ifndef GPR_CACHELINE_SIZE_LOG -#if defined(__i386__) || defined(__x86_64__) -#define GPR_CACHELINE_SIZE_LOG 6 -#endif -#ifndef GPR_CACHELINE_SIZE_LOG -/* A reasonable default guess. Note that overestimates tend to waste more - space, while underestimates tend to waste more time. */ -#define GPR_CACHELINE_SIZE_LOG 6 -#endif /* GPR_CACHELINE_SIZE_LOG */ -#endif /* GPR_CACHELINE_SIZE_LOG */ - -#define GPR_CACHELINE_SIZE (1 << GPR_CACHELINE_SIZE_LOG) - -/* scrub GCC_ATOMIC if it's not available on this compiler */ -#if defined(GPR_GCC_ATOMIC) && !defined(__ATOMIC_RELAXED) -#undef GPR_GCC_ATOMIC -#define GPR_GCC_SYNC 1 -#endif - -/* Validate platform combinations */ -#if defined(GPR_GCC_ATOMIC) + defined(GPR_GCC_SYNC) + \ - defined(GPR_WINDOWS_ATOMIC) != \ - 1 -#error Must define exactly one of GPR_GCC_ATOMIC, GPR_GCC_SYNC, GPR_WINDOWS_ATOMIC -#endif - -#if defined(GPR_ARCH_32) + defined(GPR_ARCH_64) != 1 -#error Must define exactly one of GPR_ARCH_32, GPR_ARCH_64 -#endif - -#if defined(GPR_CPU_LINUX) + defined(GPR_CPU_POSIX) + defined(GPR_WINDOWS) + \ - defined(GPR_CPU_IPHONE) + defined(GPR_CPU_CUSTOM) != \ - 1 -#error Must define exactly one of GPR_CPU_LINUX, GPR_CPU_POSIX, GPR_WINDOWS, GPR_CPU_IPHONE, GPR_CPU_CUSTOM -#endif - -#if defined(GPR_MSVC_TLS) + defined(GPR_GCC_TLS) + defined(GPR_PTHREAD_TLS) + \ - defined(GPR_CUSTOM_TLS) != \ - 1 -#error Must define exactly one of GPR_MSVC_TLS, GPR_GCC_TLS, GPR_PTHREAD_TLS, GPR_CUSTOM_TLS -#endif - -/* maximum alignment needed for any type on this platform, rounded up to a - power of two */ -#define GPR_MAX_ALIGNMENT 16 - -#ifndef GRPC_ARES -#ifdef GPR_WINDOWS -#define GRPC_ARES 0 -#else -#define GRPC_ARES 1 -#endif -#endif - -#ifndef GRPC_MUST_USE_RESULT -#if defined(__GNUC__) && !defined(__MINGW32__) -#define GRPC_MUST_USE_RESULT __attribute__((warn_unused_result)) -#define GPR_ALIGN_STRUCT(n) __attribute__((aligned(n))) -#else -#define GRPC_MUST_USE_RESULT -#define GPR_ALIGN_STRUCT(n) -#endif -#endif - -#ifndef GPR_PRINT_FORMAT_CHECK -#ifdef __GNUC__ -#define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS) \ - __attribute__((format(printf, FORMAT_STR, ARGS))) -#else -#define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS) -#endif -#endif /* GPR_PRINT_FORMAT_CHECK */ - -#if GPR_FORBID_UNREACHABLE_CODE -#define GPR_UNREACHABLE_CODE(STATEMENT) -#else -#define GPR_UNREACHABLE_CODE(STATEMENT) \ - do { \ - gpr_log(GPR_ERROR, "Should never reach here."); \ - abort(); \ - STATEMENT; \ - } while (0) -#endif /* GPR_FORBID_UNREACHABLE_CODE */ - -#ifndef GPRAPI -#define GPRAPI -#endif - -#ifndef GRPCAPI -#define GRPCAPI GPRAPI -#endif - -#ifndef CENSUSAPI -#define CENSUSAPI GRPCAPI -#endif - -#endif /* GRPC_IMPL_CODEGEN_PORT_PLATFORM_H */ diff --git a/linx64/include/grpc/impl/codegen/propagation_bits.h b/linx64/include/grpc/impl/codegen/propagation_bits.h deleted file mode 100644 index 824bdbd8..00000000 --- a/linx64/include/grpc/impl/codegen/propagation_bits.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H -#define GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Propagation bits: this can be bitwise or-ed to form propagation_mask for - * grpc_call */ -/** Propagate deadline */ -#define GRPC_PROPAGATE_DEADLINE ((uint32_t)1) -/** Propagate census context */ -#define GRPC_PROPAGATE_CENSUS_STATS_CONTEXT ((uint32_t)2) -#define GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT ((uint32_t)4) -/** Propagate cancellation */ -#define GRPC_PROPAGATE_CANCELLATION ((uint32_t)8) - -/** Default propagation mask: clients of the core API are encouraged to encode - deltas from this in their implementations... ie write: - GRPC_PROPAGATE_DEFAULTS & ~GRPC_PROPAGATE_DEADLINE to disable deadline - propagation. Doing so gives flexibility in the future to define new - propagation types that are default inherited or not. */ -#define GRPC_PROPAGATE_DEFAULTS \ - ((uint32_t)(( \ - 0xffff | GRPC_PROPAGATE_DEADLINE | GRPC_PROPAGATE_CENSUS_STATS_CONTEXT | \ - GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT | GRPC_PROPAGATE_CANCELLATION))) - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H */ diff --git a/linx64/include/grpc/impl/codegen/slice.h b/linx64/include/grpc/impl/codegen/slice.h deleted file mode 100644 index a04c683a..00000000 --- a/linx64/include/grpc/impl/codegen/slice.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * - * 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_SLICE_H -#define GRPC_IMPL_CODEGEN_SLICE_H - -#include - -#include - -#include -#include - -typedef struct grpc_slice grpc_slice; - -/** Slice API - - A slice represents a contiguous reference counted array of bytes. - It is cheap to take references to a slice, and it is cheap to create a - slice pointing to a subset of another slice. - - The data-structure for slices is exposed here to allow non-gpr code to - build slices from whatever data they have available. - - When defining interfaces that handle slices, care should be taken to define - reference ownership semantics (who should call unref?) and mutability - constraints (is the callee allowed to modify the slice?) */ - -typedef struct grpc_slice_refcount_vtable { - void (*ref)(void *); - void (*unref)(grpc_exec_ctx *exec_ctx, void *); - int (*eq)(grpc_slice a, grpc_slice b); - uint32_t (*hash)(grpc_slice slice); -} grpc_slice_refcount_vtable; - -/** Reference count container for grpc_slice. Contains function pointers to - increment and decrement reference counts. Implementations should cleanup - when the reference count drops to zero. - Typically client code should not touch this, and use grpc_slice_malloc, - grpc_slice_new, or grpc_slice_new_with_len instead. */ -typedef struct grpc_slice_refcount { - const grpc_slice_refcount_vtable *vtable; - /** If a subset of this slice is taken, use this pointer for the refcount. - Typically points back to the refcount itself, however iterning - implementations can use this to avoid a verification step on each hash - or equality check */ - struct grpc_slice_refcount *sub_refcount; -} grpc_slice_refcount; - -#define GRPC_SLICE_INLINED_SIZE (sizeof(size_t) + sizeof(uint8_t *) - 1) - -/** A grpc_slice s, if initialized, represents the byte range - s.bytes[0..s.length-1]. - - It can have an associated ref count which has a destruction routine to be run - when the ref count reaches zero (see grpc_slice_new() and grp_slice_unref()). - Multiple grpc_slice values may share a ref count. - - If the slice does not have a refcount, it represents an inlined small piece - of data that is copied by value. */ -struct grpc_slice { - struct grpc_slice_refcount *refcount; - union grpc_slice_data { - struct grpc_slice_refcounted { - uint8_t *bytes; - size_t length; - } refcounted; - struct grpc_slice_inlined { - uint8_t length; - uint8_t bytes[GRPC_SLICE_INLINED_SIZE]; - } inlined; - } data; -}; - -#define GRPC_SLICE_BUFFER_INLINE_ELEMENTS 8 - -/** Represents an expandable array of slices, to be interpreted as a - single item. */ -typedef struct { - /** This is for internal use only. External users (i.e any code outside grpc - * core) MUST NOT use this field */ - grpc_slice *base_slices; - - /** slices in the array (Points to the first valid grpc_slice in the array) */ - grpc_slice *slices; - /** the number of slices in the array */ - size_t count; - /** the number of slices allocated in the array. External users (i.e any code - * outside grpc core) MUST NOT use this field */ - size_t capacity; - /** the combined length of all slices in the array */ - size_t length; - /** inlined elements to avoid allocations */ - grpc_slice inlined[GRPC_SLICE_BUFFER_INLINE_ELEMENTS]; -} grpc_slice_buffer; - -#define GRPC_SLICE_START_PTR(slice) \ - ((slice).refcount ? (slice).data.refcounted.bytes \ - : (slice).data.inlined.bytes) -#define GRPC_SLICE_LENGTH(slice) \ - ((slice).refcount ? (slice).data.refcounted.length \ - : (slice).data.inlined.length) -#define GRPC_SLICE_SET_LENGTH(slice, newlen) \ - ((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \ - : ((slice).data.inlined.length = (uint8_t)(newlen))) -#define GRPC_SLICE_END_PTR(slice) \ - GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice) -#define GRPC_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0) - -#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS - -/* Duplicate GPR_* definitions */ -#define GPR_SLICE_START_PTR(slice) \ - ((slice).refcount ? (slice).data.refcounted.bytes \ - : (slice).data.inlined.bytes) -#define GPR_SLICE_LENGTH(slice) \ - ((slice).refcount ? (slice).data.refcounted.length \ - : (slice).data.inlined.length) -#define GPR_SLICE_SET_LENGTH(slice, newlen) \ - ((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \ - : ((slice).data.inlined.length = (uint8_t)(newlen))) -#define GPR_SLICE_END_PTR(slice) \ - GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice) -#define GPR_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0) - -#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */ - -#endif /* GRPC_IMPL_CODEGEN_SLICE_H */ diff --git a/linx64/include/grpc/impl/codegen/status.h b/linx64/include/grpc/impl/codegen/status.h deleted file mode 100644 index 9bc3dc95..00000000 --- a/linx64/include/grpc/impl/codegen/status.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * - * 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_STATUS_H -#define GRPC_IMPL_CODEGEN_STATUS_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - /** Not an error; returned on success */ - GRPC_STATUS_OK = 0, - - /** The operation was cancelled (typically by the caller). */ - GRPC_STATUS_CANCELLED = 1, - - /** Unknown error. An example of where this error may be returned is - if a Status value received from another address space belongs to - an error-space that is not known in this address space. Also - errors raised by APIs that do not return enough error information - may be converted to this error. */ - GRPC_STATUS_UNKNOWN = 2, - - /** Client specified an invalid argument. Note that this differs - from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments - that are problematic regardless of the state of the system - (e.g., a malformed file name). */ - GRPC_STATUS_INVALID_ARGUMENT = 3, - - /** Deadline expired before operation could complete. For operations - that change the state of the system, this error may be returned - even if the operation has completed successfully. For example, a - successful response from a server could have been delayed long - enough for the deadline to expire. */ - GRPC_STATUS_DEADLINE_EXCEEDED = 4, - - /** Some requested entity (e.g., file or directory) was not found. */ - GRPC_STATUS_NOT_FOUND = 5, - - /** Some entity that we attempted to create (e.g., file or directory) - already exists. */ - GRPC_STATUS_ALREADY_EXISTS = 6, - - /** The caller does not have permission to execute the specified - operation. PERMISSION_DENIED must not be used for rejections - caused by exhausting some resource (use RESOURCE_EXHAUSTED - instead for those errors). PERMISSION_DENIED must not be - used if the caller can not be identified (use UNAUTHENTICATED - instead for those errors). */ - GRPC_STATUS_PERMISSION_DENIED = 7, - - /** The request does not have valid authentication credentials for the - operation. */ - GRPC_STATUS_UNAUTHENTICATED = 16, - - /** Some resource has been exhausted, perhaps a per-user quota, or - perhaps the entire file system is out of space. */ - GRPC_STATUS_RESOURCE_EXHAUSTED = 8, - - /** Operation was rejected because the system is not in a state - required for the operation's execution. For example, directory - to be deleted may be non-empty, an rmdir operation is applied to - a non-directory, etc. - - A litmus test that may help a service implementor in deciding - between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE: - (a) Use UNAVAILABLE if the client can retry just the failing call. - (b) Use ABORTED if the client should retry at a higher-level - (e.g., restarting a read-modify-write sequence). - (c) Use FAILED_PRECONDITION if the client should not retry until - the system state has been explicitly fixed. E.g., if an "rmdir" - fails because the directory is non-empty, FAILED_PRECONDITION - should be returned since the client should not retry unless - they have first fixed up the directory by deleting files from it. - (d) Use FAILED_PRECONDITION if the client performs conditional - REST Get/Update/Delete on a resource and the resource on the - server does not match the condition. E.g., conflicting - read-modify-write on the same resource. */ - GRPC_STATUS_FAILED_PRECONDITION = 9, - - /** The operation was aborted, typically due to a concurrency issue - like sequencer check failures, transaction aborts, etc. - - See litmus test above for deciding between FAILED_PRECONDITION, - ABORTED, and UNAVAILABLE. */ - GRPC_STATUS_ABORTED = 10, - - /** Operation was attempted past the valid range. E.g., seeking or - reading past end of file. - - Unlike INVALID_ARGUMENT, this error indicates a problem that may - be fixed if the system state changes. For example, a 32-bit file - system will generate INVALID_ARGUMENT if asked to read at an - offset that is not in the range [0,2^32-1], but it will generate - OUT_OF_RANGE if asked to read from an offset past the current - file size. - - There is a fair bit of overlap between FAILED_PRECONDITION and - OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific - error) when it applies so that callers who are iterating through - a space can easily look for an OUT_OF_RANGE error to detect when - they are done. */ - GRPC_STATUS_OUT_OF_RANGE = 11, - - /** Operation is not implemented or not supported/enabled in this service. */ - GRPC_STATUS_UNIMPLEMENTED = 12, - - /** Internal errors. Means some invariants expected by underlying - system has been broken. If you see one of these errors, - something is very broken. */ - GRPC_STATUS_INTERNAL = 13, - - /** The service is currently unavailable. This is a most likely a - transient condition and may be corrected by retrying with - a backoff. - - WARNING: Although data MIGHT not have been transmitted when this - status occurs, there is NOT A GUARANTEE that the server has not seen - anything. So in general it is unsafe to retry on this status code - if the call is non-idempotent. - - See litmus test above for deciding between FAILED_PRECONDITION, - ABORTED, and UNAVAILABLE. */ - GRPC_STATUS_UNAVAILABLE = 14, - - /** Unrecoverable data loss or corruption. */ - GRPC_STATUS_DATA_LOSS = 15, - - /** Force users to include a default branch: */ - GRPC_STATUS__DO_NOT_USE = -1 -} grpc_status_code; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_STATUS_H */ diff --git a/linx64/include/grpc/impl/codegen/sync.h b/linx64/include/grpc/impl/codegen/sync.h deleted file mode 100644 index de4e99be..00000000 --- a/linx64/include/grpc/impl/codegen/sync.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_SYNC_H -#define GRPC_IMPL_CODEGEN_SYNC_H -/** Synchronization primitives for GPR. - - The type gpr_mu provides a non-reentrant mutex (lock). - - The type gpr_cv provides a condition variable. - - The type gpr_once provides for one-time initialization. - - The type gpr_event provides one-time-setting, reading, and - waiting of a void*, with memory barriers. - - The type gpr_refcount provides an object reference counter, - with memory barriers suitable to control - object lifetimes. - - The type gpr_stats_counter provides an atomic statistics counter. It - provides no memory barriers. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Platform-specific type declarations of gpr_mu and gpr_cv. */ -#include -#include - -#if defined(GPR_POSIX_SYNC) -#include -#elif defined(GPR_WINDOWS) -#include -#elif !defined(GPR_CUSTOM_SYNC) -#error Unable to determine platform for sync -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_SYNC_H */ diff --git a/linx64/include/grpc/impl/codegen/sync_generic.h b/linx64/include/grpc/impl/codegen/sync_generic.h deleted file mode 100644 index e1eea542..00000000 --- a/linx64/include/grpc/impl/codegen/sync_generic.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * - * 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_SYNC_GENERIC_H -#define GRPC_IMPL_CODEGEN_SYNC_GENERIC_H -/* Generic type defintions for gpr_sync. */ - -#include - -/* gpr_event */ -typedef struct { gpr_atm state; } gpr_event; - -#define GPR_EVENT_INIT \ - { 0 } - -/* gpr_refcount */ -typedef struct { gpr_atm count; } gpr_refcount; - -/* gpr_stats_counter */ -typedef struct { gpr_atm value; } gpr_stats_counter; - -#define GPR_STATS_INIT \ - { 0 } - -#endif /* GRPC_IMPL_CODEGEN_SYNC_GENERIC_H */ diff --git a/linx64/include/grpc/impl/codegen/sync_posix.h b/linx64/include/grpc/impl/codegen/sync_posix.h deleted file mode 100644 index 6a3aed92..00000000 --- a/linx64/include/grpc/impl/codegen/sync_posix.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * 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_SYNC_POSIX_H -#define GRPC_IMPL_CODEGEN_SYNC_POSIX_H - -#include - -#include - -typedef pthread_mutex_t gpr_mu; -typedef pthread_cond_t gpr_cv; -typedef pthread_once_t gpr_once; - -#define GPR_ONCE_INIT PTHREAD_ONCE_INIT - -#endif /* GRPC_IMPL_CODEGEN_SYNC_POSIX_H */ diff --git a/linx64/include/grpc/impl/codegen/sync_windows.h b/linx64/include/grpc/impl/codegen/sync_windows.h deleted file mode 100644 index 39b12760..00000000 --- a/linx64/include/grpc/impl/codegen/sync_windows.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * - * 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_SYNC_WINDOWS_H -#define GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H - -#include - -typedef struct { - CRITICAL_SECTION cs; /* Not an SRWLock until Vista is unsupported */ - int locked; -} gpr_mu; - -typedef CONDITION_VARIABLE gpr_cv; - -typedef INIT_ONCE gpr_once; -#define GPR_ONCE_INIT INIT_ONCE_STATIC_INIT - -#endif /* GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H */ diff --git a/linx64/include/grpc/load_reporting.h b/linx64/include/grpc/load_reporting.h deleted file mode 100644 index 55f50ea8..00000000 --- a/linx64/include/grpc/load_reporting.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * - * 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_LOAD_REPORTING_H -#define GRPC_LOAD_REPORTING_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Metadata key for the gRPC LB load balancer token. - * - * The value corresponding to this key is an opaque token that is given to the - * frontend as part of each pick; the frontend sends this token to the backend - * in each request it sends when using that pick. The token is used by the - * backend to verify the request and to allow the backend to report load to the - * gRPC LB system. */ -#define GRPC_LB_TOKEN_MD_KEY "lb-token" - -/** Metadata key for gRPC LB cost reporting. - * - * The value corresponding to this key is an opaque binary blob reported by the - * backend as part of its trailing metadata containing cost information for the - * call. */ -#define GRPC_LB_COST_MD_KEY "lb-cost-bin" - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_LOAD_REPORTING_H */ diff --git a/linx64/include/grpc/slice.h b/linx64/include/grpc/slice.h deleted file mode 100644 index 9d2a9fbc..00000000 --- a/linx64/include/grpc/slice.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * - * 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_SLICE_H -#define GRPC_SLICE_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Increment the refcount of s. Requires slice is initialized. - Returns s. */ -GPRAPI grpc_slice grpc_slice_ref(grpc_slice s); - -/** Decrement the ref count of s. If the ref count of s reaches zero, all - slices sharing the ref count are destroyed, and considered no longer - initialized. If s is ultimately derived from a call to grpc_slice_new(start, - len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is - ultimately derived from a call to grpc_slice_new_with_len(start, len, dest) - where dest!=NULL , then (*dest)(start, len). Requires s initialized. */ -GPRAPI void grpc_slice_unref(grpc_slice s); - -/** Copy slice - create a new slice that contains the same data as s */ -GPRAPI grpc_slice grpc_slice_copy(grpc_slice s); - -/** Create a slice pointing at some data. Calls malloc to allocate a refcount - for the object, and arranges that destroy will be called with the pointer - passed in at destruction. */ -GPRAPI grpc_slice grpc_slice_new(void *p, size_t len, void (*destroy)(void *)); - -/** Equivalent to grpc_slice_new, but with a separate pointer that is - passed to the destroy function. This function can be useful when - the data is part of a larger structure that must be destroyed when - the data is no longer needed. */ -GPRAPI grpc_slice grpc_slice_new_with_user_data(void *p, size_t len, - void (*destroy)(void *), - void *user_data); - -/** Equivalent to grpc_slice_new, but with a two argument destroy function that - also takes the slice length. */ -GPRAPI grpc_slice grpc_slice_new_with_len(void *p, size_t len, - void (*destroy)(void *, size_t)); - -/** Equivalent to grpc_slice_new(malloc(len), len, free), but saves one malloc() - call. - Aborts if malloc() fails. */ -GPRAPI grpc_slice grpc_slice_malloc(size_t length); -GPRAPI grpc_slice grpc_slice_malloc_large(size_t length); - -#define GRPC_SLICE_MALLOC(len) \ - ((len) <= GRPC_SLICE_INLINED_SIZE \ - ? (grpc_slice){.refcount = NULL, \ - .data.inlined = {.length = (uint8_t)(len)}} \ - : grpc_slice_malloc_large((len))) - -/** Intern a slice: - - The return value for two invocations of this function with the same sequence - of bytes is a slice which points to the same memory. */ -GPRAPI grpc_slice grpc_slice_intern(grpc_slice slice); - -/** Create a slice by copying a string. - Does not preserve null terminators. - Equivalent to: - size_t len = strlen(source); - grpc_slice slice = grpc_slice_malloc(len); - memcpy(slice->data, source, len); */ -GPRAPI grpc_slice grpc_slice_from_copied_string(const char *source); - -/** Create a slice by copying a buffer. - Equivalent to: - grpc_slice slice = grpc_slice_malloc(len); - memcpy(slice->data, source, len); */ -GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char *source, size_t len); - -/** Create a slice pointing to constant memory */ -GPRAPI grpc_slice grpc_slice_from_static_string(const char *source); - -/** Create a slice pointing to constant memory */ -GPRAPI grpc_slice grpc_slice_from_static_buffer(const void *source, size_t len); - -/** Return a result slice derived from s, which shares a ref count with \a s, - where result.data==s.data+begin, and result.length==end-begin. The ref count - of \a s is increased by one. Do not assign result back to \a s. - Requires s initialized, begin <= end, begin <= s.length, and - end <= source->length. */ -GPRAPI grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end); - -/** The same as grpc_slice_sub, but without altering the ref count */ -GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end); - -/** Splits s into two: modifies s to be s[0:split], and returns a new slice, - sharing a refcount with s, that contains s[split:s.length]. - Requires s intialized, split <= s.length */ -GPRAPI grpc_slice grpc_slice_split_tail(grpc_slice *s, size_t split); - -typedef enum { - GRPC_SLICE_REF_TAIL = 1, - GRPC_SLICE_REF_HEAD = 2, - GRPC_SLICE_REF_BOTH = 1 + 2 -} grpc_slice_ref_whom; - -/** The same as grpc_slice_split_tail, but with an option to skip altering - * refcounts (grpc_slice_split_tail_maybe_ref(..., true) is equivalent to - * grpc_slice_split_tail(...)) */ -GPRAPI grpc_slice grpc_slice_split_tail_maybe_ref(grpc_slice *s, size_t split, - grpc_slice_ref_whom ref_whom); - -/** Splits s into two: modifies s to be s[split:s.length], and returns a new - slice, sharing a refcount with s, that contains s[0:split]. - Requires s intialized, split <= s.length */ -GPRAPI grpc_slice grpc_slice_split_head(grpc_slice *s, size_t split); - -GPRAPI grpc_slice grpc_empty_slice(void); - -GPRAPI uint32_t grpc_slice_default_hash_impl(grpc_slice s); -GPRAPI int grpc_slice_default_eq_impl(grpc_slice a, grpc_slice b); - -GPRAPI int grpc_slice_eq(grpc_slice a, grpc_slice b); - -/** Returns <0 if a < b, ==0 if a == b, >0 if a > b - The order is arbitrary, and is not guaranteed to be stable across different - versions of the API. */ -GPRAPI int grpc_slice_cmp(grpc_slice a, grpc_slice b); -GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char *b); -GPRAPI int grpc_slice_buf_cmp(grpc_slice a, const void *b, size_t blen); - -/** return non-zero if the first blen bytes of a are equal to b */ -GPRAPI int grpc_slice_buf_start_eq(grpc_slice a, const void *b, size_t blen); - -/** return the index of the last instance of \a c in \a s, or -1 if not found */ -GPRAPI int grpc_slice_rchr(grpc_slice s, char c); -GPRAPI int grpc_slice_chr(grpc_slice s, char c); - -/** return the index of the first occurance of \a needle in \a haystack, or -1 - if it's not found */ -GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle); - -GPRAPI uint32_t grpc_slice_hash(grpc_slice s); - -/** Do two slices point at the same memory, with the same length - If a or b is inlined, actually compares data */ -GPRAPI int grpc_slice_is_equivalent(grpc_slice a, grpc_slice b); - -/** Return a slice pointing to newly allocated memory that has the same contents - * as \a s */ -GPRAPI grpc_slice grpc_slice_dup(grpc_slice a); - -/** Return a copy of slice as a C string. Offers no protection against embedded - NULL's. Returned string must be freed with gpr_free. */ -GPRAPI char *grpc_slice_to_c_string(grpc_slice s); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SLICE_H */ diff --git a/linx64/include/grpc/slice_buffer.h b/linx64/include/grpc/slice_buffer.h deleted file mode 100644 index de4b86f7..00000000 --- a/linx64/include/grpc/slice_buffer.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * - * 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_SLICE_BUFFER_H -#define GRPC_SLICE_BUFFER_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** initialize a slice buffer */ -GPRAPI void grpc_slice_buffer_init(grpc_slice_buffer *sb); -/** destroy a slice buffer - unrefs any held elements */ -GPRAPI void grpc_slice_buffer_destroy(grpc_slice_buffer *sb); -/** Add an element to a slice buffer - takes ownership of the slice. - This function is allowed to concatenate the passed in slice to the end of - some other slice if desired by the slice buffer. */ -GPRAPI void grpc_slice_buffer_add(grpc_slice_buffer *sb, grpc_slice slice); -/** add an element to a slice buffer - takes ownership of the slice and returns - the index of the slice. - Guarantees that the slice will not be concatenated at the end of another - slice (i.e. the data for this slice will begin at the first byte of the - slice at the returned index in sb->slices) - The implementation MAY decide to concatenate data at the end of a small - slice added in this fashion. */ -GPRAPI size_t grpc_slice_buffer_add_indexed(grpc_slice_buffer *sb, - grpc_slice slice); -GPRAPI void grpc_slice_buffer_addn(grpc_slice_buffer *sb, grpc_slice *slices, - size_t n); -/** add a very small (less than 8 bytes) amount of data to the end of a slice - buffer: returns a pointer into which to add the data */ -GPRAPI uint8_t *grpc_slice_buffer_tiny_add(grpc_slice_buffer *sb, size_t len); -/** pop the last buffer, but don't unref it */ -GPRAPI void grpc_slice_buffer_pop(grpc_slice_buffer *sb); -/** clear a slice buffer, unref all elements */ -GPRAPI void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer *sb); -/** swap the contents of two slice buffers */ -GPRAPI void grpc_slice_buffer_swap(grpc_slice_buffer *a, grpc_slice_buffer *b); -/** move all of the elements of src into dst */ -GPRAPI void grpc_slice_buffer_move_into(grpc_slice_buffer *src, - grpc_slice_buffer *dst); -/** remove n bytes from the end of a slice buffer */ -GPRAPI void grpc_slice_buffer_trim_end(grpc_slice_buffer *src, size_t n, - grpc_slice_buffer *garbage); -/** move the first n bytes of src into dst */ -GPRAPI void grpc_slice_buffer_move_first(grpc_slice_buffer *src, size_t n, - grpc_slice_buffer *dst); -/** move the first n bytes of src into dst without adding references */ -GPRAPI void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer *src, - size_t n, - grpc_slice_buffer *dst); -/** move the first n bytes of src into dst (copying them) */ -GPRAPI void grpc_slice_buffer_move_first_into_buffer(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *src, - size_t n, void *dst); -/** take the first slice in the slice buffer */ -GPRAPI grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer *src); -/** undo the above with (a possibly different) \a slice */ -GPRAPI void grpc_slice_buffer_undo_take_first(grpc_slice_buffer *src, - grpc_slice slice); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SLICE_BUFFER_H */ diff --git a/linx64/include/grpc/status.h b/linx64/include/grpc/status.h deleted file mode 100644 index 9d8f50bc..00000000 --- a/linx64/include/grpc/status.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_STATUS_H -#define GRPC_STATUS_H - -#include - -#endif /* GRPC_STATUS_H */ diff --git a/linx64/include/grpc/support/alloc.h b/linx64/include/grpc/support/alloc.h deleted file mode 100644 index 4b59e137..00000000 --- a/linx64/include/grpc/support/alloc.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * - * 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_SUPPORT_ALLOC_H -#define GRPC_SUPPORT_ALLOC_H - -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct gpr_allocation_functions { - void *(*malloc_fn)(size_t size); - void *(*zalloc_fn)(size_t size); /** if NULL, uses malloc_fn then memset */ - void *(*realloc_fn)(void *ptr, size_t size); - void (*free_fn)(void *ptr); -} gpr_allocation_functions; - -/** malloc. - * If size==0, always returns NULL. Otherwise this function never returns NULL. - * The pointer returned is suitably aligned for any kind of variable it could - * contain. - */ -GPRAPI void *gpr_malloc(size_t size); -/** like malloc, but zero all bytes before returning them */ -GPRAPI void *gpr_zalloc(size_t size); -/** free */ -GPRAPI void gpr_free(void *ptr); -/** realloc, never returns NULL */ -GPRAPI void *gpr_realloc(void *p, size_t size); -/** aligned malloc, never returns NULL, will align to 1 << alignment_log */ -GPRAPI void *gpr_malloc_aligned(size_t size, size_t alignment_log); -/** free memory allocated by gpr_malloc_aligned */ -GPRAPI void gpr_free_aligned(void *ptr); - -/** Request the family of allocation functions in \a functions be used. NOTE - * that this request will be honored in a *best effort* basis and that no - * guarantees are made about the default functions (eg, malloc) being called. - * The functions.free_fn implementation must be a no-op for NULL input. */ -GPRAPI void gpr_set_allocation_functions(gpr_allocation_functions functions); - -/** Return the family of allocation functions currently in effect. */ -GPRAPI gpr_allocation_functions gpr_get_allocation_functions(); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_ALLOC_H */ diff --git a/linx64/include/grpc/support/atm.h b/linx64/include/grpc/support/atm.h deleted file mode 100644 index b3afa520..00000000 --- a/linx64/include/grpc/support/atm.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_ATM_H -#define GRPC_SUPPORT_ATM_H - -#include - -#endif /* GRPC_SUPPORT_ATM_H */ diff --git a/linx64/include/grpc/support/atm_gcc_atomic.h b/linx64/include/grpc/support/atm_gcc_atomic.h deleted file mode 100644 index e7b5ec40..00000000 --- a/linx64/include/grpc/support/atm_gcc_atomic.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_ATM_GCC_ATOMIC_H -#define GRPC_SUPPORT_ATM_GCC_ATOMIC_H - -#include - -#endif /* GRPC_SUPPORT_ATM_GCC_ATOMIC_H */ diff --git a/linx64/include/grpc/support/atm_gcc_sync.h b/linx64/include/grpc/support/atm_gcc_sync.h deleted file mode 100644 index 72848977..00000000 --- a/linx64/include/grpc/support/atm_gcc_sync.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_ATM_GCC_SYNC_H -#define GRPC_SUPPORT_ATM_GCC_SYNC_H - -#include - -#endif /* GRPC_SUPPORT_ATM_GCC_SYNC_H */ diff --git a/linx64/include/grpc/support/atm_windows.h b/linx64/include/grpc/support/atm_windows.h deleted file mode 100644 index 554c59a8..00000000 --- a/linx64/include/grpc/support/atm_windows.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_ATM_WINDOWS_H -#define GRPC_SUPPORT_ATM_WINDOWS_H - -#include - -#endif /* GRPC_SUPPORT_ATM_WINDOWS_H */ diff --git a/linx64/include/grpc/support/avl.h b/linx64/include/grpc/support/avl.h deleted file mode 100644 index d53ff5d9..00000000 --- a/linx64/include/grpc/support/avl.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * - * 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_SUPPORT_AVL_H -#define GRPC_SUPPORT_AVL_H - -#include - -/** internal node of an AVL tree */ -typedef struct gpr_avl_node { - gpr_refcount refs; - void *key; - void *value; - struct gpr_avl_node *left; - struct gpr_avl_node *right; - long height; -} gpr_avl_node; - -/** vtable for the AVL tree - * The optional user_data is propagated from the top level gpr_avl_XXX API. - * From the same API call, multiple vtable functions may be called multiple - * times. - */ -typedef struct gpr_avl_vtable { - /** destroy a key */ - void (*destroy_key)(void *key, void *user_data); - /** copy a key, returning new value */ - void *(*copy_key)(void *key, void *user_data); - /** compare key1, key2; return <0 if key1 < key2, - >0 if key1 > key2, 0 if key1 == key2 */ - long (*compare_keys)(void *key1, void *key2, void *user_data); - /** destroy a value */ - void (*destroy_value)(void *value, void *user_data); - /** copy a value */ - void *(*copy_value)(void *value, void *user_data); -} gpr_avl_vtable; - -/** "pointer" to an AVL tree - this is a reference - counted object - use gpr_avl_ref to add a reference, - gpr_avl_unref when done with a reference */ -typedef struct gpr_avl { - const gpr_avl_vtable *vtable; - gpr_avl_node *root; -} gpr_avl; - -/** Create an immutable AVL tree. */ -GPRAPI gpr_avl gpr_avl_create(const gpr_avl_vtable *vtable); -/** Add a reference to an existing tree - returns - the tree as a convenience. The optional user_data will be passed to vtable - functions. */ -GPRAPI gpr_avl gpr_avl_ref(gpr_avl avl, void *user_data); -/** Remove a reference to a tree - destroying it if there - are no references left. The optional user_data will be passed to vtable - functions. */ -GPRAPI void gpr_avl_unref(gpr_avl avl, void *user_data); -/** Return a new tree with (key, value) added to avl. - implicitly unrefs avl to allow easy chaining. - if key exists in avl, the new tree's key entry updated - (i.e. a duplicate is not created). The optional user_data will be passed to - vtable functions. */ -GPRAPI gpr_avl gpr_avl_add(gpr_avl avl, void *key, void *value, - void *user_data); -/** Return a new tree with key deleted - implicitly unrefs avl to allow easy chaining. The optional user_data will be - passed to vtable functions. */ -GPRAPI gpr_avl gpr_avl_remove(gpr_avl avl, void *key, void *user_data); -/** Lookup key, and return the associated value. - Does not mutate avl. - Returns NULL if key is not found. The optional user_data will be passed to - vtable functions.*/ -GPRAPI void *gpr_avl_get(gpr_avl avl, void *key, void *user_data); -/** Return 1 if avl contains key, 0 otherwise; if it has the key, sets *value to - its value. THe optional user_data will be passed to vtable functions. */ -GPRAPI int gpr_avl_maybe_get(gpr_avl avl, void *key, void **value, - void *user_data); -/** Return 1 if avl is empty, 0 otherwise */ -GPRAPI int gpr_avl_is_empty(gpr_avl avl); - -#endif /* GRPC_SUPPORT_AVL_H */ diff --git a/linx64/include/grpc/support/cmdline.h b/linx64/include/grpc/support/cmdline.h deleted file mode 100644 index 9f46491b..00000000 --- a/linx64/include/grpc/support/cmdline.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * - * 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_SUPPORT_CMDLINE_H -#define GRPC_SUPPORT_CMDLINE_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Simple command line parser. - - Supports flags that can be specified as -foo, --foo, --no-foo, -no-foo, etc - And integers, strings that can be specified as -foo=4, -foo blah, etc - - No support for short command line options (but we may get that in the - future.) - - Usage (for a program with a single flag argument 'foo'): - - int main(int argc, char **argv) { - gpr_cmdline *cl; - int verbose = 0; - - cl = gpr_cmdline_create("My cool tool"); - gpr_cmdline_add_int(cl, "verbose", "Produce verbose output?", &verbose); - gpr_cmdline_parse(cl, argc, argv); - gpr_cmdline_destroy(cl); - - if (verbose) { - gpr_log(GPR_INFO, "Goodbye cruel world!"); - } - - return 0; - } */ - -typedef struct gpr_cmdline gpr_cmdline; - -/** Construct a command line parser: takes a short description of the tool - doing the parsing */ -GPRAPI gpr_cmdline *gpr_cmdline_create(const char *description); -/** Add an integer parameter, with a name (used on the command line) and some - helpful text (used in the command usage) */ -GPRAPI void gpr_cmdline_add_int(gpr_cmdline *cl, const char *name, - const char *help, int *value); -/** The same, for a boolean flag */ -GPRAPI void gpr_cmdline_add_flag(gpr_cmdline *cl, const char *name, - const char *help, int *value); -/** And for a string */ -GPRAPI void gpr_cmdline_add_string(gpr_cmdline *cl, const char *name, - const char *help, char **value); -/** Set a callback for non-named arguments */ -GPRAPI void gpr_cmdline_on_extra_arg( - gpr_cmdline *cl, const char *name, const char *help, - void (*on_extra_arg)(void *user_data, const char *arg), void *user_data); -/** Enable surviving failure: default behavior is to exit the process */ -GPRAPI void gpr_cmdline_set_survive_failure(gpr_cmdline *cl); -/** Parse the command line; returns 1 on success, on failure either dies - (by default) or returns 0 if gpr_cmdline_set_survive_failure() has been - called */ -GPRAPI int gpr_cmdline_parse(gpr_cmdline *cl, int argc, char **argv); -/** Destroy the parser */ -GPRAPI void gpr_cmdline_destroy(gpr_cmdline *cl); -/** Get a string describing usage */ -GPRAPI char *gpr_cmdline_usage_string(gpr_cmdline *cl, const char *argv0); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_CMDLINE_H */ diff --git a/linx64/include/grpc/support/cpu.h b/linx64/include/grpc/support/cpu.h deleted file mode 100644 index f0e898e8..00000000 --- a/linx64/include/grpc/support/cpu.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - * 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_SUPPORT_CPU_H -#define GRPC_SUPPORT_CPU_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Interface providing CPU information for currently running system */ - -/** Return the number of CPU cores on the current system. Will return 0 if - the information is not available. */ -GPRAPI unsigned gpr_cpu_num_cores(void); - -/** Return the CPU on which the current thread is executing; N.B. This should - be considered advisory only - it is possible that the thread is switched - to a different CPU at any time. Returns a value in range - [0, gpr_cpu_num_cores() - 1] */ -GPRAPI unsigned gpr_cpu_current_cpu(void); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif /* GRPC_SUPPORT_CPU_H */ diff --git a/linx64/include/grpc/support/histogram.h b/linx64/include/grpc/support/histogram.h deleted file mode 100644 index 8489daa2..00000000 --- a/linx64/include/grpc/support/histogram.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - * 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_SUPPORT_HISTOGRAM_H -#define GRPC_SUPPORT_HISTOGRAM_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct gpr_histogram gpr_histogram; - -GPRAPI gpr_histogram *gpr_histogram_create(double resolution, - double max_bucket_start); -GPRAPI void gpr_histogram_destroy(gpr_histogram *h); -GPRAPI void gpr_histogram_add(gpr_histogram *h, double x); - -/** The following merges the second histogram into the first. It only works - if they have the same buckets and resolution. Returns 0 on failure, 1 - on success */ -GPRAPI int gpr_histogram_merge(gpr_histogram *dst, const gpr_histogram *src); - -GPRAPI double gpr_histogram_percentile(gpr_histogram *histogram, - double percentile); -GPRAPI double gpr_histogram_mean(gpr_histogram *histogram); -GPRAPI double gpr_histogram_stddev(gpr_histogram *histogram); -GPRAPI double gpr_histogram_variance(gpr_histogram *histogram); -GPRAPI double gpr_histogram_maximum(gpr_histogram *histogram); -GPRAPI double gpr_histogram_minimum(gpr_histogram *histogram); -GPRAPI double gpr_histogram_count(gpr_histogram *histogram); -GPRAPI double gpr_histogram_sum(gpr_histogram *histogram); -GPRAPI double gpr_histogram_sum_of_squares(gpr_histogram *histogram); - -GPRAPI const uint32_t *gpr_histogram_get_contents(gpr_histogram *histogram, - size_t *count); -GPRAPI void gpr_histogram_merge_contents(gpr_histogram *histogram, - const uint32_t *data, - size_t data_count, double min_seen, - double max_seen, double sum, - double sum_of_squares, double count); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_HISTOGRAM_H */ diff --git a/linx64/include/grpc/support/host_port.h b/linx64/include/grpc/support/host_port.h deleted file mode 100644 index 41592dfe..00000000 --- a/linx64/include/grpc/support/host_port.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * 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_SUPPORT_HOST_PORT_H -#define GRPC_SUPPORT_HOST_PORT_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Given a host and port, creates a newly-allocated string of the form - "host:port" or "[ho:st]:port", depending on whether the host contains colons - like an IPv6 literal. If the host is already bracketed, then additional - brackets will not be added. - - Usage is similar to gpr_asprintf: returns the number of bytes written - (excluding the final '\0'), and *out points to a string which must later be - destroyed using gpr_free(). - - In the unlikely event of an error, returns -1 and sets *out to NULL. */ -GPRAPI int gpr_join_host_port(char **out, const char *host, int port); - -/** Given a name in the form "host:port" or "[ho:st]:port", split into hostname - and port number, into newly allocated strings, which must later be - destroyed using gpr_free(). - Return 1 on success, 0 on failure. Guarantees *host and *port == NULL on - failure. */ -GPRAPI int gpr_split_host_port(const char *name, char **host, char **port); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_HOST_PORT_H */ diff --git a/linx64/include/grpc/support/log.h b/linx64/include/grpc/support/log.h deleted file mode 100644 index a22fb6a6..00000000 --- a/linx64/include/grpc/support/log.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * - * 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_SUPPORT_LOG_H -#define GRPC_SUPPORT_LOG_H - -#include -#include -#include /* for abort() */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** GPR log API. - - Usage (within grpc): - - int argument1 = 3; - char* argument2 = "hello"; - gpr_log(GPR_DEBUG, "format string %d", argument1); - gpr_log(GPR_INFO, "hello world"); - gpr_log(GPR_ERROR, "%d %s!!", argument1, argument2); */ - -/** The severity of a log message - use the #defines below when calling into - gpr_log to additionally supply file and line data */ -typedef enum gpr_log_severity { - GPR_LOG_SEVERITY_DEBUG, - GPR_LOG_SEVERITY_INFO, - GPR_LOG_SEVERITY_ERROR -} gpr_log_severity; - -#define GPR_LOG_VERBOSITY_UNSET -1 - -/** Returns a string representation of the log severity */ -GPRAPI const char *gpr_log_severity_string(gpr_log_severity severity); - -/** Macros to build log contexts at various severity levels */ -#define GPR_DEBUG __FILE__, __LINE__, GPR_LOG_SEVERITY_DEBUG -#define GPR_INFO __FILE__, __LINE__, GPR_LOG_SEVERITY_INFO -#define GPR_ERROR __FILE__, __LINE__, GPR_LOG_SEVERITY_ERROR - -/** Log a message. It's advised to use GPR_xxx above to generate the context - * for each message */ -GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, - const char *format, ...) GPR_PRINT_FORMAT_CHECK(4, 5); - -GPRAPI void gpr_log_message(const char *file, int line, - gpr_log_severity severity, const char *message); - -/** Set global log verbosity */ -GPRAPI void gpr_set_log_verbosity(gpr_log_severity min_severity_to_print); - -GPRAPI void gpr_log_verbosity_init(); - -/** Log overrides: applications can use this API to intercept logging calls - and use their own implementations */ - -typedef struct { - const char *file; - int line; - gpr_log_severity severity; - const char *message; -} gpr_log_func_args; - -typedef void (*gpr_log_func)(gpr_log_func_args *args); -GPRAPI void gpr_set_log_function(gpr_log_func func); - -/** abort() the process if x is zero, having written a line to the log. - - Intended for internal invariants. If the error can be recovered from, - without the possibility of corruption, or might best be reflected via - an exception in a higher-level language, consider returning error code. */ -#define GPR_ASSERT(x) \ - do { \ - if (!(x)) { \ - gpr_log(GPR_ERROR, "assertion failed: %s", #x); \ - abort(); \ - } \ - } while (0) - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_LOG_H */ diff --git a/linx64/include/grpc/support/log_windows.h b/linx64/include/grpc/support/log_windows.h deleted file mode 100644 index b530fd50..00000000 --- a/linx64/include/grpc/support/log_windows.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * - * 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_SUPPORT_LOG_WINDOWS_H -#define GRPC_SUPPORT_LOG_WINDOWS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Returns a string allocated with gpr_malloc that contains a UTF-8 - * formatted error message, corresponding to the error messageid. - * Use in conjunction with GetLastError() et al. - */ -GPRAPI char *gpr_format_message(int messageid); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_LOG_WINDOWS_H */ diff --git a/linx64/include/grpc/support/port_platform.h b/linx64/include/grpc/support/port_platform.h deleted file mode 100644 index 26025dcd..00000000 --- a/linx64/include/grpc/support/port_platform.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_PORT_PLATFORM_H -#define GRPC_SUPPORT_PORT_PLATFORM_H - -#include - -#endif /* GRPC_SUPPORT_PORT_PLATFORM_H */ diff --git a/linx64/include/grpc/support/string_util.h b/linx64/include/grpc/support/string_util.h deleted file mode 100644 index c4fc159d..00000000 --- a/linx64/include/grpc/support/string_util.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * - * 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_SUPPORT_STRING_UTIL_H -#define GRPC_SUPPORT_STRING_UTIL_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** String utility functions */ - -/** Returns a copy of src that can be passed to gpr_free(). - If allocation fails or if src is NULL, returns NULL. */ -GPRAPI char *gpr_strdup(const char *src); - -/** printf to a newly-allocated string. The set of supported formats may vary - between platforms. - - On success, returns the number of bytes printed (excluding the final '\0'), - and *strp points to a string which must later be destroyed with gpr_free(). - - On error, returns -1 and sets *strp to NULL. If the format string is bad, - the result is undefined. */ -GPRAPI int gpr_asprintf(char **strp, const char *format, ...) - GPR_PRINT_FORMAT_CHECK(2, 3); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_STRING_UTIL_H */ diff --git a/linx64/include/grpc/support/subprocess.h b/linx64/include/grpc/support/subprocess.h deleted file mode 100644 index c06e6296..00000000 --- a/linx64/include/grpc/support/subprocess.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - * 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_SUPPORT_SUBPROCESS_H -#define GRPC_SUPPORT_SUBPROCESS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct gpr_subprocess gpr_subprocess; - -/** .exe on windows, empty on unices */ -GPRAPI const char *gpr_subprocess_binary_extension(); - -GPRAPI gpr_subprocess *gpr_subprocess_create(int argc, const char **argv); -/** if subprocess has not been joined, kill it */ -GPRAPI void gpr_subprocess_destroy(gpr_subprocess *p); -/** returns exit status; can be called at most once */ -GPRAPI int gpr_subprocess_join(gpr_subprocess *p); -GPRAPI void gpr_subprocess_interrupt(gpr_subprocess *p); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif /* GRPC_SUPPORT_SUBPROCESS_H */ diff --git a/linx64/include/grpc/support/sync.h b/linx64/include/grpc/support/sync.h deleted file mode 100644 index fe8a59a5..00000000 --- a/linx64/include/grpc/support/sync.h +++ /dev/null @@ -1,280 +0,0 @@ -/* - * - * 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_SUPPORT_SYNC_H -#define GRPC_SUPPORT_SYNC_H - -#include /* for gpr_timespec */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** --- Mutex interface --- - - At most one thread may hold an exclusive lock on a mutex at any given time. - Actions taken by a thread that holds a mutex exclusively happen after - actions taken by all previous holders of the mutex. Variables of type - gpr_mu are uninitialized when first declared. */ - -/** Initialize *mu. Requires: *mu uninitialized. */ -GPRAPI void gpr_mu_init(gpr_mu *mu); - -/** Cause *mu no longer to be initialized, freeing any memory in use. Requires: - *mu initialized; no other concurrent operation on *mu. */ -GPRAPI void gpr_mu_destroy(gpr_mu *mu); - -/** Wait until no thread has a lock on *mu, cause the calling thread to own an - exclusive lock on *mu, then return. May block indefinitely or crash if the - calling thread has a lock on *mu. Requires: *mu initialized. */ -GPRAPI void gpr_mu_lock(gpr_mu *mu); - -/** Release an exclusive lock on *mu held by the calling thread. Requires: *mu - initialized; the calling thread holds an exclusive lock on *mu. */ -GPRAPI void gpr_mu_unlock(gpr_mu *mu); - -/** Without blocking, attempt to acquire an exclusive lock on *mu for the - calling thread, then return non-zero iff success. Fail, if any thread holds - the lock; succeeds with high probability if no thread holds the lock. - Requires: *mu initialized. */ -GPRAPI int gpr_mu_trylock(gpr_mu *mu); - -/** --- Condition variable interface --- - - A while-loop should be used with gpr_cv_wait() when waiting for conditions - to become true. See the example below. Variables of type gpr_cv are - uninitialized when first declared. */ - -/** Initialize *cv. Requires: *cv uninitialized. */ -GPRAPI void gpr_cv_init(gpr_cv *cv); - -/** Cause *cv no longer to be initialized, freeing any memory in use. Requires: - *cv initialized; no other concurrent operation on *cv.*/ -GPRAPI void gpr_cv_destroy(gpr_cv *cv); - -/** Atomically release *mu and wait on *cv. When the calling thread is woken - from *cv or the deadline abs_deadline is exceeded, execute gpr_mu_lock(mu) - and return whether the deadline was exceeded. Use - abs_deadline==gpr_inf_future for no deadline. abs_deadline can be either - an absolute deadline, or a GPR_TIMESPAN. May return even when not - woken explicitly. Requires: *mu and *cv initialized; the calling thread - holds an exclusive lock on *mu. */ -GPRAPI int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline); - -/** If any threads are waiting on *cv, wake at least one. - Clients may treat this as an optimization of gpr_cv_broadcast() - for use in the case where waking more than one waiter is not useful. - Requires: *cv initialized. */ -GPRAPI void gpr_cv_signal(gpr_cv *cv); - -/** Wake all threads waiting on *cv. Requires: *cv initialized. */ -GPRAPI void gpr_cv_broadcast(gpr_cv *cv); - -/** --- One-time initialization --- - - gpr_once must be declared with static storage class, and initialized with - GPR_ONCE_INIT. e.g., - static gpr_once once_var = GPR_ONCE_INIT; */ - -/** Ensure that (*init_routine)() has been called exactly once (for the - specified gpr_once instance) and then return. - If multiple threads call gpr_once() on the same gpr_once instance, one of - them will call (*init_routine)(), and the others will block until that call - finishes.*/ -GPRAPI void gpr_once_init(gpr_once *once, void (*init_routine)(void)); - -/** --- One-time event notification --- - - These operations act on a gpr_event, which should be initialized with - gpr_ev_init(), or with GPR_EVENT_INIT if static, e.g., - static gpr_event event_var = GPR_EVENT_INIT; - It requires no destruction. */ - -/** Initialize *ev. */ -GPRAPI void gpr_event_init(gpr_event *ev); - -/** Set *ev so that gpr_event_get() and gpr_event_wait() will return value. - Requires: *ev initialized; value != NULL; no prior or concurrent calls to - gpr_event_set(ev, ...) since initialization. */ -GPRAPI void gpr_event_set(gpr_event *ev, void *value); - -/** Return the value set by gpr_event_set(ev, ...), or NULL if no such call has - completed. If the result is non-NULL, all operations that occurred prior to - the gpr_event_set(ev, ...) set will be visible after this call returns. - Requires: *ev initialized. This operation is faster than acquiring a mutex - on most platforms. */ -GPRAPI void *gpr_event_get(gpr_event *ev); - -/** Wait until *ev is set by gpr_event_set(ev, ...), or abs_deadline is - exceeded, then return gpr_event_get(ev). Requires: *ev initialized. Use - abs_deadline==gpr_inf_future for no deadline. When the event has been - signalled before the call, this operation is faster than acquiring a mutex - on most platforms. */ -GPRAPI void *gpr_event_wait(gpr_event *ev, gpr_timespec abs_deadline); - -/** --- Reference counting --- - - These calls act on the type gpr_refcount. It requires no destruction. */ - -/** Initialize *r to value n. */ -GPRAPI void gpr_ref_init(gpr_refcount *r, int n); - -/** Increment the reference count *r. Requires *r initialized. */ -GPRAPI void gpr_ref(gpr_refcount *r); - -/** Increment the reference count *r. Requires *r initialized. - Crashes if refcount is zero */ -GPRAPI void gpr_ref_non_zero(gpr_refcount *r); - -/** Increment the reference count *r by n. Requires *r initialized, n > 0. */ -GPRAPI void gpr_refn(gpr_refcount *r, int n); - -/** Decrement the reference count *r and return non-zero iff it has reached - zero. . Requires *r initialized. */ -GPRAPI int gpr_unref(gpr_refcount *r); - -/** Return non-zero iff the reference count of *r is one, and thus is owned - by exactly one object. */ -GPRAPI int gpr_ref_is_unique(gpr_refcount *r); - -/** --- Stats counters --- - - These calls act on the integral type gpr_stats_counter. It requires no - destruction. Static instances may be initialized with - gpr_stats_counter c = GPR_STATS_INIT; - Beware: These operations do not imply memory barriers. Do not use them to - synchronize other events. */ - -/** Initialize *c to the value n. */ -GPRAPI void gpr_stats_init(gpr_stats_counter *c, intptr_t n); - -/** *c += inc. Requires: *c initialized. */ -GPRAPI void gpr_stats_inc(gpr_stats_counter *c, intptr_t inc); - -/** Return *c. Requires: *c initialized. */ -GPRAPI intptr_t gpr_stats_read(const gpr_stats_counter *c); - -/** ==================Example use of interface=================== - A producer-consumer queue of up to N integers, - illustrating the use of the calls in this interface. */ -#if 0 - -#define N 4 - - typedef struct queue { - gpr_cv non_empty; /* Signalled when length becomes non-zero. */ - gpr_cv non_full; /* Signalled when length becomes non-N. */ - gpr_mu mu; /* Protects all fields below. - (That is, except during initialization or - destruction, the fields below should be accessed - only by a thread that holds mu.) */ - int head; /* Index of head of queue 0..N-1. */ - int length; /* Number of valid elements in queue 0..N. */ - int elem[N]; /* elem[head .. head+length-1] are queue elements. */ - } queue; - - /* Initialize *q. */ - void queue_init(queue *q) { - gpr_mu_init(&q->mu); - gpr_cv_init(&q->non_empty); - gpr_cv_init(&q->non_full); - q->head = 0; - q->length = 0; - } - - /* Free storage associated with *q. */ - void queue_destroy(queue *q) { - gpr_mu_destroy(&q->mu); - gpr_cv_destroy(&q->non_empty); - gpr_cv_destroy(&q->non_full); - } - - /* Wait until there is room in *q, then append x to *q. */ - void queue_append(queue *q, int x) { - gpr_mu_lock(&q->mu); - /* To wait for a predicate without a deadline, loop on the negation of the - predicate, and use gpr_cv_wait(..., gpr_inf_future) inside the loop - to release the lock, wait, and reacquire on each iteration. Code that - makes the condition true should use gpr_cv_broadcast() on the - corresponding condition variable. The predicate must be on state - protected by the lock. */ - while (q->length == N) { - gpr_cv_wait(&q->non_full, &q->mu, gpr_inf_future); - } - if (q->length == 0) { /* Wake threads blocked in queue_remove(). */ - /* It's normal to use gpr_cv_broadcast() or gpr_signal() while - holding the lock. */ - gpr_cv_broadcast(&q->non_empty); - } - q->elem[(q->head + q->length) % N] = x; - q->length++; - gpr_mu_unlock(&q->mu); - } - - /* If it can be done without blocking, append x to *q and return non-zero. - Otherwise return 0. */ - int queue_try_append(queue *q, int x) { - int result = 0; - if (gpr_mu_trylock(&q->mu)) { - if (q->length != N) { - if (q->length == 0) { /* Wake threads blocked in queue_remove(). */ - gpr_cv_broadcast(&q->non_empty); - } - q->elem[(q->head + q->length) % N] = x; - q->length++; - result = 1; - } - gpr_mu_unlock(&q->mu); - } - return result; - } - - /* Wait until the *q is non-empty or deadline abs_deadline passes. If the - queue is non-empty, remove its head entry, place it in *head, and return - non-zero. Otherwise return 0. */ - int queue_remove(queue *q, int *head, gpr_timespec abs_deadline) { - int result = 0; - gpr_mu_lock(&q->mu); - /* To wait for a predicate with a deadline, loop on the negation of the - predicate or until gpr_cv_wait() returns true. Code that makes - the condition true should use gpr_cv_broadcast() on the corresponding - condition variable. The predicate must be on state protected by the - lock. */ - while (q->length == 0 && - !gpr_cv_wait(&q->non_empty, &q->mu, abs_deadline)) { - } - if (q->length != 0) { /* Queue is non-empty. */ - result = 1; - if (q->length == N) { /* Wake threads blocked in queue_append(). */ - gpr_cv_broadcast(&q->non_full); - } - *head = q->elem[q->head]; - q->head = (q->head + 1) % N; - q->length--; - } /* else deadline exceeded */ - gpr_mu_unlock(&q->mu); - return result; - } -#endif /* 0 */ - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_SYNC_H */ diff --git a/linx64/include/grpc/support/sync_generic.h b/linx64/include/grpc/support/sync_generic.h deleted file mode 100644 index 970b7a5d..00000000 --- a/linx64/include/grpc/support/sync_generic.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_SYNC_GENERIC_H -#define GRPC_SUPPORT_SYNC_GENERIC_H - -#include - -#endif /* GRPC_SUPPORT_SYNC_GENERIC_H */ diff --git a/linx64/include/grpc/support/sync_posix.h b/linx64/include/grpc/support/sync_posix.h deleted file mode 100644 index 482a6004..00000000 --- a/linx64/include/grpc/support/sync_posix.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_SYNC_POSIX_H -#define GRPC_SUPPORT_SYNC_POSIX_H - -#include - -#endif /* GRPC_SUPPORT_SYNC_POSIX_H */ diff --git a/linx64/include/grpc/support/sync_windows.h b/linx64/include/grpc/support/sync_windows.h deleted file mode 100644 index 90ce8b77..00000000 --- a/linx64/include/grpc/support/sync_windows.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_SYNC_WINDOWS_H -#define GRPC_SUPPORT_SYNC_WINDOWS_H - -#include - -#endif /* GRPC_SUPPORT_SYNC_WINDOWS_H */ diff --git a/linx64/include/grpc/support/thd.h b/linx64/include/grpc/support/thd.h deleted file mode 100644 index 25bd8f12..00000000 --- a/linx64/include/grpc/support/thd.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * - * 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_SUPPORT_THD_H -#define GRPC_SUPPORT_THD_H -/** Thread interface for GPR. - - Types - gpr_thd_id a thread identifier. - (Currently no calls take a thread identifier. - It exists for future extensibility.) - gpr_thd_options options used when creating a thread - */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef uintptr_t gpr_thd_id; - -/** Thread creation options. */ -typedef struct { - int flags; /** Opaque field. Get and set with accessors below. */ -} gpr_thd_options; - -/** Create a new thread running (*thd_body)(arg) and place its thread identifier - in *t, and return true. If there are insufficient resources, return false. - If options==NULL, default options are used. - The thread is immediately runnable, and exits when (*thd_body)() returns. */ -GPRAPI int gpr_thd_new(gpr_thd_id *t, void (*thd_body)(void *arg), void *arg, - const gpr_thd_options *options); - -/** Return a gpr_thd_options struct with all fields set to defaults. */ -GPRAPI gpr_thd_options gpr_thd_options_default(void); - -/** Set the thread to become detached on startup - this is the default. */ -GPRAPI void gpr_thd_options_set_detached(gpr_thd_options *options); - -/** Set the thread to become joinable - mutually exclusive with detached. */ -GPRAPI void gpr_thd_options_set_joinable(gpr_thd_options *options); - -/** Returns non-zero if the option detached is set. */ -GPRAPI int gpr_thd_options_is_detached(const gpr_thd_options *options); - -/** Returns non-zero if the option joinable is set. */ -GPRAPI int gpr_thd_options_is_joinable(const gpr_thd_options *options); - -/** Returns the identifier of the current thread. */ -GPRAPI gpr_thd_id gpr_thd_currentid(void); - -/** Blocks until the specified thread properly terminates. - Calling this on a detached thread has unpredictable results. */ -GPRAPI void gpr_thd_join(gpr_thd_id t); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_THD_H */ diff --git a/linx64/include/grpc/support/time.h b/linx64/include/grpc/support/time.h deleted file mode 100644 index 62d354aa..00000000 --- a/linx64/include/grpc/support/time.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * - * 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_SUPPORT_TIME_H -#define GRPC_SUPPORT_TIME_H - -#include - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Time constants. */ -GPRAPI gpr_timespec -gpr_time_0(gpr_clock_type type); /** The zero time interval. */ -GPRAPI gpr_timespec gpr_inf_future(gpr_clock_type type); /** The far future */ -GPRAPI gpr_timespec gpr_inf_past(gpr_clock_type type); /** The far past. */ - -#define GPR_MS_PER_SEC 1000 -#define GPR_US_PER_SEC 1000000 -#define GPR_NS_PER_SEC 1000000000 -#define GPR_NS_PER_MS 1000000 -#define GPR_NS_PER_US 1000 -#define GPR_US_PER_MS 1000 - -/** initialize time subsystem */ -GPRAPI void gpr_time_init(void); - -/** Return the current time measured from the given clocks epoch. */ -GPRAPI gpr_timespec gpr_now(gpr_clock_type clock); - -/** Convert a timespec from one clock to another */ -GPRAPI gpr_timespec gpr_convert_clock_type(gpr_timespec t, - gpr_clock_type target_clock); - -/** Return -ve, 0, or +ve according to whether a < b, a == b, or a > b - respectively. */ -GPRAPI int gpr_time_cmp(gpr_timespec a, gpr_timespec b); - -GPRAPI gpr_timespec gpr_time_max(gpr_timespec a, gpr_timespec b); -GPRAPI gpr_timespec gpr_time_min(gpr_timespec a, gpr_timespec b); - -/** Add and subtract times. Calculations saturate at infinities. */ -GPRAPI gpr_timespec gpr_time_add(gpr_timespec a, gpr_timespec b); -GPRAPI gpr_timespec gpr_time_sub(gpr_timespec a, gpr_timespec b); - -/** Return a timespec representing a given number of time units. INT64_MIN is - interpreted as gpr_inf_past, and INT64_MAX as gpr_inf_future. */ -GPRAPI gpr_timespec gpr_time_from_micros(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_nanos(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_millis(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_seconds(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_minutes(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_hours(int64_t x, gpr_clock_type clock_type); - -GPRAPI int32_t gpr_time_to_millis(gpr_timespec timespec); - -/** Return 1 if two times are equal or within threshold of each other, - 0 otherwise */ -GPRAPI int gpr_time_similar(gpr_timespec a, gpr_timespec b, - gpr_timespec threshold); - -/** Sleep until at least 'until' - an absolute timeout */ -GPRAPI void gpr_sleep_until(gpr_timespec until); - -GPRAPI double gpr_timespec_to_micros(gpr_timespec t); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_TIME_H */ diff --git a/linx64/include/grpc/support/tls.h b/linx64/include/grpc/support/tls.h deleted file mode 100644 index 8519a835..00000000 --- a/linx64/include/grpc/support/tls.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * 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_SUPPORT_TLS_H -#define GRPC_SUPPORT_TLS_H - -#include - -/** Thread local storage. - - A minimal wrapper that should be implementable across many compilers, - and implementable efficiently across most modern compilers. - - Thread locals have type intptr_t. - - Declaring a thread local variable 'foo': - GPR_TLS_DECL(foo); - Thread locals always have static scope. - - Initializing a thread local (must be done at library initialization - time): - gpr_tls_init(&foo); - - Destroying a thread local: - gpr_tls_destroy(&foo); - - Setting a thread local (returns new_value): - gpr_tls_set(&foo, new_value); - - Accessing a thread local: - current_value = gpr_tls_get(&foo); - - ALL functions here may be implemented as macros. */ - -#ifdef GPR_GCC_TLS -#include -#endif - -#ifdef GPR_MSVC_TLS -#include -#endif - -#ifdef GPR_PTHREAD_TLS -#include -#endif - -#endif /* GRPC_SUPPORT_TLS_H */ diff --git a/linx64/include/grpc/support/tls_gcc.h b/linx64/include/grpc/support/tls_gcc.h deleted file mode 100644 index e6d8c014..00000000 --- a/linx64/include/grpc/support/tls_gcc.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * - * 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_SUPPORT_TLS_GCC_H -#define GRPC_SUPPORT_TLS_GCC_H - -#include - -#include - -/** Thread local storage based on gcc compiler primitives. - #include tls.h to use this - and see that file for documentation */ - -#ifndef NDEBUG - -struct gpr_gcc_thread_local { - intptr_t value; - bool *inited; -}; - -#define GPR_TLS_DECL(name) \ - static bool name##_inited = false; \ - static __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)} - -#define gpr_tls_init(tls) \ - do { \ - GPR_ASSERT(*((tls)->inited) == false); \ - *((tls)->inited) = true; \ - } while (0) - -/** It is allowed to call gpr_tls_init after gpr_tls_destroy is called. */ -#define gpr_tls_destroy(tls) \ - do { \ - GPR_ASSERT(*((tls)->inited)); \ - *((tls)->inited) = false; \ - } while (0) - -#define gpr_tls_set(tls, new_value) \ - do { \ - GPR_ASSERT(*((tls)->inited)); \ - (tls)->value = (new_value); \ - } while (0) - -#define gpr_tls_get(tls) \ - ({ \ - GPR_ASSERT(*((tls)->inited)); \ - (tls)->value; \ - }) - -#else /* NDEBUG */ - -struct gpr_gcc_thread_local { - intptr_t value; -}; - -#define GPR_TLS_DECL(name) \ - static __thread struct gpr_gcc_thread_local name = {0} - -#define gpr_tls_init(tls) \ - do { \ - } while (0) -#define gpr_tls_destroy(tls) \ - do { \ - } while (0) -#define gpr_tls_set(tls, new_value) (((tls)->value) = (new_value)) -#define gpr_tls_get(tls) ((tls)->value) - -#endif /* NDEBUG */ - -#endif /* GRPC_SUPPORT_TLS_GCC_H */ diff --git a/linx64/include/grpc/support/tls_msvc.h b/linx64/include/grpc/support/tls_msvc.h deleted file mode 100644 index e5f2205f..00000000 --- a/linx64/include/grpc/support/tls_msvc.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * - * 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_SUPPORT_TLS_MSVC_H -#define GRPC_SUPPORT_TLS_MSVC_H - -/** Thread local storage based on ms visual c compiler primitives. - #include tls.h to use this - and see that file for documentation */ - -struct gpr_msvc_thread_local { - intptr_t value; -}; - -#define GPR_TLS_DECL(name) \ - static __declspec(thread) struct gpr_msvc_thread_local name = {0} - -#define gpr_tls_init(tls) \ - do { \ - } while (0) -#define gpr_tls_destroy(tls) \ - do { \ - } while (0) -#define gpr_tls_set(tls, new_value) (((tls)->value) = (new_value)) -#define gpr_tls_get(tls) ((tls)->value) - -#endif /* GRPC_SUPPORT_TLS_MSVC_H */ diff --git a/linx64/include/grpc/support/tls_pthread.h b/linx64/include/grpc/support/tls_pthread.h deleted file mode 100644 index a68b4556..00000000 --- a/linx64/include/grpc/support/tls_pthread.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * - * 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_SUPPORT_TLS_PTHREAD_H -#define GRPC_SUPPORT_TLS_PTHREAD_H - -#include /* for GPR_ASSERT */ -#include - -/** Thread local storage based on pthread library calls. - #include tls.h to use this - and see that file for documentation */ - -struct gpr_pthread_thread_local { - pthread_key_t key; -}; - -#define GPR_TLS_DECL(name) static struct gpr_pthread_thread_local name = {0} - -#define gpr_tls_init(tls) GPR_ASSERT(0 == pthread_key_create(&(tls)->key, NULL)) -#define gpr_tls_destroy(tls) pthread_key_delete((tls)->key) -#define gpr_tls_get(tls) ((intptr_t)pthread_getspecific((tls)->key)) -#ifdef __cplusplus -extern "C" { -#endif -intptr_t gpr_tls_set(struct gpr_pthread_thread_local *tls, intptr_t value); -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_TLS_PTHREAD_H */ diff --git a/linx64/include/grpc/support/useful.h b/linx64/include/grpc/support/useful.h deleted file mode 100644 index bd66d3bb..00000000 --- a/linx64/include/grpc/support/useful.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * 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_SUPPORT_USEFUL_H -#define GRPC_SUPPORT_USEFUL_H - -/** useful macros that don't belong anywhere else */ - -#define GPR_MIN(a, b) ((a) < (b) ? (a) : (b)) -#define GPR_MAX(a, b) ((a) > (b) ? (a) : (b)) -#define GPR_CLAMP(a, min, max) ((a) < (min) ? (min) : (a) > (max) ? (max) : (a)) -/** rotl, rotr assume x is unsigned */ -#define GPR_ROTL(x, n) (((x) << (n)) | ((x) >> (sizeof(x) * 8 - (n)))) -#define GPR_ROTR(x, n) (((x) >> (n)) | ((x) << (sizeof(x) * 8 - (n)))) - -#define GPR_ARRAY_SIZE(array) (sizeof(array) / sizeof(*(array))) - -#define GPR_SWAP(type, a, b) \ - do { \ - type x = a; \ - a = b; \ - b = x; \ - } while (0) - -/** Set the \a n-th bit of \a i (a mutable pointer). */ -#define GPR_BITSET(i, n) ((*(i)) |= (1u << (n))) - -/** Clear the \a n-th bit of \a i (a mutable pointer). */ -#define GPR_BITCLEAR(i, n) ((*(i)) &= ~(1u << (n))) - -/** Get the \a n-th bit of \a i */ -#define GPR_BITGET(i, n) (((i) & (1u << (n))) != 0) - -#define GPR_INTERNAL_HEXDIGIT_BITCOUNT(x) \ - ((x) - (((x) >> 1) & 0x77777777) - (((x) >> 2) & 0x33333333) - \ - (((x) >> 3) & 0x11111111)) - -/** Returns number of bits set in bitset \a i */ -#define GPR_BITCOUNT(i) \ - (((GPR_INTERNAL_HEXDIGIT_BITCOUNT(i) + \ - (GPR_INTERNAL_HEXDIGIT_BITCOUNT(i) >> 4)) & \ - 0x0f0f0f0f) % \ - 255) - -#define GPR_ICMP(a, b) ((a) < (b) ? -1 : ((a) > (b) ? 1 : 0)) - -#define GPR_HASH_POINTER(x, range) \ - ((((size_t)x) >> 4) ^ (((size_t)x) >> 9) ^ (((size_t)x) >> 14)) % (range) - -#endif /* GRPC_SUPPORT_USEFUL_H */ diff --git a/linx64/include/grpc/support/workaround_list.h b/linx64/include/grpc/support/workaround_list.h deleted file mode 100644 index e28dfa14..00000000 --- a/linx64/include/grpc/support/workaround_list.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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_SUPPORT_WORKAROUND_LIST_H -#define GRPC_SUPPORT_WORKAROUND_LIST_H - -/* The list of IDs of server workarounds currently maintained by gRPC. For - * explanation and detailed descriptions of workarounds, see - * /doc/workarounds.md - */ -typedef enum { - GRPC_WORKAROUND_ID_CRONET_COMPRESSION = 0, - GRPC_MAX_WORKAROUND_ID -} grpc_workaround_list; - -#endif /* GRPC_SUPPORT_WORKAROUND_LIST_H */ diff --git a/linx64/lib/google/grpc/libcares.a b/linx64/lib/google/grpc/libcares.a deleted file mode 100644 index 966de099..00000000 Binary files a/linx64/lib/google/grpc/libcares.a and /dev/null differ diff --git a/linx64/lib/google/grpc/libcrypto.a b/linx64/lib/google/grpc/libcrypto.a deleted file mode 100644 index 1fb74d9a..00000000 Binary files a/linx64/lib/google/grpc/libcrypto.a and /dev/null differ diff --git a/linx64/lib/google/grpc/libgpr.a b/linx64/lib/google/grpc/libgpr.a deleted file mode 100644 index 0c633ebe..00000000 Binary files a/linx64/lib/google/grpc/libgpr.a and /dev/null differ diff --git a/linx64/lib/google/grpc/libgrpc++.a b/linx64/lib/google/grpc/libgrpc++.a deleted file mode 100644 index 53655107..00000000 Binary files a/linx64/lib/google/grpc/libgrpc++.a and /dev/null differ diff --git a/linx64/lib/google/grpc/libgrpc.a b/linx64/lib/google/grpc/libgrpc.a deleted file mode 100644 index 6624c0e2..00000000 Binary files a/linx64/lib/google/grpc/libgrpc.a and /dev/null differ diff --git a/linx64/lib/google/grpc/libprotobuf.a b/linx64/lib/google/grpc/libprotobuf.a deleted file mode 100644 index 86f9235a..00000000 Binary files a/linx64/lib/google/grpc/libprotobuf.a and /dev/null differ diff --git a/linx64/lib/google/grpc/libssl.a b/linx64/lib/google/grpc/libssl.a deleted file mode 100644 index 528e3067..00000000 Binary files a/linx64/lib/google/grpc/libssl.a and /dev/null differ diff --git a/linx64/lib/google/grpc/libz.a b/linx64/lib/google/grpc/libz.a deleted file mode 100644 index bde38e7e..00000000 Binary files a/linx64/lib/google/grpc/libz.a and /dev/null differ diff --git a/linx64/lib/google/grpc/libz.so b/linx64/lib/google/grpc/libz.so deleted file mode 120000 index 35fdc8b9..00000000 --- a/linx64/lib/google/grpc/libz.so +++ /dev/null @@ -1 +0,0 @@ -libz.so.1 \ No newline at end of file diff --git a/linx64/lib/google/grpc/libz.so.1 b/linx64/lib/google/grpc/libz.so.1 deleted file mode 120000 index 95e0ebd5..00000000 --- a/linx64/lib/google/grpc/libz.so.1 +++ /dev/null @@ -1 +0,0 @@ -libz.so.1.2.11 \ No newline at end of file diff --git a/linx64/lib/google/grpc/libz.so.1.2.11 b/linx64/lib/google/grpc/libz.so.1.2.11 deleted file mode 100755 index dbda6b5a..00000000 Binary files a/linx64/lib/google/grpc/libz.so.1.2.11 and /dev/null differ diff --git a/winx64/bin/protoc/grpc_cpp_plugin.exe b/winx64/bin/protoc/grpc_cpp_plugin.exe deleted file mode 100644 index dfb2cf8c..00000000 Binary files a/winx64/bin/protoc/grpc_cpp_plugin.exe and /dev/null differ diff --git a/winx64/bin/protoc/grpc_csharp_plugin.exe b/winx64/bin/protoc/grpc_csharp_plugin.exe deleted file mode 100644 index 536ae1c4..00000000 Binary files a/winx64/bin/protoc/grpc_csharp_plugin.exe and /dev/null differ diff --git a/winx64/bin/protoc/grpc_node_plugin.exe b/winx64/bin/protoc/grpc_node_plugin.exe deleted file mode 100644 index 3268fcaa..00000000 Binary files a/winx64/bin/protoc/grpc_node_plugin.exe and /dev/null differ diff --git a/winx64/bin/protoc/grpc_objective_c_plugin.exe b/winx64/bin/protoc/grpc_objective_c_plugin.exe deleted file mode 100644 index ee181b55..00000000 Binary files a/winx64/bin/protoc/grpc_objective_c_plugin.exe and /dev/null differ diff --git a/winx64/bin/protoc/grpc_php_plugin.exe b/winx64/bin/protoc/grpc_php_plugin.exe deleted file mode 100644 index b5c787d1..00000000 Binary files a/winx64/bin/protoc/grpc_php_plugin.exe and /dev/null differ diff --git a/winx64/bin/protoc/grpc_python_plugin.exe b/winx64/bin/protoc/grpc_python_plugin.exe deleted file mode 100644 index e1da2e11..00000000 Binary files a/winx64/bin/protoc/grpc_python_plugin.exe and /dev/null differ diff --git a/winx64/bin/protoc/grpc_ruby_plugin.exe b/winx64/bin/protoc/grpc_ruby_plugin.exe deleted file mode 100644 index c1188244..00000000 Binary files a/winx64/bin/protoc/grpc_ruby_plugin.exe and /dev/null differ diff --git a/winx64/bin/protoc/protoc.exe b/winx64/bin/protoc/protoc.exe deleted file mode 100644 index d011425a..00000000 Binary files a/winx64/bin/protoc/protoc.exe and /dev/null differ diff --git a/winx64/include/grpc++/alarm.h b/winx64/include/grpc++/alarm.h deleted file mode 100644 index ed8dacbc..00000000 --- a/winx64/include/grpc++/alarm.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * 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. - * - */ - -/// An Alarm posts the user provided tag to its associated completion queue upon -/// expiry or cancellation. -#ifndef GRPCXX_ALARM_H -#define GRPCXX_ALARM_H - -#include -#include -#include -#include -#include -#include - -struct grpc_alarm; - -namespace grpc { - -class CompletionQueue; - -/// A thin wrapper around \a grpc_alarm (see / \a / src/core/surface/alarm.h). -class Alarm : private GrpcLibraryCodegen { - public: - /// Create a completion queue alarm instance associated to \a cq. - /// - /// Once the alarm expires (at \a deadline) or it's cancelled (see \a Cancel), - /// an event with tag \a tag will be added to \a cq. If the alarm expired, the - /// event's success bit will be true, false otherwise (ie, upon cancellation). - /// \internal We rely on the presence of \a cq for grpc initialization. If \a - /// cq were ever to be removed, a reference to a static - /// internal::GrpcLibraryInitializer instance would need to be introduced - /// here. \endinternal. - template - Alarm(CompletionQueue* cq, const T& deadline, void* tag) - : tag_(tag), - alarm_(grpc_alarm_create(cq->cq(), TimePoint(deadline).raw_time(), - static_cast(&tag_))) {} - - /// Alarms aren't copyable. - Alarm(const Alarm&) = delete; - Alarm& operator=(const Alarm&) = delete; - - /// Alarms are movable. - Alarm(Alarm&& rhs) : tag_(rhs.tag_), alarm_(rhs.alarm_) { - rhs.alarm_ = nullptr; - } - Alarm& operator=(Alarm&& rhs) { - tag_ = rhs.tag_; - alarm_ = rhs.alarm_; - rhs.alarm_ = nullptr; - return *this; - } - - /// Destroy the given completion queue alarm, cancelling it in the process. - ~Alarm() { - if (alarm_ != nullptr) grpc_alarm_destroy(alarm_); - } - - /// Cancel a completion queue alarm. Calling this function over an alarm that - /// has already fired has no effect. - void Cancel() { grpc_alarm_cancel(alarm_); } - - private: - class AlarmEntry : public CompletionQueueTag { - public: - AlarmEntry(void* tag) : tag_(tag) {} - bool FinalizeResult(void** tag, bool* status) override { - *tag = tag_; - return true; - } - - private: - void* tag_; - }; - - AlarmEntry tag_; - grpc_alarm* alarm_; // owned -}; - -} // namespace grpc - -#endif // GRPCXX_ALARM_H diff --git a/winx64/include/grpc++/channel.h b/winx64/include/grpc++/channel.h deleted file mode 100644 index c50091d6..00000000 --- a/winx64/include/grpc++/channel.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * - * 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 GRPCXX_CHANNEL_H -#define GRPCXX_CHANNEL_H - -#include - -#include -#include -#include -#include -#include - -struct grpc_channel; - -namespace grpc { -/// Channels represent a connection to an endpoint. Created by \a CreateChannel. -class Channel final : public ChannelInterface, - public CallHook, - public std::enable_shared_from_this, - private GrpcLibraryCodegen { - public: - ~Channel(); - - /// Get the current channel state. If the channel is in IDLE and - /// \a try_to_connect is set to true, try to connect. - grpc_connectivity_state GetState(bool try_to_connect) override; - - /// Returns the LB policy name, or the empty string if not yet available. - grpc::string GetLoadBalancingPolicyName() const; - - /// Returns the service config in JSON form, or the empty string if - /// not available. - grpc::string GetServiceConfigJSON() const; - - private: - template - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, - ClientContext* context, - const InputMessage& request, - OutputMessage* result); - friend std::shared_ptr CreateChannelInternal( - const grpc::string& host, grpc_channel* c_channel); - Channel(const grpc::string& host, grpc_channel* c_channel); - - Call CreateCall(const RpcMethod& method, ClientContext* context, - CompletionQueue* cq) override; - void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) override; - void* RegisterMethod(const char* method) override; - - void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline, CompletionQueue* cq, - void* tag) override; - bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline) override; - - const grpc::string host_; - grpc_channel* const c_channel_; // owned -}; - -} // namespace grpc - -#endif // GRPCXX_CHANNEL_H diff --git a/winx64/include/grpc++/client_context.h b/winx64/include/grpc++/client_context.h deleted file mode 100644 index cf42a627..00000000 --- a/winx64/include/grpc++/client_context.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - * 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. - * - */ - -/// A ClientContext allows the person implementing a service client to: -/// -/// - Add custom metadata key-value pairs that will propagated to the server -/// side. -/// - Control call settings such as compression and authentication. -/// - Initial and trailing metadata coming from the server. -/// - Get performance metrics (ie, census). -/// -/// Context settings are only relevant to the call they are invoked with, that -/// is to say, they aren't sticky. Some of these settings, such as the -/// compression options, can be made persistant at channel construction time -/// (see \a grpc::CreateCustomChannel). -/// -/// \warning ClientContext instances should \em not be reused across rpcs. - -#ifndef GRPCXX_CLIENT_CONTEXT_H -#define GRPCXX_CLIENT_CONTEXT_H - -#include - -#endif // GRPCXX_CLIENT_CONTEXT_H diff --git a/winx64/include/grpc++/completion_queue.h b/winx64/include/grpc++/completion_queue.h deleted file mode 100644 index a71123e0..00000000 --- a/winx64/include/grpc++/completion_queue.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_COMPLETION_QUEUE_H -#define GRPCXX_COMPLETION_QUEUE_H - -#include - -#endif // GRPCXX_COMPLETION_QUEUE_H diff --git a/winx64/include/grpc++/create_channel.h b/winx64/include/grpc++/create_channel.h deleted file mode 100644 index 7ba1131a..00000000 --- a/winx64/include/grpc++/create_channel.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * - * 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 GRPCXX_CREATE_CHANNEL_H -#define GRPCXX_CREATE_CHANNEL_H - -#include - -#include -#include -#include -#include - -namespace grpc { - -/// Create a new \a Channel pointing to \a target. -/// -/// \param target The URI of the endpoint to connect to. -/// \param creds Credentials to use for the created channel. If it does not -/// hold an object or is invalid, a lame channel (one on which all operations -/// fail) is returned. -std::shared_ptr CreateChannel( - const grpc::string& target, - const std::shared_ptr& creds); - -/// Create a new \em custom \a Channel pointing to \a target. -/// -/// \warning For advanced use and testing ONLY. Override default channel -/// arguments only if necessary. -/// -/// \param target The URI of the endpoint to connect to. -/// \param creds Credentials to use for the created channel. If it does not -/// hold an object or is invalid, a lame channel (one on which all operations -/// fail) is returned. -/// \param args Options for channel creation. -std::shared_ptr CreateCustomChannel( - const grpc::string& target, - const std::shared_ptr& creds, - const ChannelArguments& args); - -} // namespace grpc - -#endif // GRPCXX_CREATE_CHANNEL_H diff --git a/winx64/include/grpc++/create_channel_posix.h b/winx64/include/grpc++/create_channel_posix.h deleted file mode 100644 index 10f7e4a6..00000000 --- a/winx64/include/grpc++/create_channel_posix.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_CREATE_CHANNEL_POSIX_H -#define GRPCXX_CREATE_CHANNEL_POSIX_H - -#include - -#include -#include -#include - -namespace grpc { - -#ifdef GPR_SUPPORT_CHANNELS_FROM_FD - -/// Create a new \a Channel communicating over the given file descriptor. -/// -/// \param target The name of the target. -/// \param fd The file descriptor representing a socket. -std::shared_ptr CreateInsecureChannelFromFd(const grpc::string& target, - int fd); - -/// Create a new \a Channel communicating over given file descriptor with custom -/// channel arguments. -/// -/// \param target The name of the target. -/// \param fd The file descriptor representing a socket. -/// \param args Options for channel creation. -std::shared_ptr CreateCustomInsecureChannelFromFd( - const grpc::string& target, int fd, const ChannelArguments& args); - -#endif // GPR_SUPPORT_CHANNELS_FROM_FD - -} // namespace grpc - -#endif // GRPCXX_CREATE_CHANNEL_POSIX_H diff --git a/winx64/include/grpc++/ext/health_check_service_server_builder_option.h b/winx64/include/grpc++/ext/health_check_service_server_builder_option.h deleted file mode 100644 index 89af294a..00000000 --- a/winx64/include/grpc++/ext/health_check_service_server_builder_option.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H -#define GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H - -#include - -#include -#include -#include - -namespace grpc { - -class HealthCheckServiceServerBuilderOption : public ServerBuilderOption { - public: - /// The ownership of \a hc will be taken and transferred to the grpc server. - /// To explicitly disable default service, pass in a nullptr. - explicit HealthCheckServiceServerBuilderOption( - std::unique_ptr hc); - ~HealthCheckServiceServerBuilderOption() override {} - void UpdateArguments(ChannelArguments* args) override; - void UpdatePlugins( - std::vector>* plugins) override; - - private: - std::unique_ptr hc_; -}; - -} // namespace grpc - -#endif // GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H diff --git a/winx64/include/grpc++/ext/proto_server_reflection_plugin.h b/winx64/include/grpc++/ext/proto_server_reflection_plugin.h deleted file mode 100644 index ee3fafd7..00000000 --- a/winx64/include/grpc++/ext/proto_server_reflection_plugin.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * 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 GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H -#define GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H - -#include -#include - -namespace grpc { -class ServerInitializer; -class ProtoServerReflection; -} // namespace grpc - -namespace grpc { -namespace reflection { - -class ProtoServerReflectionPlugin : public ::grpc::ServerBuilderPlugin { - public: - ProtoServerReflectionPlugin(); - ::grpc::string name() override; - void InitServer(::grpc::ServerInitializer* si) override; - void Finish(::grpc::ServerInitializer* si) override; - void ChangeArguments(const ::grpc::string& name, void* value) override; - bool has_async_methods() const override; - bool has_sync_methods() const override; - - private: - std::shared_ptr reflection_service_; -}; - -/// Add proto reflection plugin to \a ServerBuilder. -/// This function should be called at the static initialization time. -void InitProtoReflectionServerBuilderPlugin(); - -} // namespace reflection -} // namespace grpc - -#endif // GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H diff --git a/winx64/include/grpc++/generic/async_generic_service.h b/winx64/include/grpc++/generic/async_generic_service.h deleted file mode 100644 index cd9a65e3..00000000 --- a/winx64/include/grpc++/generic/async_generic_service.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * - * 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 GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H -#define GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H - -#include -#include - -struct grpc_server; - -namespace grpc { - -typedef ServerAsyncReaderWriter - GenericServerAsyncReaderWriter; - -class GenericServerContext final : public ServerContext { - public: - const grpc::string& method() const { return method_; } - const grpc::string& host() const { return host_; } - - private: - friend class Server; - friend class ServerInterface; - - grpc::string method_; - grpc::string host_; -}; - -class AsyncGenericService final { - public: - AsyncGenericService() : server_(nullptr) {} - - void RequestCall(GenericServerContext* ctx, - GenericServerAsyncReaderWriter* reader_writer, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag); - - private: - friend class Server; - Server* server_; -}; - -} // namespace grpc - -#endif // GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H diff --git a/winx64/include/grpc++/generic/generic_stub.h b/winx64/include/grpc++/generic/generic_stub.h deleted file mode 100644 index 7b269d08..00000000 --- a/winx64/include/grpc++/generic/generic_stub.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * 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 GRPCXX_GENERIC_GENERIC_STUB_H -#define GRPCXX_GENERIC_GENERIC_STUB_H - -#include -#include - -namespace grpc { - -class CompletionQueue; -typedef ClientAsyncReaderWriter - GenericClientAsyncReaderWriter; - -/// Generic stubs provide a type-unsafe interface to call gRPC methods -/// by name. -class GenericStub final { - public: - explicit GenericStub(std::shared_ptr channel) - : channel_(channel) {} - - /// Begin a call to a named method \a method using \a context. - /// A tag \a tag will be delivered to \a cq when the call has been started - /// (i.e, initial metadata has been sent). - /// The return value only indicates whether or not registration of the call - /// succeeded (i.e. the call won't proceed if the return value is nullptr). - std::unique_ptr Call( - ClientContext* context, const grpc::string& method, CompletionQueue* cq, - void* tag); - - private: - std::shared_ptr channel_; -}; - -} // namespace grpc - -#endif // GRPCXX_GENERIC_GENERIC_STUB_H diff --git a/winx64/include/grpc++/grpc++.h b/winx64/include/grpc++/grpc++.h deleted file mode 100644 index 31ed436c..00000000 --- a/winx64/include/grpc++/grpc++.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * - * 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. - * - */ - -/// \mainpage gRPC C++ API -/// -/// The gRPC C++ API mainly consists of the following classes: -///
-/// - grpc::Channel, which represents the connection to an endpoint. See [the -/// gRPC Concepts page](https://grpc.io/docs/guides/concepts.html) for more -/// details. Channels are created by the factory function grpc::CreateChannel. -/// -/// - grpc::CompletionQueue, the producer-consumer queue used for all -/// asynchronous communication with the gRPC runtime. -/// -/// - grpc::ClientContext and grpc::ServerContext, where optional configuration -/// for an RPC can be set, such as setting custom metadata to be conveyed to the -/// peer, compression settings, authentication, etc. -/// -/// - grpc::Server, representing a gRPC server, created by grpc::ServerBuilder. -/// -/// Streaming calls are handled with the streaming classes in -/// \ref sync_stream.h and -/// \ref async_stream.h. -/// -/// Refer to the -/// [examples](https://github.com/grpc/grpc/blob/master/examples/cpp) -/// for code putting these pieces into play. - -#ifndef GRPCXX_GRPCXX_H -#define GRPCXX_GRPCXX_H - -// Pragma for http://include-what-you-use.org/ tool, tells that following -// headers are not private for grpc++.h and are part of its interface. -// IWYU pragma: begin_exports -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -// IWYU pragma: end_exports - -namespace grpc { -/// Return gRPC library version. -grpc::string Version(); -} // namespace grpc - -#endif // GRPCXX_GRPCXX_H diff --git a/winx64/include/grpc++/health_check_service_interface.h b/winx64/include/grpc++/health_check_service_interface.h deleted file mode 100644 index 7d4d36ab..00000000 --- a/winx64/include/grpc++/health_check_service_interface.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H -#define GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H - -#include - -namespace grpc { - -const char kHealthCheckServiceInterfaceArg[] = - "grpc.health_check_service_interface"; - -/// The gRPC server uses this interface to expose the health checking service -/// without depending on protobuf. -class HealthCheckServiceInterface { - public: - virtual ~HealthCheckServiceInterface() {} - - /// Set or change the serving status of the given \a service_name. - virtual void SetServingStatus(const grpc::string& service_name, - bool serving) = 0; - /// Apply to all registered service names. - virtual void SetServingStatus(bool serving) = 0; -}; - -/// Enable/disable the default health checking service. This applies to all C++ -/// servers created afterwards. For each server, user can override the default -/// with a HealthCheckServiceServerBuilderOption. -/// NOT thread safe. -void EnableDefaultHealthCheckService(bool enable); - -/// Returns whether the default health checking service is enabled. -/// NOT thread safe. -bool DefaultHealthCheckServiceEnabled(); - -} // namespace grpc - -#endif // GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H diff --git a/winx64/include/grpc++/impl/call.h b/winx64/include/grpc++/impl/call.h deleted file mode 100644 index fceaa3b0..00000000 --- a/winx64/include/grpc++/impl/call.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CALL_H -#define GRPCXX_IMPL_CALL_H - -#include - -#endif // GRPCXX_IMPL_CALL_H diff --git a/winx64/include/grpc++/impl/channel_argument_option.h b/winx64/include/grpc++/impl/channel_argument_option.h deleted file mode 100644 index e918f57e..00000000 --- a/winx64/include/grpc++/impl/channel_argument_option.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * 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_CHANNEL_ARGUMENT_OPTION_H -#define GRPCXX_IMPL_CHANNEL_ARGUMENT_OPTION_H - -#include -#include - -#include -#include - -namespace grpc { - -std::unique_ptr MakeChannelArgumentOption( - const grpc::string &name, const grpc::string &value); -std::unique_ptr MakeChannelArgumentOption( - const grpc::string &name, int value); - -} // namespace grpc - -#endif // GRPCXX_IMPL_CHANNEL_ARGUMENT_OPTION_H diff --git a/winx64/include/grpc++/impl/client_unary_call.h b/winx64/include/grpc++/impl/client_unary_call.h deleted file mode 100644 index d6797279..00000000 --- a/winx64/include/grpc++/impl/client_unary_call.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CLIENT_UNARY_CALL_H -#define GRPCXX_IMPL_CLIENT_UNARY_CALL_H - -#include - -#endif // GRPCXX_IMPL_CLIENT_UNARY_CALL_H diff --git a/winx64/include/grpc++/impl/codegen/async_stream.h b/winx64/include/grpc++/impl/codegen/async_stream.h deleted file mode 100644 index 9cf7ac30..00000000 --- a/winx64/include/grpc++/impl/codegen/async_stream.h +++ /dev/null @@ -1,941 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_ASYNC_STREAM_H -#define GRPCXX_IMPL_CODEGEN_ASYNC_STREAM_H - -#include -#include -#include -#include -#include -#include - -namespace grpc { - -class CompletionQueue; - -/// Common interface for all client side asynchronous streaming. -class ClientAsyncStreamingInterface { - public: - virtual ~ClientAsyncStreamingInterface() {} - - /// Request notification of the reading of the initial metadata. Completion - /// will be notified by \a tag on the associated completion queue. - /// This call is optional, but if it is used, it cannot be used concurrently - /// with or after the \a AsyncReaderInterface::Read method. - /// - /// \param[in] tag Tag identifying this request. - virtual void ReadInitialMetadata(void* tag) = 0; - - /// Indicate that the stream is to be finished and request notification for - /// when the call has been ended. - /// Should not be used concurrently with other operations. - /// - /// It is appropriate to call this method when both: - /// * the client side has no more message to send - /// (this can be declared implicitly by calling this method, or - /// explicitly through an earlier call to the WritesDone method - /// of the class in use, e.g. \a ClientAsyncWriterInterface::WritesDone or - /// \a ClientAsyncReaderWriterInterface::WritesDone). - /// * there are no more messages to be received from the server (this can - /// be known implicitly by the calling code, or explicitly from an - /// earlier call to \a AsyncReaderInterface::Read that yielded a failed - /// result, e.g. cq->Next(&read_tag, &ok) filled in 'ok' with 'false'). - /// - /// This function will return when either: - /// - all incoming messages have been read and the server has returned - /// a status. - /// - the server has returned a non-OK status. - /// - the call failed for some reason and the library generated a - /// status. - /// - /// Note that implementations of this method attempt to receive initial - /// metadata from the server if initial metadata hasn't yet been received. - /// - /// \param[in] tag Tag identifying this request. - /// \param[out] status To be updated with the operation status. - virtual void Finish(Status* status, void* tag) = 0; -}; - -/// An interface that yields a sequence of messages of type \a R. -template -class AsyncReaderInterface { - public: - virtual ~AsyncReaderInterface() {} - - /// Read a message of type \a R into \a msg. Completion will be notified by \a - /// tag on the associated completion queue. - /// This is thread-safe with respect to \a Write or \a WritesDone methods. It - /// should not be called concurrently with other streaming APIs - /// on the same stream. It is not meaningful to call it concurrently - /// with another \a AsyncReaderInterface::Read on the same stream since reads - /// on the same stream are delivered in order. - /// - /// \param[out] msg Where to eventually store the read message. - /// \param[in] tag The tag identifying the operation. - /// - /// Side effect: note that this method attempt to receive initial metadata for - /// a stream if it hasn't yet been received. - virtual void Read(R* msg, void* tag) = 0; -}; - -/// An interface that can be fed a sequence of messages of type \a W. -template -class AsyncWriterInterface { - public: - virtual ~AsyncWriterInterface() {} - - /// Request the writing of \a msg with identifying tag \a tag. - /// - /// Only one write may be outstanding at any given time. This means that - /// after calling Write, one must wait to receive \a tag from the completion - /// queue BEFORE calling Write again. - /// This is thread-safe with respect to \a AsyncReaderInterface::Read - /// - /// \param[in] msg The message to be written. - /// \param[in] tag The tag identifying the operation. - virtual void Write(const W& msg, void* tag) = 0; - - /// Request the writing of \a msg using WriteOptions \a options with - /// identifying tag \a tag. - /// - /// Only one write may be outstanding at any given time. This means that - /// after calling Write, one must wait to receive \a tag from the completion - /// queue BEFORE calling Write again. - /// WriteOptions \a options is used to set the write options of this message. - /// This is thread-safe with respect to \a AsyncReaderInterface::Read - /// - /// \param[in] msg The message to be written. - /// \param[in] options The WriteOptions to be used to write this message. - /// \param[in] tag The tag identifying the operation. - virtual void Write(const W& msg, WriteOptions options, void* tag) = 0; - - /// Request the writing of \a msg and coalesce it with the writing - /// of trailing metadata, using WriteOptions \a options with - /// identifying tag \a tag. - /// - /// For client, WriteLast is equivalent of performing Write and - /// WritesDone in a single step. - /// For server, WriteLast buffers the \a msg. The writing of \a msg is held - /// until Finish is called, where \a msg and trailing metadata are coalesced - /// and write is initiated. Note that WriteLast can only buffer \a msg up to - /// the flow control window size. If \a msg size is larger than the window - /// size, it will be sent on wire without buffering. - /// - /// \param[in] msg The message to be written. - /// \param[in] options The WriteOptions to be used to write this message. - /// \param[in] tag The tag identifying the operation. - void WriteLast(const W& msg, WriteOptions options, void* tag) { - Write(msg, options.set_last_message(), tag); - } -}; - -template -class ClientAsyncReaderInterface : public ClientAsyncStreamingInterface, - public AsyncReaderInterface {}; - -/// Async client-side API for doing server-streaming RPCs, -/// where the incoming message stream coming from the server has -/// messages of type \a R. -template -class ClientAsyncReader final : public ClientAsyncReaderInterface { - public: - /// Create a stream and write the first request out. - /// \a tag will be notified on \a cq when the call has been started and - /// \a request has been written out. - /// Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - template - static ClientAsyncReader* Create(ChannelInterface* channel, - CompletionQueue* cq, const RpcMethod& method, - ClientContext* context, const W& request, - void* tag) { - Call call = channel->CreateCall(method, context, cq); - return new (g_core_codegen_interface->grpc_call_arena_alloc( - call.call(), sizeof(ClientAsyncReader))) - ClientAsyncReader(call, context, request, tag); - } - - // always allocated against a call arena, no memory free required - static void operator delete(void* ptr, std::size_t size) { - assert(size == sizeof(ClientAsyncReader)); - } - - /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata - /// method for semantics. - /// - /// Side effect: - /// - upon receiving initial metadata from the server, - /// the \a ClientContext associated with this call is updated, and the - /// calling code can access the received metadata through the - /// \a ClientContext. - void ReadInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - meta_ops_.set_output_tag(tag); - meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); - } - - void Read(R* msg, void* tag) override { - read_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - read_ops_.RecvInitialMetadata(context_); - } - read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); - } - - /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata received from the server. - void Finish(Status* status, void* tag) override { - finish_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - finish_ops_.RecvInitialMetadata(context_); - } - finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); - } - - private: - template - ClientAsyncReader(Call call, ClientContext* context, const W& request, - void* tag) - : context_(context), call_(call) { - init_ops_.set_output_tag(tag); - init_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(init_ops_.SendMessage(request).ok()); - init_ops_.ClientSendClose(); - call_.PerformOps(&init_ops_); - } - - ClientContext* context_; - Call call_; - CallOpSet - init_ops_; - CallOpSet meta_ops_; - CallOpSet> read_ops_; - CallOpSet finish_ops_; -}; - -/// Common interface for client side asynchronous writing. -template -class ClientAsyncWriterInterface : public ClientAsyncStreamingInterface, - public AsyncWriterInterface { - public: - /// Signal the client is done with the writes (half-close the client stream). - /// Thread-safe with respect to \a AsyncReaderInterface::Read - /// - /// \param[in] tag The tag identifying the operation. - virtual void WritesDone(void* tag) = 0; -}; - -/// Async API on the client side for doing client-streaming RPCs, -/// where the outgoing message stream going to the server contains -/// messages of type \a W. -template -class ClientAsyncWriter final : public ClientAsyncWriterInterface { - public: - /// Create a stream and write the first request out. - /// \a tag will be notified on \a cq when the call has been started (i.e. - /// intitial metadata sent) and \a request has been written out. - /// Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - /// \a response will be filled in with the single expected response - /// message from the server upon a successful call to the \a Finish - /// method of this instance. - template - static ClientAsyncWriter* Create(ChannelInterface* channel, - CompletionQueue* cq, const RpcMethod& method, - ClientContext* context, R* response, - void* tag) { - Call call = channel->CreateCall(method, context, cq); - return new (g_core_codegen_interface->grpc_call_arena_alloc( - call.call(), sizeof(ClientAsyncWriter))) - ClientAsyncWriter(call, context, response, tag); - } - - // always allocated against a call arena, no memory free required - static void operator delete(void* ptr, std::size_t size) { - assert(size == sizeof(ClientAsyncWriter)); - } - - /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata method for - /// semantics. - /// - /// Side effect: - /// - upon receiving initial metadata from the server, the \a ClientContext - /// associated with this call is updated, and the calling code can access - /// the received metadata through the \a ClientContext. - void ReadInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - meta_ops_.set_output_tag(tag); - meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); - } - - void Write(const W& msg, void* tag) override { - write_ops_.set_output_tag(tag); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok()); - call_.PerformOps(&write_ops_); - } - - void Write(const W& msg, WriteOptions options, void* tag) override { - write_ops_.set_output_tag(tag); - if (options.is_last_message()) { - options.set_buffer_hint(); - write_ops_.ClientSendClose(); - } - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - call_.PerformOps(&write_ops_); - } - - void WritesDone(void* tag) override { - write_ops_.set_output_tag(tag); - write_ops_.ClientSendClose(); - call_.PerformOps(&write_ops_); - } - - /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata received from the server. - /// - attempts to fill in the \a response parameter passed to this class's - /// constructor with the server's response message. - void Finish(Status* status, void* tag) override { - finish_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - finish_ops_.RecvInitialMetadata(context_); - } - finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); - } - - private: - template - ClientAsyncWriter(Call call, ClientContext* context, R* response, void* tag) - : context_(context), call_(call) { - finish_ops_.RecvMessage(response); - finish_ops_.AllowNoMessage(); - // if corked bit is set in context, we buffer up the initial metadata to - // coalesce with later message to be sent. No op is performed. - if (context_->initial_metadata_corked_) { - write_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - } else { - write_ops_.set_output_tag(tag); - write_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - call_.PerformOps(&write_ops_); - } - } - - ClientContext* context_; - Call call_; - CallOpSet meta_ops_; - CallOpSet - write_ops_; - CallOpSet - finish_ops_; -}; - -/// Async client-side interface for bi-directional streaming, -/// where the client-to-server message stream has messages of type \a W, -/// and the server-to-client message stream has messages of type \a R. -template -class ClientAsyncReaderWriterInterface : public ClientAsyncStreamingInterface, - public AsyncWriterInterface, - public AsyncReaderInterface { - public: - /// Signal the client is done with the writes (half-close the client stream). - /// Thread-safe with respect to \a AsyncReaderInterface::Read - /// - /// \param[in] tag The tag identifying the operation. - virtual void WritesDone(void* tag) = 0; -}; - -/// Async client-side interface for bi-directional streaming, -/// where the outgoing message stream going to the server -/// has messages of type \a W, and the incoming message stream coming -/// from the server has messages of type \a R. -template -class ClientAsyncReaderWriter final - : public ClientAsyncReaderWriterInterface { - public: - /// Create a stream and write the first request out. - /// \a tag will be notified on \a cq when the call has been started (i.e. - /// intitial metadata sent). - /// Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - static ClientAsyncReaderWriter* Create(ChannelInterface* channel, - CompletionQueue* cq, - const RpcMethod& method, - ClientContext* context, void* tag) { - Call call = channel->CreateCall(method, context, cq); - - return new (g_core_codegen_interface->grpc_call_arena_alloc( - call.call(), sizeof(ClientAsyncReaderWriter))) - ClientAsyncReaderWriter(call, context, tag); - } - - // always allocated against a call arena, no memory free required - static void operator delete(void* ptr, std::size_t size) { - assert(size == sizeof(ClientAsyncReaderWriter)); - } - - /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata method - /// for semantics of this method. - /// - /// Side effect: - /// - upon receiving initial metadata from the server, the \a ClientContext - /// is updated with it, and then the receiving initial metadata can - /// be accessed through this \a ClientContext. - void ReadInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - meta_ops_.set_output_tag(tag); - meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); - } - - void Read(R* msg, void* tag) override { - read_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - read_ops_.RecvInitialMetadata(context_); - } - read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); - } - - void Write(const W& msg, void* tag) override { - write_ops_.set_output_tag(tag); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok()); - call_.PerformOps(&write_ops_); - } - - void Write(const W& msg, WriteOptions options, void* tag) override { - write_ops_.set_output_tag(tag); - if (options.is_last_message()) { - options.set_buffer_hint(); - write_ops_.ClientSendClose(); - } - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - call_.PerformOps(&write_ops_); - } - - void WritesDone(void* tag) override { - write_ops_.set_output_tag(tag); - write_ops_.ClientSendClose(); - call_.PerformOps(&write_ops_); - } - - /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. - /// Side effect - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata sent from the server. - void Finish(Status* status, void* tag) override { - finish_ops_.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - finish_ops_.RecvInitialMetadata(context_); - } - finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); - } - - private: - ClientAsyncReaderWriter(Call call, ClientContext* context, void* tag) - : context_(context), call_(call) { - if (context_->initial_metadata_corked_) { - // if corked bit is set in context, we buffer up the initial metadata to - // coalesce with later message to be sent. No op is performed. - write_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - } else { - write_ops_.set_output_tag(tag); - write_ops_.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - call_.PerformOps(&write_ops_); - } - } - - ClientContext* context_; - Call call_; - CallOpSet meta_ops_; - CallOpSet> read_ops_; - CallOpSet - write_ops_; - CallOpSet finish_ops_; -}; - -template -class ServerAsyncReaderInterface : public ServerAsyncStreamingInterface, - public AsyncReaderInterface { - public: - /// Indicate that the stream is to be finished with a certain status code - /// and also send out \a msg response to the client. - /// Request notification for when the server has sent the response and the - /// appropriate signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// It is appropriate to call this method when: - /// * all messages from the client have been received (either known - /// implictly, or explicitly because a previous - /// \a AsyncReaderInterface::Read operation with a non-ok result, - /// e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false'). - /// - /// This operation will end when the server has finished sending out initial - /// metadata (if not sent already), response message, and status, or if - /// some failure occurred when trying to do so. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of this call. - /// \param[in] msg To be sent to the client as the response for this call. - virtual void Finish(const W& msg, const Status& status, void* tag) = 0; - - /// Indicate that the stream is to be finished with a certain - /// non-OK status code. - /// Request notification for when the server has sent the appropriate - /// signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// This call is meant to end the call with some error, and can be called at - /// any point that the server would like to "fail" the call (though note - /// this shouldn't be called concurrently with any other "sending" call, like - /// \a AsyncWriterInterface::Write). - /// - /// This operation will end when the server has finished sending out initial - /// metadata (if not sent already), and status, or if some failure occurred - /// when trying to do so. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of this call. - /// - Note: \a status must have a non-OK code. - virtual void FinishWithError(const Status& status, void* tag) = 0; -}; - -/// Async server-side API for doing client-streaming RPCs, -/// where the incoming message stream from the client has messages of type \a R, -/// and the single response message sent from the server is type \a W. -template -class ServerAsyncReader final : public ServerAsyncReaderInterface { - public: - explicit ServerAsyncReader(ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} - - /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. - /// - /// Implicit input parameter: - /// - The initial metadata that will be sent to the client from this op will - /// be taken from the \a ServerContext associated with the call. - void SendInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - meta_ops_.set_output_tag(tag); - meta_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - meta_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); - } - - void Read(R* msg, void* tag) override { - read_ops_.set_output_tag(tag); - read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); - } - - /// See the \a ServerAsyncReaderInterface.Read method for semantics - /// - /// Side effect: - /// - also sends initial metadata if not alreay sent. - /// - uses the \a ServerContext associated with this call to send possible - /// initial and trailing metadata. - /// - /// Note: \a msg is not sent if \a status has a non-OK code. - void Finish(const W& msg, const Status& status, void* tag) override { - finish_ops_.set_output_tag(tag); - if (!ctx_->sent_initial_metadata_) { - finish_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - finish_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - // The response is dropped if the status is not OK. - if (status.ok()) { - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, - finish_ops_.SendMessage(msg)); - } else { - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - } - call_.PerformOps(&finish_ops_); - } - - /// See the \a ServerAsyncReaderInterface.Read method for semantics - /// - /// Side effect: - /// - also sends initial metadata if not alreay sent. - /// - uses the \a ServerContext associated with this call to send possible - /// initial and trailing metadata. - void FinishWithError(const Status& status, void* tag) override { - GPR_CODEGEN_ASSERT(!status.ok()); - finish_ops_.set_output_tag(tag); - if (!ctx_->sent_initial_metadata_) { - finish_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - finish_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); - } - - private: - void BindCall(Call* call) override { call_ = *call; } - - Call call_; - ServerContext* ctx_; - CallOpSet meta_ops_; - CallOpSet> read_ops_; - CallOpSet - finish_ops_; -}; - -template -class ServerAsyncWriterInterface : public ServerAsyncStreamingInterface, - public AsyncWriterInterface { - public: - /// Indicate that the stream is to be finished with a certain status code. - /// Request notification for when the server has sent the appropriate - /// signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// It is appropriate to call this method when either: - /// * all messages from the client have been received (either known - /// implictly, or explicitly because a previous \a - /// AsyncReaderInterface::Read operation with a non-ok - /// result (e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false'. - /// * it is desired to end the call early with some non-OK status code. - /// - /// This operation will end when the server has finished sending out initial - /// metadata (if not sent already), response message, and status, or if - /// some failure occurred when trying to do so. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of this call. - virtual void Finish(const Status& status, void* tag) = 0; - - /// Request the writing of \a msg and coalesce it with trailing metadata which - /// contains \a status, using WriteOptions options with - /// identifying tag \a tag. - /// - /// WriteAndFinish is equivalent of performing WriteLast and Finish - /// in a single step. - /// - /// \param[in] msg The message to be written. - /// \param[in] options The WriteOptions to be used to write this message. - /// \param[in] status The Status that server returns to client. - /// \param[in] tag The tag identifying the operation. - virtual void WriteAndFinish(const W& msg, WriteOptions options, - const Status& status, void* tag) = 0; -}; - -/// Async server-side API for doing server streaming RPCs, -/// where the outgoing message stream from the server has messages of type \a W. -template -class ServerAsyncWriter final : public ServerAsyncWriterInterface { - public: - explicit ServerAsyncWriter(ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} - - /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. - /// - /// Implicit input parameter: - /// - The initial metadata that will be sent to the client from this op will - /// be taken from the \a ServerContext associated with the call. - /// - /// \param[in] tag Tag identifying this request. - void SendInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - meta_ops_.set_output_tag(tag); - meta_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - meta_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); - } - - void Write(const W& msg, void* tag) override { - write_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&write_ops_); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok()); - call_.PerformOps(&write_ops_); - } - - void Write(const W& msg, WriteOptions options, void* tag) override { - write_ops_.set_output_tag(tag); - if (options.is_last_message()) { - options.set_buffer_hint(); - } - - EnsureInitialMetadataSent(&write_ops_); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - call_.PerformOps(&write_ops_); - } - - /// See the \a ServerAsyncWriterInterface.WriteAndFinish method for semantics. - /// - /// Implicit input parameter: - /// - the \a ServerContext associated with this call is used - /// for sending trailing (and initial) metadata to the client. - /// - /// Note: \a status must have an OK code. - void WriteAndFinish(const W& msg, WriteOptions options, const Status& status, - void* tag) override { - write_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&write_ops_); - options.set_buffer_hint(); - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - write_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&write_ops_); - } - - /// See the \a ServerAsyncWriterInterface.Finish method for semantics. - /// - /// Implicit input parameter: - /// - the \a ServerContext associated with this call is used for sending - /// trailing (and initial if not already sent) metadata to the client. - /// - /// Note: there are no restrictions are the code of - /// \a status,it may be non-OK - void Finish(const Status& status, void* tag) override { - finish_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&finish_ops_); - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); - } - - private: - void BindCall(Call* call) override { call_ = *call; } - - template - void EnsureInitialMetadataSent(T* ops) { - if (!ctx_->sent_initial_metadata_) { - ops->SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops->set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - } - - Call call_; - ServerContext* ctx_; - CallOpSet meta_ops_; - CallOpSet - write_ops_; - CallOpSet finish_ops_; -}; - -/// Server-side interface for asynchronous bi-directional streaming. -template -class ServerAsyncReaderWriterInterface : public ServerAsyncStreamingInterface, - public AsyncWriterInterface, - public AsyncReaderInterface { - public: - /// Indicate that the stream is to be finished with a certain status code. - /// Request notification for when the server has sent the appropriate - /// signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// It is appropriate to call this method when either: - /// * all messages from the client have been received (either known - /// implictly, or explicitly because a previous \a - /// AsyncReaderInterface::Read operation - /// with a non-ok result (e.g., cq->Next(&read_tag, &ok) filled in 'ok' - /// with 'false'. - /// * it is desired to end the call early with some non-OK status code. - /// - /// This operation will end when the server has finished sending out initial - /// metadata (if not sent already), response message, and status, or if some - /// failure occurred when trying to do so. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of this call. - virtual void Finish(const Status& status, void* tag) = 0; - - /// Request the writing of \a msg and coalesce it with trailing metadata which - /// contains \a status, using WriteOptions options with - /// identifying tag \a tag. - /// - /// WriteAndFinish is equivalent of performing WriteLast and Finish in a - /// single step. - /// - /// \param[in] msg The message to be written. - /// \param[in] options The WriteOptions to be used to write this message. - /// \param[in] status The Status that server returns to client. - /// \param[in] tag The tag identifying the operation. - virtual void WriteAndFinish(const W& msg, WriteOptions options, - const Status& status, void* tag) = 0; -}; - -/// Async server-side API for doing bidirectional streaming RPCs, -/// where the incoming message stream coming from the client has messages of -/// type \a R, and the outgoing message stream coming from the server has -/// messages of type \a W. -template -class ServerAsyncReaderWriter final - : public ServerAsyncReaderWriterInterface { - public: - explicit ServerAsyncReaderWriter(ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} - - /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. - /// - /// Implicit input parameter: - /// - The initial metadata that will be sent to the client from this op will - /// be taken from the \a ServerContext associated with the call. - /// - /// \param[in] tag Tag identifying this request. - void SendInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - meta_ops_.set_output_tag(tag); - meta_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - meta_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); - } - - void Read(R* msg, void* tag) override { - read_ops_.set_output_tag(tag); - read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); - } - - void Write(const W& msg, void* tag) override { - write_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&write_ops_); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok()); - call_.PerformOps(&write_ops_); - } - - void Write(const W& msg, WriteOptions options, void* tag) override { - write_ops_.set_output_tag(tag); - if (options.is_last_message()) { - options.set_buffer_hint(); - } - EnsureInitialMetadataSent(&write_ops_); - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - call_.PerformOps(&write_ops_); - } - - /// See the \a ServerAsyncReaderWriterInterface.WriteAndFinish - /// method for semantics. - /// - /// Implicit input parameter: - /// - the \a ServerContext associated with this call is used - /// for sending trailing (and initial) metadata to the client. - /// - /// Note: \a status must have an OK code. - void WriteAndFinish(const W& msg, WriteOptions options, const Status& status, - void* tag) override { - write_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&write_ops_); - options.set_buffer_hint(); - GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok()); - write_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&write_ops_); - } - - /// See the \a ServerAsyncReaderWriterInterface.Finish method for semantics. - /// - /// Implicit input parameter: - /// - the \a ServerContext associated with this call is used for sending - /// trailing (and initial if not already sent) metadata to the client. - /// - /// Note: there are no restrictions are the code of \a status, - /// it may be non-OK - void Finish(const Status& status, void* tag) override { - finish_ops_.set_output_tag(tag); - EnsureInitialMetadataSent(&finish_ops_); - - finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); - } - - private: - friend class ::grpc::Server; - - void BindCall(Call* call) override { call_ = *call; } - - template - void EnsureInitialMetadataSent(T* ops) { - if (!ctx_->sent_initial_metadata_) { - ops->SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops->set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - } - - Call call_; - ServerContext* ctx_; - CallOpSet meta_ops_; - CallOpSet> read_ops_; - CallOpSet - write_ops_; - CallOpSet finish_ops_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_ASYNC_STREAM_H diff --git a/winx64/include/grpc++/impl/codegen/async_unary_call.h b/winx64/include/grpc++/impl/codegen/async_unary_call.h deleted file mode 100644 index f0f90968..00000000 --- a/winx64/include/grpc++/impl/codegen/async_unary_call.h +++ /dev/null @@ -1,269 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H -#define GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H - -#include -#include -#include -#include -#include -#include -#include - -namespace grpc { - -class CompletionQueue; -extern CoreCodegenInterface* g_core_codegen_interface; - -/// An interface relevant for async client side unary RPCS (which send -/// one request message to a server and receive one response message). -template -class ClientAsyncResponseReaderInterface { - public: - virtual ~ClientAsyncResponseReaderInterface() {} - - /// Request notification of the reading of initial metadata. Completion - /// will be notified by \a tag on the associated completion queue. - /// This call is optional, but if it is used, it cannot be used concurrently - /// with or after the \a Finish method. - /// - /// \param[in] tag Tag identifying this request. - virtual void ReadInitialMetadata(void* tag) = 0; - - /// Request to receive the server's response \a msg and final \a status for - /// the call, and to notify \a tag on this call's completion queue when - /// finished. - /// - /// This function will return when either: - /// - when the server's response message and status have been received. - /// - when the server has returned a non-OK status (no message expected in - /// this case). - /// - when the call failed for some reason and the library generated a - /// non-OK status. - /// - /// \param[in] tag Tag identifying this request. - /// \param[out] status To be updated with the operation status. - /// \param[out] msg To be filled in with the server's response message. - virtual void Finish(R* msg, Status* status, void* tag) = 0; -}; - -/// Async API for client-side unary RPCs, where the message response -/// received from the server is of type \a R. -template -class ClientAsyncResponseReader final - : public ClientAsyncResponseReaderInterface { - public: - /// Start a call and write the request out. - /// \a tag will be notified on \a cq when the call has been started (i.e. - /// intitial metadata sent) and \a request has been written out. - /// Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - template - static ClientAsyncResponseReader* Create(ChannelInterface* channel, - CompletionQueue* cq, - const RpcMethod& method, - ClientContext* context, - const W& request) { - Call call = channel->CreateCall(method, context, cq); - return new (g_core_codegen_interface->grpc_call_arena_alloc( - call.call(), sizeof(ClientAsyncResponseReader))) - ClientAsyncResponseReader(call, context, request); - } - - // always allocated against a call arena, no memory free required - static void operator delete(void* ptr, std::size_t size) { - assert(size == sizeof(ClientAsyncResponseReader)); - } - - /// See \a ClientAsyncResponseReaderInterface::ReadInitialMetadata for - /// semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata sent from the server. - void ReadInitialMetadata(void* tag) { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - meta_buf.set_output_tag(tag); - meta_buf.RecvInitialMetadata(context_); - call_.PerformOps(&meta_buf); - } - - /// See \a ClientAysncResponseReaderInterface::Finish for semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible initial and trailing metadata sent from the server. - void Finish(R* msg, Status* status, void* tag) { - finish_buf.set_output_tag(tag); - if (!context_->initial_metadata_received_) { - finish_buf.RecvInitialMetadata(context_); - } - finish_buf.RecvMessage(msg); - finish_buf.AllowNoMessage(); - finish_buf.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_buf); - } - - private: - ClientContext* const context_; - Call call_; - - template - ClientAsyncResponseReader(Call call, ClientContext* context, const W& request) - : context_(context), call_(call) { - init_buf.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(init_buf.SendMessage(request).ok()); - init_buf.ClientSendClose(); - call_.PerformOps(&init_buf); - } - - // disable operator new - static void* operator new(std::size_t size); - static void* operator new(std::size_t size, void* p) { return p; } - - SneakyCallOpSet - init_buf; - CallOpSet meta_buf; - CallOpSet, - CallOpClientRecvStatus> - finish_buf; -}; - -/// Async server-side API for handling unary calls, where the single -/// response message sent to the client is of type \a W. -template -class ServerAsyncResponseWriter final : public ServerAsyncStreamingInterface { - public: - explicit ServerAsyncResponseWriter(ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} - - /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. - /// - /// Side effect: - /// The initial metadata that will be sent to the client from this op will - /// be taken from the \a ServerContext associated with the call. - /// - /// \param[in] tag Tag identifying this request. - void SendInitialMetadata(void* tag) override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - meta_buf_.set_output_tag(tag); - meta_buf_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - meta_buf_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_buf_); - } - - /// Indicate that the stream is to be finished and request notification - /// when the server has sent the appropriate signals to the client to - /// end the call. Should not be used concurrently with other operations. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of the call. - /// \param[in] msg Message to be sent to the client. - /// - /// Side effect: - /// - also sends initial metadata if not already sent (using the - /// \a ServerContext associated with this call). - /// - /// Note: if \a status has a non-OK code, then \a msg will not be sent, - /// and the client will receive only the status with possible trailing - /// metadata. - void Finish(const W& msg, const Status& status, void* tag) { - finish_buf_.set_output_tag(tag); - if (!ctx_->sent_initial_metadata_) { - finish_buf_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - finish_buf_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - // The response is dropped if the status is not OK. - if (status.ok()) { - finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, - finish_buf_.SendMessage(msg)); - } else { - finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status); - } - call_.PerformOps(&finish_buf_); - } - - /// Indicate that the stream is to be finished with a non-OK status, - /// and request notification for when the server has finished sending the - /// appropriate signals to the client to end the call. - /// Should not be used concurrently with other operations. - /// - /// \param[in] tag Tag identifying this request. - /// \param[in] status To be sent to the client as the result of the call. - /// - Note: \a status must have a non-OK code. - /// - /// Side effect: - /// - also sends initial metadata if not already sent (using the - /// \a ServerContext associated with this call). - void FinishWithError(const Status& status, void* tag) { - GPR_CODEGEN_ASSERT(!status.ok()); - finish_buf_.set_output_tag(tag); - if (!ctx_->sent_initial_metadata_) { - finish_buf_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - finish_buf_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_buf_); - } - - private: - void BindCall(Call* call) override { call_ = *call; } - - Call call_; - ServerContext* ctx_; - CallOpSet meta_buf_; - CallOpSet - finish_buf_; -}; - -} // namespace grpc - -namespace std { -template -class default_delete> { - public: - void operator()(void* p) {} -}; -template -class default_delete> { - public: - void operator()(void* p) {} -}; -} - -#endif // GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H diff --git a/winx64/include/grpc++/impl/codegen/call.h b/winx64/include/grpc++/impl/codegen/call.h deleted file mode 100644 index f45ab239..00000000 --- a/winx64/include/grpc++/impl/codegen/call.h +++ /dev/null @@ -1,681 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CALL_H -#define GRPCXX_IMPL_CODEGEN_CALL_H - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -struct grpc_byte_buffer; - -namespace grpc { - -class ByteBuffer; -class Call; -class CallHook; -class CompletionQueue; -extern CoreCodegenInterface* g_core_codegen_interface; - -const char kBinaryErrorDetailsKey[] = "grpc-status-details-bin"; - -// TODO(yangg) if the map is changed before we send, the pointers will be a -// mess. Make sure it does not happen. -inline grpc_metadata* FillMetadataArray( - const std::multimap& metadata, - size_t* metadata_count, const grpc::string& optional_error_details) { - *metadata_count = metadata.size() + (optional_error_details.empty() ? 0 : 1); - if (*metadata_count == 0) { - return nullptr; - } - grpc_metadata* metadata_array = - (grpc_metadata*)(g_core_codegen_interface->gpr_malloc( - (*metadata_count) * sizeof(grpc_metadata))); - size_t i = 0; - for (auto iter = metadata.cbegin(); iter != metadata.cend(); ++iter, ++i) { - metadata_array[i].key = SliceReferencingString(iter->first); - metadata_array[i].value = SliceReferencingString(iter->second); - } - if (!optional_error_details.empty()) { - metadata_array[i].key = - g_core_codegen_interface->grpc_slice_from_static_buffer( - kBinaryErrorDetailsKey, sizeof(kBinaryErrorDetailsKey) - 1); - metadata_array[i].value = SliceReferencingString(optional_error_details); - } - return metadata_array; -} - -/// Per-message write options. -class WriteOptions { - public: - WriteOptions() : flags_(0), last_message_(false) {} - WriteOptions(const WriteOptions& other) - : flags_(other.flags_), last_message_(other.last_message_) {} - - /// Clear all flags. - inline void Clear() { flags_ = 0; } - - /// Returns raw flags bitset. - inline uint32_t flags() const { return flags_; } - - /// Sets flag for the disabling of compression for the next message write. - /// - /// \sa GRPC_WRITE_NO_COMPRESS - inline WriteOptions& set_no_compression() { - SetBit(GRPC_WRITE_NO_COMPRESS); - return *this; - } - - /// Clears flag for the disabling of compression for the next message write. - /// - /// \sa GRPC_WRITE_NO_COMPRESS - inline WriteOptions& clear_no_compression() { - ClearBit(GRPC_WRITE_NO_COMPRESS); - return *this; - } - - /// Get value for the flag indicating whether compression for the next - /// message write is forcefully disabled. - /// - /// \sa GRPC_WRITE_NO_COMPRESS - inline bool get_no_compression() const { - return GetBit(GRPC_WRITE_NO_COMPRESS); - } - - /// Sets flag indicating that the write may be buffered and need not go out on - /// the wire immediately. - /// - /// \sa GRPC_WRITE_BUFFER_HINT - inline WriteOptions& set_buffer_hint() { - SetBit(GRPC_WRITE_BUFFER_HINT); - return *this; - } - - /// Clears flag indicating that the write may be buffered and need not go out - /// on the wire immediately. - /// - /// \sa GRPC_WRITE_BUFFER_HINT - inline WriteOptions& clear_buffer_hint() { - ClearBit(GRPC_WRITE_BUFFER_HINT); - return *this; - } - - /// Get value for the flag indicating that the write may be buffered and need - /// not go out on the wire immediately. - /// - /// \sa GRPC_WRITE_BUFFER_HINT - inline bool get_buffer_hint() const { return GetBit(GRPC_WRITE_BUFFER_HINT); } - - /// corked bit: aliases set_buffer_hint currently, with the intent that - /// set_buffer_hint will be removed in the future - inline WriteOptions& set_corked() { - SetBit(GRPC_WRITE_BUFFER_HINT); - return *this; - } - - inline WriteOptions& clear_corked() { - ClearBit(GRPC_WRITE_BUFFER_HINT); - return *this; - } - - inline bool is_corked() const { return GetBit(GRPC_WRITE_BUFFER_HINT); } - - /// last-message bit: indicates this is the last message in a stream - /// client-side: makes Write the equivalent of performing Write, WritesDone - /// in a single step - /// server-side: hold the Write until the service handler returns (sync api) - /// or until Finish is called (async api) - inline WriteOptions& set_last_message() { - last_message_ = true; - return *this; - } - - /// Clears flag indicating that this is the last message in a stream, - /// disabling coalescing. - inline WriteOptions& clear_last_messsage() { - last_message_ = false; - return *this; - } - - /// Get value for the flag indicating that this is the last message, and - /// should be coalesced with trailing metadata. - /// - /// \sa GRPC_WRITE_LAST_MESSAGE - bool is_last_message() const { return last_message_; } - - WriteOptions& operator=(const WriteOptions& rhs) { - flags_ = rhs.flags_; - return *this; - } - - private: - void SetBit(const uint32_t mask) { flags_ |= mask; } - - void ClearBit(const uint32_t mask) { flags_ &= ~mask; } - - bool GetBit(const uint32_t mask) const { return (flags_ & mask) != 0; } - - uint32_t flags_; - bool last_message_; -}; - -/// Default argument for CallOpSet. I is unused by the class, but can be -/// used for generating multiple names for the same thing. -template -class CallNoOp { - protected: - void AddOp(grpc_op* ops, size_t* nops) {} - void FinishOp(bool* status) {} -}; - -class CallOpSendInitialMetadata { - public: - CallOpSendInitialMetadata() : send_(false) { - maybe_compression_level_.is_set = false; - } - - void SendInitialMetadata( - const std::multimap& metadata, - uint32_t flags) { - maybe_compression_level_.is_set = false; - send_ = true; - flags_ = flags; - initial_metadata_ = - FillMetadataArray(metadata, &initial_metadata_count_, ""); - } - - void set_compression_level(grpc_compression_level level) { - maybe_compression_level_.is_set = true; - maybe_compression_level_.level = level; - } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (!send_) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_SEND_INITIAL_METADATA; - op->flags = flags_; - op->reserved = NULL; - op->data.send_initial_metadata.count = initial_metadata_count_; - op->data.send_initial_metadata.metadata = initial_metadata_; - op->data.send_initial_metadata.maybe_compression_level.is_set = - maybe_compression_level_.is_set; - if (maybe_compression_level_.is_set) { - op->data.send_initial_metadata.maybe_compression_level.level = - maybe_compression_level_.level; - } - } - void FinishOp(bool* status) { - if (!send_) return; - g_core_codegen_interface->gpr_free(initial_metadata_); - send_ = false; - } - - bool send_; - uint32_t flags_; - size_t initial_metadata_count_; - grpc_metadata* initial_metadata_; - struct { - bool is_set; - grpc_compression_level level; - } maybe_compression_level_; -}; - -class CallOpSendMessage { - public: - CallOpSendMessage() : send_buf_(nullptr), own_buf_(false) {} - - /// Send \a message using \a options for the write. The \a options are cleared - /// after use. - template - Status SendMessage(const M& message, - WriteOptions options) GRPC_MUST_USE_RESULT; - - template - Status SendMessage(const M& message) GRPC_MUST_USE_RESULT; - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (send_buf_ == nullptr) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_SEND_MESSAGE; - op->flags = write_options_.flags(); - op->reserved = NULL; - op->data.send_message.send_message = send_buf_; - // Flags are per-message: clear them after use. - write_options_.Clear(); - } - void FinishOp(bool* status) { - if (own_buf_) g_core_codegen_interface->grpc_byte_buffer_destroy(send_buf_); - send_buf_ = nullptr; - } - - private: - grpc_byte_buffer* send_buf_; - WriteOptions write_options_; - bool own_buf_; -}; - -template -Status CallOpSendMessage::SendMessage(const M& message, WriteOptions options) { - write_options_ = options; - return SerializationTraits::Serialize(message, &send_buf_, &own_buf_); -} - -template -Status CallOpSendMessage::SendMessage(const M& message) { - return SendMessage(message, WriteOptions()); -} - -template -class CallOpRecvMessage { - public: - CallOpRecvMessage() - : got_message(false), - message_(nullptr), - allow_not_getting_message_(false) {} - - void RecvMessage(R* message) { message_ = message; } - - // Do not change status if no message is received. - void AllowNoMessage() { allow_not_getting_message_ = true; } - - bool got_message; - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (message_ == nullptr) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_RECV_MESSAGE; - op->flags = 0; - op->reserved = NULL; - op->data.recv_message.recv_message = &recv_buf_; - } - - void FinishOp(bool* status) { - if (message_ == nullptr) return; - if (recv_buf_) { - if (*status) { - got_message = *status = - SerializationTraits::Deserialize(recv_buf_, message_).ok(); - } else { - got_message = false; - g_core_codegen_interface->grpc_byte_buffer_destroy(recv_buf_); - } - } else { - got_message = false; - if (!allow_not_getting_message_) { - *status = false; - } - } - message_ = nullptr; - } - - private: - R* message_; - grpc_byte_buffer* recv_buf_; - bool allow_not_getting_message_; -}; - -namespace CallOpGenericRecvMessageHelper { -class DeserializeFunc { - public: - virtual Status Deserialize(grpc_byte_buffer* buf) = 0; - virtual ~DeserializeFunc() {} -}; - -template -class DeserializeFuncType final : public DeserializeFunc { - public: - DeserializeFuncType(R* message) : message_(message) {} - Status Deserialize(grpc_byte_buffer* buf) override { - return SerializationTraits::Deserialize(buf, message_); - } - - ~DeserializeFuncType() override {} - - private: - R* message_; // Not a managed pointer because management is external to this -}; -} // namespace CallOpGenericRecvMessageHelper - -class CallOpGenericRecvMessage { - public: - CallOpGenericRecvMessage() - : got_message(false), allow_not_getting_message_(false) {} - - template - void RecvMessage(R* message) { - // Use an explicit base class pointer to avoid resolution error in the - // following unique_ptr::reset for some old implementations. - CallOpGenericRecvMessageHelper::DeserializeFunc* func = - new CallOpGenericRecvMessageHelper::DeserializeFuncType(message); - deserialize_.reset(func); - } - - // Do not change status if no message is received. - void AllowNoMessage() { allow_not_getting_message_ = true; } - - bool got_message; - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (!deserialize_) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_RECV_MESSAGE; - op->flags = 0; - op->reserved = NULL; - op->data.recv_message.recv_message = &recv_buf_; - } - - void FinishOp(bool* status) { - if (!deserialize_) return; - if (recv_buf_) { - if (*status) { - got_message = true; - *status = deserialize_->Deserialize(recv_buf_).ok(); - } else { - got_message = false; - g_core_codegen_interface->grpc_byte_buffer_destroy(recv_buf_); - } - } else { - got_message = false; - if (!allow_not_getting_message_) { - *status = false; - } - } - deserialize_.reset(); - } - - private: - std::unique_ptr deserialize_; - grpc_byte_buffer* recv_buf_; - bool allow_not_getting_message_; -}; - -class CallOpClientSendClose { - public: - CallOpClientSendClose() : send_(false) {} - - void ClientSendClose() { send_ = true; } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (!send_) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; - op->flags = 0; - op->reserved = NULL; - } - void FinishOp(bool* status) { send_ = false; } - - private: - bool send_; -}; - -class CallOpServerSendStatus { - public: - CallOpServerSendStatus() : send_status_available_(false) {} - - void ServerSendStatus( - const std::multimap& trailing_metadata, - const Status& status) { - send_error_details_ = status.error_details(); - trailing_metadata_ = FillMetadataArray( - trailing_metadata, &trailing_metadata_count_, send_error_details_); - send_status_available_ = true; - send_status_code_ = static_cast(status.error_code()); - send_error_message_ = status.error_message(); - } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (!send_status_available_) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_SEND_STATUS_FROM_SERVER; - op->data.send_status_from_server.trailing_metadata_count = - trailing_metadata_count_; - op->data.send_status_from_server.trailing_metadata = trailing_metadata_; - op->data.send_status_from_server.status = send_status_code_; - error_message_slice_ = SliceReferencingString(send_error_message_); - op->data.send_status_from_server.status_details = - send_error_message_.empty() ? nullptr : &error_message_slice_; - op->flags = 0; - op->reserved = NULL; - } - - void FinishOp(bool* status) { - if (!send_status_available_) return; - g_core_codegen_interface->gpr_free(trailing_metadata_); - send_status_available_ = false; - } - - private: - bool send_status_available_; - grpc_status_code send_status_code_; - grpc::string send_error_details_; - grpc::string send_error_message_; - size_t trailing_metadata_count_; - grpc_metadata* trailing_metadata_; - grpc_slice error_message_slice_; -}; - -class CallOpRecvInitialMetadata { - public: - CallOpRecvInitialMetadata() : metadata_map_(nullptr) {} - - void RecvInitialMetadata(ClientContext* context) { - context->initial_metadata_received_ = true; - metadata_map_ = &context->recv_initial_metadata_; - } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (metadata_map_ == nullptr) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_RECV_INITIAL_METADATA; - op->data.recv_initial_metadata.recv_initial_metadata = metadata_map_->arr(); - op->flags = 0; - op->reserved = NULL; - } - - void FinishOp(bool* status) { - if (metadata_map_ == nullptr) return; - metadata_map_->FillMap(); - metadata_map_ = nullptr; - } - - private: - MetadataMap* metadata_map_; -}; - -class CallOpClientRecvStatus { - public: - CallOpClientRecvStatus() : recv_status_(nullptr) {} - - void ClientRecvStatus(ClientContext* context, Status* status) { - metadata_map_ = &context->trailing_metadata_; - recv_status_ = status; - error_message_ = g_core_codegen_interface->grpc_empty_slice(); - } - - protected: - void AddOp(grpc_op* ops, size_t* nops) { - if (recv_status_ == nullptr) return; - grpc_op* op = &ops[(*nops)++]; - op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; - op->data.recv_status_on_client.trailing_metadata = metadata_map_->arr(); - op->data.recv_status_on_client.status = &status_code_; - op->data.recv_status_on_client.status_details = &error_message_; - op->flags = 0; - op->reserved = NULL; - } - - void FinishOp(bool* status) { - if (recv_status_ == nullptr) return; - metadata_map_->FillMap(); - grpc::string binary_error_details; - auto iter = metadata_map_->map()->find(kBinaryErrorDetailsKey); - if (iter != metadata_map_->map()->end()) { - binary_error_details = - grpc::string(iter->second.begin(), iter->second.length()); - } - *recv_status_ = Status(static_cast(status_code_), - grpc::string(GRPC_SLICE_START_PTR(error_message_), - GRPC_SLICE_END_PTR(error_message_)), - binary_error_details); - g_core_codegen_interface->grpc_slice_unref(error_message_); - recv_status_ = nullptr; - } - - private: - MetadataMap* metadata_map_; - Status* recv_status_; - grpc_status_code status_code_; - grpc_slice error_message_; -}; - -/// An abstract collection of call ops, used to generate the -/// grpc_call_op structure to pass down to the lower layers, -/// and as it is-a CompletionQueueTag, also massages the final -/// completion into the correct form for consumption in the C++ -/// API. -class CallOpSetInterface : public CompletionQueueTag { - public: - /// Fills in grpc_op, starting from ops[*nops] and moving - /// upwards. - virtual void FillOps(grpc_call* call, grpc_op* ops, size_t* nops) = 0; -}; - -/// Primary implementaiton of CallOpSetInterface. -/// Since we cannot use variadic templates, we declare slots up to -/// the maximum count of ops we'll need in a set. We leverage the -/// empty base class optimization to slim this class (especially -/// when there are many unused slots used). To avoid duplicate base classes, -/// the template parmeter for CallNoOp is varied by argument position. -template , class Op2 = CallNoOp<2>, - class Op3 = CallNoOp<3>, class Op4 = CallNoOp<4>, - class Op5 = CallNoOp<5>, class Op6 = CallNoOp<6>> -class CallOpSet : public CallOpSetInterface, - public Op1, - public Op2, - public Op3, - public Op4, - public Op5, - public Op6 { - public: - CallOpSet() : return_tag_(this) {} - void FillOps(grpc_call* call, grpc_op* ops, size_t* nops) override { - this->Op1::AddOp(ops, nops); - this->Op2::AddOp(ops, nops); - this->Op3::AddOp(ops, nops); - this->Op4::AddOp(ops, nops); - this->Op5::AddOp(ops, nops); - this->Op6::AddOp(ops, nops); - g_core_codegen_interface->grpc_call_ref(call); - call_ = call; - } - - bool FinalizeResult(void** tag, bool* status) override { - this->Op1::FinishOp(status); - this->Op2::FinishOp(status); - this->Op3::FinishOp(status); - this->Op4::FinishOp(status); - this->Op5::FinishOp(status); - this->Op6::FinishOp(status); - *tag = return_tag_; - - g_core_codegen_interface->grpc_call_unref(call_); - return true; - } - - void set_output_tag(void* return_tag) { return_tag_ = return_tag; } - - private: - void* return_tag_; - grpc_call* call_; -}; - -/// A CallOpSet that does not post completions to the completion queue. -/// -/// Allows hiding some completions that the C core must generate from -/// C++ users. -template , class Op2 = CallNoOp<2>, - class Op3 = CallNoOp<3>, class Op4 = CallNoOp<4>, - class Op5 = CallNoOp<5>, class Op6 = CallNoOp<6>> -class SneakyCallOpSet : public CallOpSet { - public: - bool FinalizeResult(void** tag, bool* status) override { - typedef CallOpSet Base; - return Base::FinalizeResult(tag, status) && false; - } -}; - -/// Straightforward wrapping of the C call object -class Call final { - public: - /** call is owned by the caller */ - Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq) - : call_hook_(call_hook), - cq_(cq), - call_(call), - max_receive_message_size_(-1) {} - - Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq, - int max_receive_message_size) - : call_hook_(call_hook), - cq_(cq), - call_(call), - max_receive_message_size_(max_receive_message_size) {} - - void PerformOps(CallOpSetInterface* ops) { - call_hook_->PerformOpsOnCall(ops, this); - } - - grpc_call* call() const { return call_; } - CompletionQueue* cq() const { return cq_; } - - int max_receive_message_size() const { return max_receive_message_size_; } - - private: - CallHook* call_hook_; - CompletionQueue* cq_; - grpc_call* call_; - int max_receive_message_size_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CALL_H diff --git a/winx64/include/grpc++/impl/codegen/call_hook.h b/winx64/include/grpc++/impl/codegen/call_hook.h deleted file mode 100644 index d026cc8b..00000000 --- a/winx64/include/grpc++/impl/codegen/call_hook.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CALL_HOOK_H -#define GRPCXX_IMPL_CODEGEN_CALL_HOOK_H - -namespace grpc { - -class CallOpSetInterface; -class Call; - -/// This is an interface that Channel and Server implement to allow them to hook -/// performing ops. -class CallHook { - public: - virtual ~CallHook() {} - virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CALL_HOOK_H diff --git a/winx64/include/grpc++/impl/codegen/channel_interface.h b/winx64/include/grpc++/impl/codegen/channel_interface.h deleted file mode 100644 index 1b7590bf..00000000 --- a/winx64/include/grpc++/impl/codegen/channel_interface.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_CHANNEL_INTERFACE_H -#define GRPCXX_IMPL_CODEGEN_CHANNEL_INTERFACE_H - -#include -#include -#include - -namespace grpc { -class Call; -class ClientContext; -class RpcMethod; -class CallOpSetInterface; -class CompletionQueue; - -template -class ClientReader; -template -class ClientWriter; -template -class ClientReaderWriter; -template -class ClientAsyncReader; -template -class ClientAsyncWriter; -template -class ClientAsyncReaderWriter; -template -class ClientAsyncResponseReader; - -/// Codegen interface for \a grpc::Channel. -class ChannelInterface { - public: - virtual ~ChannelInterface() {} - /// Get the current channel state. If the channel is in IDLE and - /// \a try_to_connect is set to true, try to connect. - virtual grpc_connectivity_state GetState(bool try_to_connect) = 0; - - /// Return the \a tag on \a cq when the channel state is changed or \a - /// deadline expires. \a GetState needs to called to get the current state. - template - void NotifyOnStateChange(grpc_connectivity_state last_observed, T deadline, - CompletionQueue* cq, void* tag) { - TimePoint deadline_tp(deadline); - NotifyOnStateChangeImpl(last_observed, deadline_tp.raw_time(), cq, tag); - } - - /// Blocking wait for channel state change or \a deadline expiration. - /// \a GetState needs to called to get the current state. - template - bool WaitForStateChange(grpc_connectivity_state last_observed, T deadline) { - TimePoint deadline_tp(deadline); - return WaitForStateChangeImpl(last_observed, deadline_tp.raw_time()); - } - - /// Wait for this channel to be connected - template - bool WaitForConnected(T deadline) { - grpc_connectivity_state state; - while ((state = GetState(true)) != GRPC_CHANNEL_READY) { - if (!WaitForStateChange(state, deadline)) return false; - } - return true; - } - - private: - template - friend class ::grpc::ClientReader; - template - friend class ::grpc::ClientWriter; - template - friend class ::grpc::ClientReaderWriter; - template - friend class ::grpc::ClientAsyncReader; - template - friend class ::grpc::ClientAsyncWriter; - template - friend class ::grpc::ClientAsyncReaderWriter; - template - friend class ::grpc::ClientAsyncResponseReader; - template - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, - ClientContext* context, - const InputMessage& request, - OutputMessage* result); - friend class ::grpc::RpcMethod; - virtual Call CreateCall(const RpcMethod& method, ClientContext* context, - CompletionQueue* cq) = 0; - virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0; - virtual void* RegisterMethod(const char* method) = 0; - virtual void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline, - CompletionQueue* cq, void* tag) = 0; - virtual bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CHANNEL_INTERFACE_H diff --git a/winx64/include/grpc++/impl/codegen/client_context.h b/winx64/include/grpc++/impl/codegen/client_context.h deleted file mode 100644 index 6d7e13bb..00000000 --- a/winx64/include/grpc++/impl/codegen/client_context.h +++ /dev/null @@ -1,414 +0,0 @@ -/* - * - * 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. - * - */ - -/// A ClientContext allows the person implementing a service client to: -/// -/// - Add custom metadata key-value pairs that will propagated to the server -/// side. -/// - Control call settings such as compression and authentication. -/// - Initial and trailing metadata coming from the server. -/// - Get performance metrics (ie, census). -/// -/// Context settings are only relevant to the call they are invoked with, that -/// is to say, they aren't sticky. Some of these settings, such as the -/// compression options, can be made persistent at channel construction time -/// (see \a grpc::CreateCustomChannel). -/// -/// \warning ClientContext instances should \em not be reused across rpcs. - -#ifndef GRPCXX_IMPL_CODEGEN_CLIENT_CONTEXT_H -#define GRPCXX_IMPL_CODEGEN_CLIENT_CONTEXT_H - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct census_context; -struct grpc_call; - -namespace grpc { - -class Channel; -class ChannelInterface; -class CompletionQueue; -class CallCredentials; -class RpcMethod; -template -class ClientReader; -template -class ClientWriter; -template -class ClientReaderWriter; -template -class ClientAsyncReader; -template -class ClientAsyncWriter; -template -class ClientAsyncReaderWriter; -template -class ClientAsyncResponseReader; -class ServerContext; - -/// Options for \a ClientContext::FromServerContext specifying which traits from -/// the \a ServerContext to propagate (copy) from it into a new \a -/// ClientContext. -/// -/// \see ClientContext::FromServerContext -class PropagationOptions { - public: - PropagationOptions() : propagate_(GRPC_PROPAGATE_DEFAULTS) {} - - PropagationOptions& enable_deadline_propagation() { - propagate_ |= GRPC_PROPAGATE_DEADLINE; - return *this; - } - - PropagationOptions& disable_deadline_propagation() { - propagate_ &= ~GRPC_PROPAGATE_DEADLINE; - return *this; - } - - PropagationOptions& enable_census_stats_propagation() { - propagate_ |= GRPC_PROPAGATE_CENSUS_STATS_CONTEXT; - return *this; - } - - PropagationOptions& disable_census_stats_propagation() { - propagate_ &= ~GRPC_PROPAGATE_CENSUS_STATS_CONTEXT; - return *this; - } - - PropagationOptions& enable_census_tracing_propagation() { - propagate_ |= GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT; - return *this; - } - - PropagationOptions& disable_census_tracing_propagation() { - propagate_ &= ~GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT; - return *this; - } - - PropagationOptions& enable_cancellation_propagation() { - propagate_ |= GRPC_PROPAGATE_CANCELLATION; - return *this; - } - - PropagationOptions& disable_cancellation_propagation() { - propagate_ &= ~GRPC_PROPAGATE_CANCELLATION; - return *this; - } - - uint32_t c_bitmask() const { return propagate_; } - - private: - uint32_t propagate_; -}; - -namespace testing { -class InteropClientContextInspector; -} // namespace testing - -/// A ClientContext allows the person implementing a service client to: -/// -/// - Add custom metadata key-value pairs that will propagated to the server -/// side. -/// - Control call settings such as compression and authentication. -/// - Initial and trailing metadata coming from the server. -/// - Get performance metrics (ie, census). -/// -/// Context settings are only relevant to the call they are invoked with, that -/// is to say, they aren't sticky. Some of these settings, such as the -/// compression options, can be made persistent at channel construction time -/// (see \a grpc::CreateCustomChannel). -/// -/// \warning ClientContext instances should \em not be reused across rpcs. -class ClientContext { - public: - ClientContext(); - ~ClientContext(); - - /// Create a new \a ClientContext as a child of an incoming server call, - /// according to \a options (\see PropagationOptions). - /// - /// \param server_context The source server context to use as the basis for - /// constructing the client context. - /// \param options The options controlling what to copy from the \a - /// server_context. - /// - /// \return A newly constructed \a ClientContext instance based on \a - /// server_context, with traits propagated (copied) according to \a options. - static std::unique_ptr FromServerContext( - const ServerContext& server_context, - PropagationOptions options = PropagationOptions()); - - /// Add the (\a meta_key, \a meta_value) pair to the metadata associated with - /// a client call. These are made available at the server side by the \a - /// grpc::ServerContext::client_metadata() method. - /// - /// \warning This method should only be called before invoking the rpc. - /// - /// \param meta_key The metadata key. If \a meta_value is binary data, it must - /// end in "-bin". - /// \param meta_value The metadata value. If its value is binary, the key name - /// must end in "-bin". - void AddMetadata(const grpc::string& meta_key, - const grpc::string& meta_value); - - /// Return a collection of initial metadata key-value pairs. Note that keys - /// may happen more than once (ie, a \a std::multimap is returned). - /// - /// \warning This method should only be called after initial metadata has been - /// received. For streaming calls, see \a - /// ClientReaderInterface::WaitForInitialMetadata(). - /// - /// \return A multimap of initial metadata key-value pairs from the server. - const std::multimap& - GetServerInitialMetadata() const { - GPR_CODEGEN_ASSERT(initial_metadata_received_); - return *recv_initial_metadata_.map(); - } - - /// Return a collection of trailing metadata key-value pairs. Note that keys - /// may happen more than once (ie, a \a std::multimap is returned). - /// - /// \warning This method is only callable once the stream has finished. - /// - /// \return A multimap of metadata trailing key-value pairs from the server. - const std::multimap& - GetServerTrailingMetadata() const { - // TODO(yangg) check finished - return *trailing_metadata_.map(); - } - - /// Set the deadline for the client call. - /// - /// \warning This method should only be called before invoking the rpc. - /// - /// \param deadline the deadline for the client call. Units are determined by - /// the type used. - template - void set_deadline(const T& deadline) { - TimePoint deadline_tp(deadline); - deadline_ = deadline_tp.raw_time(); - } - - /// EXPERIMENTAL: Indicate that this request is idempotent. - /// By default, RPCs are assumed to not be idempotent. - /// - /// If true, the gRPC library assumes that it's safe to initiate - /// this RPC multiple times. - void set_idempotent(bool idempotent) { idempotent_ = idempotent; } - - /// EXPERIMENTAL: Set this request to be cacheable. - /// If set, grpc is free to use the HTTP GET verb for sending the request, - /// with the possibility of receiving a cached response. - void set_cacheable(bool cacheable) { cacheable_ = cacheable; } - - /// EXPERIMENTAL: Trigger wait-for-ready or not on this request. - /// See https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md. - /// If set, if an RPC is made when a channel's connectivity state is - /// TRANSIENT_FAILURE or CONNECTING, the call will not "fail fast", - /// and the channel will wait until the channel is READY before making the - /// call. - void set_wait_for_ready(bool wait_for_ready) { - wait_for_ready_ = wait_for_ready; - wait_for_ready_explicitly_set_ = true; - } - - /// DEPRECATED: Use set_wait_for_ready() instead. - void set_fail_fast(bool fail_fast) { set_wait_for_ready(!fail_fast); } - - /// Return the deadline for the client call. - std::chrono::system_clock::time_point deadline() const { - return Timespec2Timepoint(deadline_); - } - - /// Return a \a gpr_timespec representation of the client call's deadline. - gpr_timespec raw_deadline() const { return deadline_; } - - /// Set the per call authority header (see - /// https://tools.ietf.org/html/rfc7540#section-8.1.2.3). - void set_authority(const grpc::string& authority) { authority_ = authority; } - - /// Return the authentication context for this client call. - /// - /// \see grpc::AuthContext. - std::shared_ptr auth_context() const { - if (auth_context_.get() == nullptr) { - auth_context_ = CreateAuthContext(call_); - } - return auth_context_; - } - - /// Set credentials for the client call. - /// - /// A credentials object encapsulates all the state needed by a client to - /// authenticate with a server and make various assertions, e.g., about the - /// client’s identity, role, or whether it is authorized to make a particular - /// call. - /// - /// \see https://grpc.io/docs/guides/auth.html - void set_credentials(const std::shared_ptr& creds) { - creds_ = creds; - } - - /// Return the compression algorithm to be used by the client call. - grpc_compression_algorithm compression_algorithm() const { - return compression_algorithm_; - } - - /// Set \a algorithm to be the compression algorithm used for the client call. - /// - /// \param algorithm The compression algorithm used for the client call. - void set_compression_algorithm(grpc_compression_algorithm algorithm); - - /// Flag whether the initial metadata should be \a corked - /// - /// If \a corked is true, then the initial metadata will be coalesced with the - /// write of first message in the stream. - /// - /// \param corked The flag indicating whether the initial metadata is to be - /// corked or not. - void set_initial_metadata_corked(bool corked) { - initial_metadata_corked_ = corked; - } - - /// Return the peer uri in a string. - /// - /// \warning This value is never authenticated or subject to any security - /// related code. It must not be used for any authentication related - /// functionality. Instead, use auth_context. - /// - /// \return The call's peer URI. - grpc::string peer() const; - - /// Get and set census context. - void set_census_context(struct census_context* ccp) { census_context_ = ccp; } - struct census_context* census_context() const { - return census_context_; - } - - /// Send a best-effort out-of-band cancel on the call associated with - /// this client context. The call could be in any stage; e.g., if it is - /// already finished, it may still return success. - /// - /// There is no guarantee the call will be cancelled. - void TryCancel(); - - /// Global Callbacks - /// - /// Can be set exactly once per application to install hooks whenever - /// a client context is constructed and destructed. - class GlobalCallbacks { - public: - virtual ~GlobalCallbacks() {} - virtual void DefaultConstructor(ClientContext* context) = 0; - virtual void Destructor(ClientContext* context) = 0; - }; - static void SetGlobalCallbacks(GlobalCallbacks* callbacks); - - /// Should be used for framework-level extensions only. - /// Applications never need to call this method. - grpc_call* c_call() { return call_; } - - private: - // Disallow copy and assign. - ClientContext(const ClientContext&); - ClientContext& operator=(const ClientContext&); - - friend class ::grpc::testing::InteropClientContextInspector; - friend class CallOpClientRecvStatus; - friend class CallOpRecvInitialMetadata; - friend class Channel; - template - friend class ::grpc::ClientReader; - template - friend class ::grpc::ClientWriter; - template - friend class ::grpc::ClientReaderWriter; - template - friend class ::grpc::ClientAsyncReader; - template - friend class ::grpc::ClientAsyncWriter; - template - friend class ::grpc::ClientAsyncReaderWriter; - template - friend class ::grpc::ClientAsyncResponseReader; - template - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, - ClientContext* context, - const InputMessage& request, - OutputMessage* result); - - grpc_call* call() const { return call_; } - void set_call(grpc_call* call, const std::shared_ptr& channel); - - uint32_t initial_metadata_flags() const { - return (idempotent_ ? GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST : 0) | - (wait_for_ready_ ? GRPC_INITIAL_METADATA_WAIT_FOR_READY : 0) | - (cacheable_ ? GRPC_INITIAL_METADATA_CACHEABLE_REQUEST : 0) | - (wait_for_ready_explicitly_set_ - ? GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET - : 0) | - (initial_metadata_corked_ ? GRPC_INITIAL_METADATA_CORKED : 0); - } - - grpc::string authority() { return authority_; } - - bool initial_metadata_received_; - bool wait_for_ready_; - bool wait_for_ready_explicitly_set_; - bool idempotent_; - bool cacheable_; - std::shared_ptr channel_; - std::mutex mu_; - grpc_call* call_; - bool call_canceled_; - gpr_timespec deadline_; - grpc::string authority_; - std::shared_ptr creds_; - mutable std::shared_ptr auth_context_; - struct census_context* census_context_; - std::multimap send_initial_metadata_; - MetadataMap recv_initial_metadata_; - MetadataMap trailing_metadata_; - - grpc_call* propagate_from_call_; - PropagationOptions propagation_options_; - - grpc_compression_algorithm compression_algorithm_; - bool initial_metadata_corked_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CLIENT_CONTEXT_H diff --git a/winx64/include/grpc++/impl/codegen/client_unary_call.h b/winx64/include/grpc++/impl/codegen/client_unary_call.h deleted file mode 100644 index 7c540fad..00000000 --- a/winx64/include/grpc++/impl/codegen/client_unary_call.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CLIENT_UNARY_CALL_H -#define GRPCXX_IMPL_CODEGEN_CLIENT_UNARY_CALL_H - -#include -#include -#include -#include -#include - -namespace grpc { - -class Channel; -class ClientContext; -class CompletionQueue; -class RpcMethod; - -/// Wrapper that performs a blocking unary call -template -Status BlockingUnaryCall(ChannelInterface* channel, const RpcMethod& method, - ClientContext* context, const InputMessage& request, - OutputMessage* result) { - CompletionQueue cq(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK, - GRPC_CQ_DEFAULT_POLLING}); // Pluckable completion queue - Call call(channel->CreateCall(method, context, &cq)); - CallOpSet, - CallOpClientSendClose, CallOpClientRecvStatus> - ops; - Status status = ops.SendMessage(request); - if (!status.ok()) { - return status; - } - ops.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - ops.RecvInitialMetadata(context); - ops.RecvMessage(result); - ops.ClientSendClose(); - ops.ClientRecvStatus(context, &status); - call.PerformOps(&ops); - if (cq.Pluck(&ops)) { - if (!ops.got_message && status.ok()) { - return Status(StatusCode::UNIMPLEMENTED, - "No message returned for unary request"); - } - } else { - GPR_CODEGEN_ASSERT(!status.ok()); - } - return status; -} - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CLIENT_UNARY_CALL_H diff --git a/winx64/include/grpc++/impl/codegen/completion_queue.h b/winx64/include/grpc++/impl/codegen/completion_queue.h deleted file mode 100644 index ca757e2a..00000000 --- a/winx64/include/grpc++/impl/codegen/completion_queue.h +++ /dev/null @@ -1,295 +0,0 @@ -/* - * - * Copyright 2015-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. - * - */ - -/// A completion queue implements a concurrent producer-consumer queue, with -/// two main API-exposed methods: \a Next and \a AsyncNext. These -/// methods are the essential component of the gRPC C++ asynchronous API. -/// There is also a \a Shutdown method to indicate that a given completion queue -/// will no longer have regular events. This must be called before the -/// completion queue is destroyed. -/// All completion queue APIs are thread-safe and may be used concurrently with -/// any other completion queue API invocation; it is acceptable to have -/// multiple threads calling \a Next or \a AsyncNext on the same or different -/// completion queues, or to call these methods concurrently with a \a Shutdown -/// elsewhere. -/// \remark{All other API calls on completion queue should be completed before -/// a completion queue destructor is called.} -#ifndef GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H -#define GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H - -#include -#include -#include -#include -#include -#include - -struct grpc_completion_queue; - -namespace grpc { - -template -class ClientReader; -template -class ClientWriter; -template -class ClientReaderWriter; -template -class ServerReader; -template -class ServerWriter; -namespace internal { -template -class ServerReaderWriterBody; -} -template -class RpcMethodHandler; -template -class ClientStreamingHandler; -template -class ServerStreamingHandler; -template -class BidiStreamingHandler; -class UnknownMethodHandler; - -class Channel; -class ChannelInterface; -class ClientContext; -class CompletionQueueTag; -class CompletionQueue; -class RpcMethod; -class Server; -class ServerBuilder; -class ServerContext; - -extern CoreCodegenInterface* g_core_codegen_interface; - -/// A thin wrapper around \ref grpc_completion_queue (see \ref -/// src/core/lib/surface/completion_queue.h). -/// See \ref doc/cpp/perf_notes.md for notes on best practices for high -/// performance servers. -class CompletionQueue : private GrpcLibraryCodegen { - public: - /// Default constructor. Implicitly creates a \a grpc_completion_queue - /// instance. - CompletionQueue() - : CompletionQueue(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_NEXT, GRPC_CQ_DEFAULT_POLLING}) {} - - /// Wrap \a take, taking ownership of the instance. - /// - /// \param take The completion queue instance to wrap. Ownership is taken. - explicit CompletionQueue(grpc_completion_queue* take); - - /// Destructor. Destroys the owned wrapped completion queue / instance. - ~CompletionQueue() { - g_core_codegen_interface->grpc_completion_queue_destroy(cq_); - } - - /// Tri-state return for AsyncNext: SHUTDOWN, GOT_EVENT, TIMEOUT. - enum NextStatus { - SHUTDOWN, ///< The completion queue has been shutdown. - GOT_EVENT, ///< Got a new event; \a tag will be filled in with its - ///< associated value; \a ok indicating its success. - TIMEOUT ///< deadline was reached. - }; - - /// Read from the queue, blocking up to \a deadline (or the queue's shutdown). - /// Both \a tag and \a ok are updated upon success (if an event is available - /// within the \a deadline). A \a tag points to an arbitrary location usually - /// employed to uniquely identify an event. - /// - /// \param tag[out] Upon sucess, updated to point to the event's tag. - /// \param ok[out] Upon sucess, true if read a regular event, false otherwise. - /// \param deadline[in] How long to block in wait for an event. - /// - /// \return The type of event read. - template - NextStatus AsyncNext(void** tag, bool* ok, const T& deadline) { - TimePoint deadline_tp(deadline); - return AsyncNextInternal(tag, ok, deadline_tp.raw_time()); - } - - /// Read from the queue, blocking until an event is available or the queue is - /// shutting down. - /// - /// \param tag[out] Updated to point to the read event's tag. - /// \param ok[out] true if read a regular event, false otherwise. - /// - /// \return true if read a regular event, false if the queue is shutting down. - bool Next(void** tag, bool* ok) { - return (AsyncNextInternal(tag, ok, g_core_codegen_interface->gpr_inf_future( - GPR_CLOCK_REALTIME)) != SHUTDOWN); - } - - /// Request the shutdown of the queue. - /// - /// \warning This method must be called at some point if this completion queue - /// is accessed with Next or AsyncNext. Once invoked, \a Next - /// will start to return false and \a AsyncNext will return \a - /// NextStatus::SHUTDOWN. Only once either one of these methods does that - /// (that is, once the queue has been \em drained) can an instance of this - /// class be destroyed. Also note that applications must ensure that - /// no work is enqueued on this completion queue after this method is called. - void Shutdown(); - - /// Returns a \em raw pointer to the underlying \a grpc_completion_queue - /// instance. - /// - /// \warning Remember that the returned instance is owned. No transfer of - /// owership is performed. - grpc_completion_queue* cq() { return cq_; } - - /// Manage state of avalanching operations : completion queue tags that - /// trigger other completion queue operations. The underlying core completion - /// queue should not really shutdown until all avalanching operations have - /// been finalized. Note that we maintain the requirement that an avalanche - /// registration must take place before CQ shutdown (which must be maintained - /// elsehwere) - void InitialAvalanching() { - gpr_atm_rel_store(&avalanches_in_flight_, static_cast(1)); - } - void RegisterAvalanching() { - gpr_atm_no_barrier_fetch_add(&avalanches_in_flight_, - static_cast(1)); - } - void CompleteAvalanching(); - - protected: - /// Private constructor of CompletionQueue only visible to friend classes - CompletionQueue(const grpc_completion_queue_attributes& attributes) { - cq_ = g_core_codegen_interface->grpc_completion_queue_create( - g_core_codegen_interface->grpc_completion_queue_factory_lookup( - &attributes), - &attributes, NULL); - InitialAvalanching(); // reserve this for the future shutdown - } - - private: - // Friend synchronous wrappers so that they can access Pluck(), which is - // a semi-private API geared towards the synchronous implementation. - template - friend class ::grpc::ClientReader; - template - friend class ::grpc::ClientWriter; - template - friend class ::grpc::ClientReaderWriter; - template - friend class ::grpc::ServerReader; - template - friend class ::grpc::ServerWriter; - template - friend class ::grpc::internal::ServerReaderWriterBody; - template - friend class RpcMethodHandler; - template - friend class ClientStreamingHandler; - template - friend class ServerStreamingHandler; - template - friend class TemplatedBidiStreamingHandler; - friend class UnknownMethodHandler; - friend class ::grpc::Server; - friend class ::grpc::ServerContext; - template - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, - ClientContext* context, - const InputMessage& request, - OutputMessage* result); - - NextStatus AsyncNextInternal(void** tag, bool* ok, gpr_timespec deadline); - - /// Wraps \a grpc_completion_queue_pluck. - /// \warning Must not be mixed with calls to \a Next. - bool Pluck(CompletionQueueTag* tag) { - auto deadline = - g_core_codegen_interface->gpr_inf_future(GPR_CLOCK_REALTIME); - auto ev = g_core_codegen_interface->grpc_completion_queue_pluck( - cq_, tag, deadline, nullptr); - bool ok = ev.success != 0; - void* ignored = tag; - GPR_CODEGEN_ASSERT(tag->FinalizeResult(&ignored, &ok)); - GPR_CODEGEN_ASSERT(ignored == tag); - // Ignore mutations by FinalizeResult: Pluck returns the C API status - return ev.success != 0; - } - - /// Performs a single polling pluck on \a tag. - /// \warning Must not be mixed with calls to \a Next. - /// - /// TODO: sreek - This calls tag->FinalizeResult() even if the cq_ is already - /// shutdown. This is most likely a bug and if it is a bug, then change this - /// implementation to simple call the other TryPluck function with a zero - /// timeout. i.e: - /// TryPluck(tag, gpr_time_0(GPR_CLOCK_REALTIME)) - void TryPluck(CompletionQueueTag* tag) { - auto deadline = g_core_codegen_interface->gpr_time_0(GPR_CLOCK_REALTIME); - auto ev = g_core_codegen_interface->grpc_completion_queue_pluck( - cq_, tag, deadline, nullptr); - if (ev.type == GRPC_QUEUE_TIMEOUT) return; - bool ok = ev.success != 0; - void* ignored = tag; - // the tag must be swallowed if using TryPluck - GPR_CODEGEN_ASSERT(!tag->FinalizeResult(&ignored, &ok)); - } - - /// Performs a single polling pluck on \a tag. Calls tag->FinalizeResult if - /// the pluck() was successful and returned the tag. - /// - /// This exects tag->FinalizeResult (if called) to return 'false' i.e expects - /// that the tag is internal not something that is returned to the user. - void TryPluck(CompletionQueueTag* tag, gpr_timespec deadline) { - auto ev = g_core_codegen_interface->grpc_completion_queue_pluck( - cq_, tag, deadline, nullptr); - if (ev.type == GRPC_QUEUE_TIMEOUT || ev.type == GRPC_QUEUE_SHUTDOWN) { - return; - } - - bool ok = ev.success != 0; - void* ignored = tag; - GPR_CODEGEN_ASSERT(!tag->FinalizeResult(&ignored, &ok)); - } - - grpc_completion_queue* cq_; // owned - - gpr_atm avalanches_in_flight_; -}; - -/// A specific type of completion queue used by the processing of notifications -/// by servers. Instantiated by \a ServerBuilder. -class ServerCompletionQueue : public CompletionQueue { - public: - bool IsFrequentlyPolled() { return polling_type_ != GRPC_CQ_NON_LISTENING; } - - private: - grpc_cq_polling_type polling_type_; - friend class ServerBuilder; - /// \param is_frequently_polled Informs the GRPC library about whether the - /// server completion queue would be actively polled (by calling Next() or - /// AsyncNext()). By default all server completion queues are assumed to be - /// frequently polled. - ServerCompletionQueue(grpc_cq_polling_type polling_type) - : CompletionQueue(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_NEXT, polling_type}), - polling_type_(polling_type) {} -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H diff --git a/winx64/include/grpc++/impl/codegen/completion_queue_tag.h b/winx64/include/grpc++/impl/codegen/completion_queue_tag.h deleted file mode 100644 index 4d7d3a98..00000000 --- a/winx64/include/grpc++/impl/codegen/completion_queue_tag.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_TAG_H -#define GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_TAG_H - -namespace grpc { - -/// An interface allowing implementors to process and filter event tags. -class CompletionQueueTag { - public: - virtual ~CompletionQueueTag() {} - /// Called prior to returning from Next(), return value is the status of the - /// operation (return status is the default thing to do). If this function - /// returns false, the tag is dropped and not returned from the completion - /// queue - virtual bool FinalizeResult(void** tag, bool* status) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_TAG_H diff --git a/winx64/include/grpc++/impl/codegen/config.h b/winx64/include/grpc++/impl/codegen/config.h deleted file mode 100644 index b5ac9a75..00000000 --- a/winx64/include/grpc++/impl/codegen/config.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_CONFIG_H -#define GRPCXX_IMPL_CODEGEN_CONFIG_H - -#ifndef GRPC_CUSTOM_STRING -#include -#define GRPC_CUSTOM_STRING std::string -#endif - -/// The following macros are deprecated and appear only for users -/// with PB files generated using gRPC 1.0.x plugins. They should -/// not be used in new code -#define GRPC_OVERRIDE override // deprecated -#define GRPC_FINAL final // deprecated - -namespace grpc { - -typedef GRPC_CUSTOM_STRING string; - -using std::to_string; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CONFIG_H diff --git a/winx64/include/grpc++/impl/codegen/config_protobuf.h b/winx64/include/grpc++/impl/codegen/config_protobuf.h deleted file mode 100644 index c5e5bdf0..00000000 --- a/winx64/include/grpc++/impl/codegen/config_protobuf.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CONFIG_PROTOBUF_H -#define GRPCXX_IMPL_CODEGEN_CONFIG_PROTOBUF_H - -#ifndef GRPC_CUSTOM_PROTOBUF_INT64 -#include -#define GRPC_CUSTOM_PROTOBUF_INT64 ::google::protobuf::int64 -#endif - -#ifndef GRPC_CUSTOM_MESSAGE -#ifdef GRPC_USE_PROTO_LITE -#include -#define GRPC_CUSTOM_MESSAGE ::google::protobuf::MessageLite -#else -#include -#define GRPC_CUSTOM_MESSAGE ::google::protobuf::Message -#endif -#endif - -#ifndef GRPC_CUSTOM_DESCRIPTOR -#include -#include -#define GRPC_CUSTOM_DESCRIPTOR ::google::protobuf::Descriptor -#define GRPC_CUSTOM_DESCRIPTORPOOL ::google::protobuf::DescriptorPool -#define GRPC_CUSTOM_FIELDDESCRIPTOR ::google::protobuf::FieldDescriptor -#define GRPC_CUSTOM_FILEDESCRIPTOR ::google::protobuf::FileDescriptor -#define GRPC_CUSTOM_FILEDESCRIPTORPROTO ::google::protobuf::FileDescriptorProto -#define GRPC_CUSTOM_METHODDESCRIPTOR ::google::protobuf::MethodDescriptor -#define GRPC_CUSTOM_SERVICEDESCRIPTOR ::google::protobuf::ServiceDescriptor -#define GRPC_CUSTOM_SOURCELOCATION ::google::protobuf::SourceLocation -#endif - -#ifndef GRPC_CUSTOM_DESCRIPTORDATABASE -#include -#define GRPC_CUSTOM_DESCRIPTORDATABASE ::google::protobuf::DescriptorDatabase -#define GRPC_CUSTOM_SIMPLEDESCRIPTORDATABASE \ - ::google::protobuf::SimpleDescriptorDatabase -#endif - -#ifndef GRPC_CUSTOM_ZEROCOPYOUTPUTSTREAM -#include -#include -#define GRPC_CUSTOM_ZEROCOPYOUTPUTSTREAM \ - ::google::protobuf::io::ZeroCopyOutputStream -#define GRPC_CUSTOM_ZEROCOPYINPUTSTREAM \ - ::google::protobuf::io::ZeroCopyInputStream -#define GRPC_CUSTOM_CODEDINPUTSTREAM ::google::protobuf::io::CodedInputStream -#endif - -namespace grpc { -namespace protobuf { - -typedef GRPC_CUSTOM_MESSAGE Message; -typedef GRPC_CUSTOM_PROTOBUF_INT64 int64; - -typedef GRPC_CUSTOM_DESCRIPTOR Descriptor; -typedef GRPC_CUSTOM_DESCRIPTORPOOL DescriptorPool; -typedef GRPC_CUSTOM_DESCRIPTORDATABASE DescriptorDatabase; -typedef GRPC_CUSTOM_FIELDDESCRIPTOR FieldDescriptor; -typedef GRPC_CUSTOM_FILEDESCRIPTOR FileDescriptor; -typedef GRPC_CUSTOM_FILEDESCRIPTORPROTO FileDescriptorProto; -typedef GRPC_CUSTOM_METHODDESCRIPTOR MethodDescriptor; -typedef GRPC_CUSTOM_SERVICEDESCRIPTOR ServiceDescriptor; -typedef GRPC_CUSTOM_SIMPLEDESCRIPTORDATABASE SimpleDescriptorDatabase; -typedef GRPC_CUSTOM_SOURCELOCATION SourceLocation; - -namespace io { -typedef GRPC_CUSTOM_ZEROCOPYOUTPUTSTREAM ZeroCopyOutputStream; -typedef GRPC_CUSTOM_ZEROCOPYINPUTSTREAM ZeroCopyInputStream; -typedef GRPC_CUSTOM_CODEDINPUTSTREAM CodedInputStream; -} // namespace io - -} // namespace protobuf -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CONFIG_PROTOBUF_H diff --git a/winx64/include/grpc++/impl/codegen/core_codegen.h b/winx64/include/grpc++/impl/codegen/core_codegen.h deleted file mode 100644 index 2b15a018..00000000 --- a/winx64/include/grpc++/impl/codegen/core_codegen.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_H -#define GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_H - -// This file should be compiled as part of grpc++. - -#include -#include -#include -#include - -namespace grpc { - -/// Implementation of the core codegen interface. -class CoreCodegen final : public CoreCodegenInterface { - private: - virtual const grpc_completion_queue_factory* - grpc_completion_queue_factory_lookup( - const grpc_completion_queue_attributes* attributes) override; - virtual grpc_completion_queue* grpc_completion_queue_create( - const grpc_completion_queue_factory* factory, - const grpc_completion_queue_attributes* attributes, - void* reserved) override; - grpc_completion_queue* grpc_completion_queue_create_for_next( - void* reserved) override; - grpc_completion_queue* grpc_completion_queue_create_for_pluck( - void* reserved) override; - void grpc_completion_queue_destroy(grpc_completion_queue* cq) override; - grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, void* tag, - gpr_timespec deadline, - void* reserved) override; - - void* gpr_malloc(size_t size) override; - void gpr_free(void* p) override; - - void gpr_mu_init(gpr_mu* mu) override; - void gpr_mu_destroy(gpr_mu* mu) override; - void gpr_mu_lock(gpr_mu* mu) override; - void gpr_mu_unlock(gpr_mu* mu) override; - void gpr_cv_init(gpr_cv* cv) override; - void gpr_cv_destroy(gpr_cv* cv) override; - int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline) override; - void gpr_cv_signal(gpr_cv* cv) override; - void gpr_cv_broadcast(gpr_cv* cv) override; - - grpc_call_error grpc_call_cancel_with_status(grpc_call* call, - grpc_status_code status, - const char* description, - void* reserved) override; - void grpc_call_ref(grpc_call* call) override; - void grpc_call_unref(grpc_call* call) override; - virtual void* grpc_call_arena_alloc(grpc_call* call, size_t length) override; - - void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) override; - - int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader, - grpc_byte_buffer* buffer) override; - void grpc_byte_buffer_reader_destroy( - grpc_byte_buffer_reader* reader) override; - int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader, - grpc_slice* slice) override; - - grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slice, - size_t nslices) override; - grpc_slice grpc_slice_new_with_user_data(void* p, size_t len, - void (*destroy)(void*), - void* user_data) override; - grpc_slice grpc_empty_slice() override; - grpc_slice grpc_slice_malloc(size_t length) override; - void grpc_slice_unref(grpc_slice slice) override; - grpc_slice grpc_slice_ref(grpc_slice slice) override; - grpc_slice grpc_slice_split_tail(grpc_slice* s, size_t split) override; - grpc_slice grpc_slice_split_head(grpc_slice* s, size_t split) override; - void grpc_slice_buffer_add(grpc_slice_buffer* sb, grpc_slice slice) override; - void grpc_slice_buffer_pop(grpc_slice_buffer* sb) override; - grpc_slice grpc_slice_from_static_buffer(const void* buffer, - size_t length) override; - grpc_slice grpc_slice_from_copied_buffer(const void* buffer, - size_t length) override; - void grpc_metadata_array_init(grpc_metadata_array* array) override; - void grpc_metadata_array_destroy(grpc_metadata_array* array) override; - - gpr_timespec gpr_inf_future(gpr_clock_type type) override; - gpr_timespec gpr_time_0(gpr_clock_type type) override; - - virtual const Status& ok() override; - virtual const Status& cancelled() override; - - void assert_fail(const char* failed_assertion, const char* file, - int line) override; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_H diff --git a/winx64/include/grpc++/impl/codegen/core_codegen_interface.h b/winx64/include/grpc++/impl/codegen/core_codegen_interface.h deleted file mode 100644 index b4c771ac..00000000 --- a/winx64/include/grpc++/impl/codegen/core_codegen_interface.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_INTERFACE_H -#define GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_INTERFACE_H - -#include -#include -#include -#include -#include - -extern "C" { -struct grpc_byte_buffer; -} - -namespace grpc { - -/// Interface between the codegen library and the minimal subset of core -/// features required by the generated code. -/// -/// All undocumented methods are simply forwarding the call to their namesakes. -/// Please refer to their corresponding documentation for details. -/// -/// \warning This interface should be considered internal and private. -class CoreCodegenInterface { - public: - /// Upon a failed assertion, log the error. - virtual void assert_fail(const char* failed_assertion, const char* file, - int line) = 0; - - virtual const grpc_completion_queue_factory* - grpc_completion_queue_factory_lookup( - const grpc_completion_queue_attributes* attributes) = 0; - virtual grpc_completion_queue* grpc_completion_queue_create( - const grpc_completion_queue_factory* factory, - const grpc_completion_queue_attributes* attributes, void* reserved) = 0; - virtual grpc_completion_queue* grpc_completion_queue_create_for_next( - void* reserved) = 0; - virtual grpc_completion_queue* grpc_completion_queue_create_for_pluck( - void* reserved) = 0; - virtual void grpc_completion_queue_destroy(grpc_completion_queue* cq) = 0; - virtual grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, - void* tag, - gpr_timespec deadline, - void* reserved) = 0; - - virtual void* gpr_malloc(size_t size) = 0; - virtual void gpr_free(void* p) = 0; - - virtual void gpr_mu_init(gpr_mu* mu) = 0; - virtual void gpr_mu_destroy(gpr_mu* mu) = 0; - virtual void gpr_mu_lock(gpr_mu* mu) = 0; - virtual void gpr_mu_unlock(gpr_mu* mu) = 0; - virtual void gpr_cv_init(gpr_cv* cv) = 0; - virtual void gpr_cv_destroy(gpr_cv* cv) = 0; - virtual int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, - gpr_timespec abs_deadline) = 0; - virtual void gpr_cv_signal(gpr_cv* cv) = 0; - virtual void gpr_cv_broadcast(gpr_cv* cv) = 0; - - virtual void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) = 0; - - virtual int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader, - grpc_byte_buffer* buffer) - GRPC_MUST_USE_RESULT = 0; - virtual void grpc_byte_buffer_reader_destroy( - grpc_byte_buffer_reader* reader) = 0; - virtual int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader, - grpc_slice* slice) = 0; - - virtual grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slice, - size_t nslices) = 0; - virtual grpc_slice grpc_slice_new_with_user_data(void* p, size_t len, - void (*destroy)(void*), - void* user_data) = 0; - virtual grpc_call_error grpc_call_cancel_with_status(grpc_call* call, - grpc_status_code status, - const char* description, - void* reserved) = 0; - virtual void grpc_call_ref(grpc_call* call) = 0; - virtual void grpc_call_unref(grpc_call* call) = 0; - virtual void* grpc_call_arena_alloc(grpc_call* call, size_t length) = 0; - virtual grpc_slice grpc_empty_slice() = 0; - virtual grpc_slice grpc_slice_malloc(size_t length) = 0; - virtual void grpc_slice_unref(grpc_slice slice) = 0; - virtual grpc_slice grpc_slice_ref(grpc_slice slice) = 0; - virtual grpc_slice grpc_slice_split_tail(grpc_slice* s, size_t split) = 0; - virtual grpc_slice grpc_slice_split_head(grpc_slice* s, size_t split) = 0; - virtual void grpc_slice_buffer_add(grpc_slice_buffer* sb, - grpc_slice slice) = 0; - virtual void grpc_slice_buffer_pop(grpc_slice_buffer* sb) = 0; - virtual grpc_slice grpc_slice_from_static_buffer(const void* buffer, - size_t length) = 0; - virtual grpc_slice grpc_slice_from_copied_buffer(const void* buffer, - size_t length) = 0; - - virtual void grpc_metadata_array_init(grpc_metadata_array* array) = 0; - virtual void grpc_metadata_array_destroy(grpc_metadata_array* array) = 0; - - virtual const Status& ok() = 0; - virtual const Status& cancelled() = 0; - - virtual gpr_timespec gpr_inf_future(gpr_clock_type type) = 0; - virtual gpr_timespec gpr_time_0(gpr_clock_type type) = 0; -}; - -extern CoreCodegenInterface* g_core_codegen_interface; - -/// Codegen specific version of \a GPR_ASSERT. -#define GPR_CODEGEN_ASSERT(x) \ - do { \ - if (!(x)) { \ - grpc::g_core_codegen_interface->assert_fail(#x, __FILE__, __LINE__); \ - } \ - } while (0) - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CORE_CODEGEN_INTERFACE_H diff --git a/winx64/include/grpc++/impl/codegen/create_auth_context.h b/winx64/include/grpc++/impl/codegen/create_auth_context.h deleted file mode 100644 index afa6302c..00000000 --- a/winx64/include/grpc++/impl/codegen/create_auth_context.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_CREATE_AUTH_CONTEXT_H -#define GRPCXX_IMPL_CODEGEN_CREATE_AUTH_CONTEXT_H - -#include - -#include -#include - -namespace grpc { - -std::shared_ptr CreateAuthContext(grpc_call* call); - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_CREATE_AUTH_CONTEXT_H diff --git a/winx64/include/grpc++/impl/codegen/grpc_library.h b/winx64/include/grpc++/impl/codegen/grpc_library.h deleted file mode 100644 index 6036ad7e..00000000 --- a/winx64/include/grpc++/impl/codegen/grpc_library.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_GRPC_LIBRARY_H -#define GRPCXX_IMPL_CODEGEN_GRPC_LIBRARY_H - -#include - -namespace grpc { - -class GrpcLibraryInterface { - public: - virtual void init() = 0; - virtual void shutdown() = 0; -}; - -/// Initialized by \a grpc::GrpcLibraryInitializer from -/// -extern GrpcLibraryInterface* g_glip; - -/// Classes that require gRPC to be initialized should inherit from this class. -class GrpcLibraryCodegen { - public: - GrpcLibraryCodegen(bool call_grpc_init = true) : grpc_init_called_(false) { - if (call_grpc_init) { - GPR_CODEGEN_ASSERT(g_glip && - "gRPC library not initialized. See " - "grpc::internal::GrpcLibraryInitializer."); - g_glip->init(); - grpc_init_called_ = true; - } - } - virtual ~GrpcLibraryCodegen() { - if (grpc_init_called_) { - GPR_CODEGEN_ASSERT(g_glip && - "gRPC library not initialized. See " - "grpc::internal::GrpcLibraryInitializer."); - g_glip->shutdown(); - } - } - - private: - bool grpc_init_called_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_GRPC_LIBRARY_H diff --git a/winx64/include/grpc++/impl/codegen/metadata_map.h b/winx64/include/grpc++/impl/codegen/metadata_map.h deleted file mode 100644 index b7398596..00000000 --- a/winx64/include/grpc++/impl/codegen/metadata_map.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -* -* 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 GRPCXX_IMPL_CODEGEN_METADATA_MAP_H -#define GRPCXX_IMPL_CODEGEN_METADATA_MAP_H - -#include - -namespace grpc { - -class MetadataMap { - public: - MetadataMap() { memset(&arr_, 0, sizeof(arr_)); } - - ~MetadataMap() { - g_core_codegen_interface->grpc_metadata_array_destroy(&arr_); - } - - void FillMap() { - for (size_t i = 0; i < arr_.count; i++) { - // TODO(yangg) handle duplicates? - map_.insert(std::pair( - StringRefFromSlice(&arr_.metadata[i].key), - StringRefFromSlice(&arr_.metadata[i].value))); - } - } - - std::multimap *map() { return &map_; } - const std::multimap *map() const { - return &map_; - } - grpc_metadata_array *arr() { return &arr_; } - - private: - grpc_metadata_array arr_; - std::multimap map_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_METADATA_MAP_H diff --git a/winx64/include/grpc++/impl/codegen/method_handler_impl.h b/winx64/include/grpc++/impl/codegen/method_handler_impl.h deleted file mode 100644 index 15e24bdc..00000000 --- a/winx64/include/grpc++/impl/codegen/method_handler_impl.h +++ /dev/null @@ -1,270 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H -#define GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H - -#include -#include -#include - -namespace grpc { - -/// A wrapper class of an application provided rpc method handler. -template -class RpcMethodHandler : public MethodHandler { - public: - RpcMethodHandler(std::function - func, - ServiceType* service) - : func_(func), service_(service) {} - - void RunHandler(const HandlerParameter& param) final { - RequestType req; - Status status = - SerializationTraits::Deserialize(param.request, &req); - ResponseType rsp; - if (status.ok()) { - status = func_(service_, param.server_context, &req, &rsp); - } - - GPR_CODEGEN_ASSERT(!param.server_context->sent_initial_metadata_); - CallOpSet - ops; - ops.SendInitialMetadata(param.server_context->initial_metadata_, - param.server_context->initial_metadata_flags()); - if (param.server_context->compression_level_set()) { - ops.set_compression_level(param.server_context->compression_level()); - } - if (status.ok()) { - status = ops.SendMessage(rsp); - } - ops.ServerSendStatus(param.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); - param.call->cq()->Pluck(&ops); - } - - private: - /// Application provided rpc handler function. - std::function - func_; - // The class the above handler function lives in. - ServiceType* service_; -}; - -/// A wrapper class of an application provided client streaming handler. -template -class ClientStreamingHandler : public MethodHandler { - public: - ClientStreamingHandler( - std::function*, ResponseType*)> - func, - ServiceType* service) - : func_(func), service_(service) {} - - void RunHandler(const HandlerParameter& param) final { - ServerReader reader(param.call, param.server_context); - ResponseType rsp; - Status status = func_(service_, param.server_context, &reader, &rsp); - - GPR_CODEGEN_ASSERT(!param.server_context->sent_initial_metadata_); - CallOpSet - ops; - ops.SendInitialMetadata(param.server_context->initial_metadata_, - param.server_context->initial_metadata_flags()); - if (param.server_context->compression_level_set()) { - ops.set_compression_level(param.server_context->compression_level()); - } - if (status.ok()) { - status = ops.SendMessage(rsp); - } - ops.ServerSendStatus(param.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); - param.call->cq()->Pluck(&ops); - } - - private: - std::function*, - ResponseType*)> - func_; - ServiceType* service_; -}; - -/// A wrapper class of an application provided server streaming handler. -template -class ServerStreamingHandler : public MethodHandler { - public: - ServerStreamingHandler( - std::function*)> - func, - ServiceType* service) - : func_(func), service_(service) {} - - void RunHandler(const HandlerParameter& param) final { - RequestType req; - Status status = - SerializationTraits::Deserialize(param.request, &req); - - if (status.ok()) { - ServerWriter writer(param.call, param.server_context); - status = func_(service_, param.server_context, &req, &writer); - } - - CallOpSet ops; - if (!param.server_context->sent_initial_metadata_) { - ops.SendInitialMetadata(param.server_context->initial_metadata_, - param.server_context->initial_metadata_flags()); - if (param.server_context->compression_level_set()) { - ops.set_compression_level(param.server_context->compression_level()); - } - } - ops.ServerSendStatus(param.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); - if (param.server_context->has_pending_ops_) { - param.call->cq()->Pluck(¶m.server_context->pending_ops_); - } - param.call->cq()->Pluck(&ops); - } - - private: - std::function*)> - func_; - ServiceType* service_; -}; - -/// A wrapper class of an application provided bidi-streaming handler. -/// This also applies to server-streamed implementation of a unary method -/// with the additional requirement that such methods must have done a -/// write for status to be ok -/// Since this is used by more than 1 class, the service is not passed in. -/// Instead, it is expected to be an implicitly-captured argument of func -/// (through bind or something along those lines) -template -class TemplatedBidiStreamingHandler : public MethodHandler { - public: - TemplatedBidiStreamingHandler( - std::function func) - : func_(func), write_needed_(WriteNeeded) {} - - void RunHandler(const HandlerParameter& param) final { - Streamer stream(param.call, param.server_context); - Status status = func_(param.server_context, &stream); - - CallOpSet ops; - if (!param.server_context->sent_initial_metadata_) { - ops.SendInitialMetadata(param.server_context->initial_metadata_, - param.server_context->initial_metadata_flags()); - if (param.server_context->compression_level_set()) { - ops.set_compression_level(param.server_context->compression_level()); - } - if (write_needed_ && status.ok()) { - // If we needed a write but never did one, we need to mark the - // status as a fail - status = Status(StatusCode::INTERNAL, - "Service did not provide response message"); - } - } - ops.ServerSendStatus(param.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); - if (param.server_context->has_pending_ops_) { - param.call->cq()->Pluck(¶m.server_context->pending_ops_); - } - param.call->cq()->Pluck(&ops); - } - - private: - std::function func_; - const bool write_needed_; -}; - -template -class BidiStreamingHandler - : public TemplatedBidiStreamingHandler< - ServerReaderWriter, false> { - public: - BidiStreamingHandler( - std::function*)> - func, - ServiceType* service) - : TemplatedBidiStreamingHandler< - ServerReaderWriter, false>(std::bind( - func, service, std::placeholders::_1, std::placeholders::_2)) {} -}; - -template -class StreamedUnaryHandler - : public TemplatedBidiStreamingHandler< - ServerUnaryStreamer, true> { - public: - explicit StreamedUnaryHandler( - std::function*)> - func) - : TemplatedBidiStreamingHandler< - ServerUnaryStreamer, true>(func) {} -}; - -template -class SplitServerStreamingHandler - : public TemplatedBidiStreamingHandler< - ServerSplitStreamer, false> { - public: - explicit SplitServerStreamingHandler( - std::function*)> - func) - : TemplatedBidiStreamingHandler< - ServerSplitStreamer, false>(func) {} -}; - -/// Handle unknown method by returning UNIMPLEMENTED error. -class UnknownMethodHandler : public MethodHandler { - public: - template - static void FillOps(ServerContext* context, T* ops) { - Status status(StatusCode::UNIMPLEMENTED, ""); - if (!context->sent_initial_metadata_) { - ops->SendInitialMetadata(context->initial_metadata_, - context->initial_metadata_flags()); - if (context->compression_level_set()) { - ops->set_compression_level(context->compression_level()); - } - context->sent_initial_metadata_ = true; - } - ops->ServerSendStatus(context->trailing_metadata_, status); - } - - void RunHandler(const HandlerParameter& param) final { - CallOpSet ops; - FillOps(param.server_context, &ops); - param.call->PerformOps(&ops); - param.call->cq()->Pluck(&ops); - } -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H diff --git a/winx64/include/grpc++/impl/codegen/proto_utils.h b/winx64/include/grpc++/impl/codegen/proto_utils.h deleted file mode 100644 index 67e8f71a..00000000 --- a/winx64/include/grpc++/impl/codegen/proto_utils.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H -#define GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H - -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace grpc { - -extern CoreCodegenInterface* g_core_codegen_interface; - -namespace internal { - -class GrpcBufferWriterPeer; - -const int kGrpcBufferWriterMaxBufferLength = 1024 * 1024; - -class GrpcBufferWriter final - : public ::grpc::protobuf::io::ZeroCopyOutputStream { - public: - explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size) - : block_size_(block_size), byte_count_(0), have_backup_(false) { - *bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(NULL, 0); - slice_buffer_ = &(*bp)->data.raw.slice_buffer; - } - - ~GrpcBufferWriter() override { - if (have_backup_) { - g_core_codegen_interface->grpc_slice_unref(backup_slice_); - } - } - - bool Next(void** data, int* size) override { - if (have_backup_) { - slice_ = backup_slice_; - have_backup_ = false; - } else { - slice_ = g_core_codegen_interface->grpc_slice_malloc(block_size_); - } - *data = GRPC_SLICE_START_PTR(slice_); - // On win x64, int is only 32bit - GPR_CODEGEN_ASSERT(GRPC_SLICE_LENGTH(slice_) <= INT_MAX); - byte_count_ += * size = (int)GRPC_SLICE_LENGTH(slice_); - g_core_codegen_interface->grpc_slice_buffer_add(slice_buffer_, slice_); - return true; - } - - void BackUp(int count) override { - g_core_codegen_interface->grpc_slice_buffer_pop(slice_buffer_); - if (count == block_size_) { - backup_slice_ = slice_; - } else { - backup_slice_ = g_core_codegen_interface->grpc_slice_split_tail( - &slice_, GRPC_SLICE_LENGTH(slice_) - count); - g_core_codegen_interface->grpc_slice_buffer_add(slice_buffer_, slice_); - } - // It's dangerous to keep an inlined grpc_slice as the backup slice, since - // on a following Next() call, a reference will be returned to this slice - // via GRPC_SLICE_START_PTR, which will not be an adddress held by - // slice_buffer_. - have_backup_ = backup_slice_.refcount != NULL; - byte_count_ -= count; - } - - grpc::protobuf::int64 ByteCount() const override { return byte_count_; } - - private: - friend class GrpcBufferWriterPeer; - const int block_size_; - int64_t byte_count_; - grpc_slice_buffer* slice_buffer_; - bool have_backup_; - grpc_slice backup_slice_; - grpc_slice slice_; -}; - -class GrpcBufferReader final - : public ::grpc::protobuf::io::ZeroCopyInputStream { - public: - explicit GrpcBufferReader(grpc_byte_buffer* buffer) - : byte_count_(0), backup_count_(0), status_() { - if (!g_core_codegen_interface->grpc_byte_buffer_reader_init(&reader_, - buffer)) { - status_ = Status(StatusCode::INTERNAL, - "Couldn't initialize byte buffer reader"); - } - } - ~GrpcBufferReader() override { - g_core_codegen_interface->grpc_byte_buffer_reader_destroy(&reader_); - } - - bool Next(const void** data, int* size) override { - if (!status_.ok()) { - return false; - } - if (backup_count_ > 0) { - *data = GRPC_SLICE_START_PTR(slice_) + GRPC_SLICE_LENGTH(slice_) - - backup_count_; - GPR_CODEGEN_ASSERT(backup_count_ <= INT_MAX); - *size = (int)backup_count_; - backup_count_ = 0; - return true; - } - if (!g_core_codegen_interface->grpc_byte_buffer_reader_next(&reader_, - &slice_)) { - return false; - } - g_core_codegen_interface->grpc_slice_unref(slice_); - *data = GRPC_SLICE_START_PTR(slice_); - // On win x64, int is only 32bit - GPR_CODEGEN_ASSERT(GRPC_SLICE_LENGTH(slice_) <= INT_MAX); - byte_count_ += * size = (int)GRPC_SLICE_LENGTH(slice_); - return true; - } - - Status status() const { return status_; } - - void BackUp(int count) override { backup_count_ = count; } - - bool Skip(int count) override { - const void* data; - int size; - while (Next(&data, &size)) { - if (size >= count) { - BackUp(size - count); - return true; - } - // size < count; - count -= size; - } - // error or we have too large count; - return false; - } - - grpc::protobuf::int64 ByteCount() const override { - return byte_count_ - backup_count_; - } - - private: - int64_t byte_count_; - int64_t backup_count_; - grpc_byte_buffer_reader reader_; - grpc_slice slice_; - Status status_; -}; - -} // namespace internal - -template -class SerializationTraits::value>::type> { - public: - static Status Serialize(const grpc::protobuf::Message& msg, - grpc_byte_buffer** bp, bool* own_buffer) { - *own_buffer = true; - int byte_size = msg.ByteSize(); - if (byte_size <= internal::kGrpcBufferWriterMaxBufferLength) { - grpc_slice slice = g_core_codegen_interface->grpc_slice_malloc(byte_size); - GPR_CODEGEN_ASSERT( - GRPC_SLICE_END_PTR(slice) == - msg.SerializeWithCachedSizesToArray(GRPC_SLICE_START_PTR(slice))); - *bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(&slice, 1); - g_core_codegen_interface->grpc_slice_unref(slice); - return g_core_codegen_interface->ok(); - } else { - internal::GrpcBufferWriter writer( - bp, internal::kGrpcBufferWriterMaxBufferLength); - return msg.SerializeToZeroCopyStream(&writer) - ? g_core_codegen_interface->ok() - : Status(StatusCode::INTERNAL, "Failed to serialize message"); - } - } - - static Status Deserialize(grpc_byte_buffer* buffer, - grpc::protobuf::Message* msg) { - if (buffer == nullptr) { - return Status(StatusCode::INTERNAL, "No payload"); - } - Status result = g_core_codegen_interface->ok(); - { - internal::GrpcBufferReader reader(buffer); - if (!reader.status().ok()) { - return reader.status(); - } - ::grpc::protobuf::io::CodedInputStream decoder(&reader); - decoder.SetTotalBytesLimit(INT_MAX, INT_MAX); - if (!msg->ParseFromCodedStream(&decoder)) { - result = Status(StatusCode::INTERNAL, msg->InitializationErrorString()); - } - if (!decoder.ConsumedEntireMessage()) { - result = Status(StatusCode::INTERNAL, "Did not read entire message"); - } - } - g_core_codegen_interface->grpc_byte_buffer_destroy(buffer); - return result; - } -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H diff --git a/winx64/include/grpc++/impl/codegen/rpc_method.h b/winx64/include/grpc++/impl/codegen/rpc_method.h deleted file mode 100644 index ac13ac56..00000000 --- a/winx64/include/grpc++/impl/codegen/rpc_method.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_RPC_METHOD_H -#define GRPCXX_IMPL_CODEGEN_RPC_METHOD_H - -#include - -#include - -namespace grpc { - -/// Descriptor of an RPC method -class RpcMethod { - public: - enum RpcType { - NORMAL_RPC = 0, - CLIENT_STREAMING, // request streaming - SERVER_STREAMING, // response streaming - BIDI_STREAMING - }; - - RpcMethod(const char* name, RpcType type) - : name_(name), method_type_(type), channel_tag_(NULL) {} - - RpcMethod(const char* name, RpcType type, - const std::shared_ptr& channel) - : name_(name), - method_type_(type), - channel_tag_(channel->RegisterMethod(name)) {} - - const char* name() const { return name_; } - RpcType method_type() const { return method_type_; } - void SetMethodType(RpcType type) { method_type_ = type; } - void* channel_tag() const { return channel_tag_; } - - private: - const char* const name_; - RpcType method_type_; - void* const channel_tag_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_RPC_METHOD_H diff --git a/winx64/include/grpc++/impl/codegen/rpc_service_method.h b/winx64/include/grpc++/impl/codegen/rpc_service_method.h deleted file mode 100644 index 71657741..00000000 --- a/winx64/include/grpc++/impl/codegen/rpc_service_method.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_RPC_SERVICE_METHOD_H -#define GRPCXX_IMPL_CODEGEN_RPC_SERVICE_METHOD_H - -#include -#include -#include -#include -#include - -#include -#include -#include - -extern "C" { -struct grpc_byte_buffer; -} - -namespace grpc { -class ServerContext; -class StreamContextInterface; - -/// Base class for running an RPC handler. -class MethodHandler { - public: - virtual ~MethodHandler() {} - struct HandlerParameter { - HandlerParameter(Call* c, ServerContext* context, grpc_byte_buffer* req) - : call(c), server_context(context), request(req) {} - Call* call; - ServerContext* server_context; - // Handler required to grpc_byte_buffer_destroy this - grpc_byte_buffer* request; - }; - virtual void RunHandler(const HandlerParameter& param) = 0; -}; - -/// Server side rpc method class -class RpcServiceMethod : public RpcMethod { - public: - /// Takes ownership of the handler - RpcServiceMethod(const char* name, RpcMethod::RpcType type, - MethodHandler* handler) - : RpcMethod(name, type), server_tag_(nullptr), handler_(handler) {} - - void set_server_tag(void* tag) { server_tag_ = tag; } - void* server_tag() const { return server_tag_; } - /// if MethodHandler is nullptr, then this is an async method - MethodHandler* handler() const { return handler_.get(); } - void ResetHandler() { handler_.reset(); } - void SetHandler(MethodHandler* handler) { handler_.reset(handler); } - - private: - void* server_tag_; - std::unique_ptr handler_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_RPC_SERVICE_METHOD_H diff --git a/winx64/include/grpc++/impl/codegen/security/auth_context.h b/winx64/include/grpc++/impl/codegen/security/auth_context.h deleted file mode 100644 index 337da913..00000000 --- a/winx64/include/grpc++/impl/codegen/security/auth_context.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SECURITY_AUTH_CONTEXT_H -#define GRPCXX_IMPL_CODEGEN_SECURITY_AUTH_CONTEXT_H - -#include -#include - -#include -#include - -struct grpc_auth_context; -struct grpc_auth_property; -struct grpc_auth_property_iterator; - -namespace grpc { -class SecureAuthContext; - -typedef std::pair AuthProperty; - -class AuthPropertyIterator - : public std::iterator { - public: - ~AuthPropertyIterator(); - AuthPropertyIterator& operator++(); - AuthPropertyIterator operator++(int); - bool operator==(const AuthPropertyIterator& rhs) const; - bool operator!=(const AuthPropertyIterator& rhs) const; - const AuthProperty operator*(); - - protected: - AuthPropertyIterator(); - AuthPropertyIterator(const grpc_auth_property* property, - const grpc_auth_property_iterator* iter); - - private: - friend class SecureAuthContext; - const grpc_auth_property* property_; - // The following items form a grpc_auth_property_iterator. - const grpc_auth_context* ctx_; - size_t index_; - const char* name_; -}; - -/// Class encapsulating the Authentication Information. -/// -/// It includes the secure identity of the peer, the type of secure transport -/// used as well as any other properties required by the authorization layer. -class AuthContext { - public: - virtual ~AuthContext() {} - - /// Returns true if the peer is authenticated. - virtual bool IsPeerAuthenticated() const = 0; - - /// A peer identity. - /// - /// It is, in general, comprised of one or more properties (in which case they - /// have the same name). - virtual std::vector GetPeerIdentity() const = 0; - virtual grpc::string GetPeerIdentityPropertyName() const = 0; - - /// Returns all the property values with the given name. - virtual std::vector FindPropertyValues( - const grpc::string& name) const = 0; - - /// Iteration over all the properties. - virtual AuthPropertyIterator begin() const = 0; - virtual AuthPropertyIterator end() const = 0; - - /// Mutation functions: should only be used by an AuthMetadataProcessor. - virtual void AddProperty(const grpc::string& key, - const grpc::string_ref& value) = 0; - virtual bool SetPeerIdentityPropertyName(const grpc::string& name) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SECURITY_AUTH_CONTEXT_H diff --git a/winx64/include/grpc++/impl/codegen/serialization_traits.h b/winx64/include/grpc++/impl/codegen/serialization_traits.h deleted file mode 100644 index b72d4741..00000000 --- a/winx64/include/grpc++/impl/codegen/serialization_traits.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SERIALIZATION_TRAITS_H -#define GRPCXX_IMPL_CODEGEN_SERIALIZATION_TRAITS_H - -namespace grpc { - -/// Defines how to serialize and deserialize some type. -/// -/// Used for hooking different message serialization API's into GRPC. -/// Each SerializationTraits implementation must provide the following -/// functions: -/// static Status Serialize(const Message& msg, -/// grpc_byte_buffer** buffer, -/// bool* own_buffer); -/// static Status Deserialize(grpc_byte_buffer* buffer, -/// Message* msg, -/// int max_receive_message_size); -/// -/// Serialize is required to convert message to a grpc_byte_buffer, and -/// to store a pointer to that byte buffer at *buffer. *own_buffer should -/// be set to true if the caller owns said byte buffer, or false if -/// ownership is retained elsewhere. -/// -/// Deserialize is required to convert buffer into the message stored at -/// msg. max_receive_message_size is passed in as a bound on the maximum -/// number of message bytes Deserialize should accept. -/// -/// Both functions return a Status, allowing them to explain what went -/// wrong if required. -template -class SerializationTraits; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SERIALIZATION_TRAITS_H diff --git a/winx64/include/grpc++/impl/codegen/server_context.h b/winx64/include/grpc++/impl/codegen/server_context.h deleted file mode 100644 index b5e37fd1..00000000 --- a/winx64/include/grpc++/impl/codegen/server_context.h +++ /dev/null @@ -1,299 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SERVER_CONTEXT_H -#define GRPCXX_IMPL_CODEGEN_SERVER_CONTEXT_H - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -struct grpc_metadata; -struct grpc_call; -struct census_context; - -namespace grpc { -class ClientContext; -template -class ServerAsyncReader; -template -class ServerAsyncWriter; -template -class ServerAsyncResponseWriter; -template -class ServerAsyncReaderWriter; -template -class ServerReader; -template -class ServerWriter; -namespace internal { -template -class ServerReaderWriterBody; -} -template -class RpcMethodHandler; -template -class ClientStreamingHandler; -template -class ServerStreamingHandler; -template -class BidiStreamingHandler; -class UnknownMethodHandler; - -class Call; -class CallOpBuffer; -class CompletionQueue; -class Server; -class ServerInterface; - -namespace testing { -class InteropServerContextInspector; -class ServerContextTestSpouse; -} // namespace testing - -/// A ServerContext allows the person implementing a service handler to: -/// -/// - Add custom initial and trailing metadata key-value pairs that will -/// propagated to the client side. -/// - Control call settings such as compression and authentication. -/// - Access metadata coming from the client. -/// - Get performance metrics (ie, census). -/// -/// Context settings are only relevant to the call handler they are supplied to, -/// that is to say, they aren't sticky across multiple calls. Some of these -/// settings, such as the compression options, can be made persistant at server -/// construction time by specifying the approriate \a ChannelArguments -/// to a \a grpc::ServerBuilder, via \a ServerBuilder::AddChannelArgument. -/// -/// \warning ServerContext instances should \em not be reused across rpcs. -class ServerContext { - public: - ServerContext(); // for async calls - ~ServerContext(); - - /// Return the deadline for the server call. - std::chrono::system_clock::time_point deadline() const { - return Timespec2Timepoint(deadline_); - } - - /// Return a \a gpr_timespec representation of the server call's deadline. - gpr_timespec raw_deadline() const { return deadline_; } - - /// Add the (\a meta_key, \a meta_value) pair to the initial metadata - /// associated with a server call. These are made available at the client side - /// by the \a grpc::ClientContext::GetServerInitialMetadata() method. - /// - /// \warning This method should only be called before sending initial metadata - /// to the client (which can happen explicitly, or implicitly when sending a - /// a response message or status to the client). - /// - /// \param meta_key The metadata key. If \a meta_value is binary data, it must - /// end in "-bin". - /// \param meta_value The metadata value. If its value is binary, the key name - /// must end in "-bin". - void AddInitialMetadata(const grpc::string& key, const grpc::string& value); - - /// Add the (\a meta_key, \a meta_value) pair to the initial metadata - /// associated with a server call. These are made available at the client - /// side by the \a grpc::ClientContext::GetServerTrailingMetadata() method. - /// - /// \warning This method should only be called before sending trailing - /// metadata to the client (which happens when the call is finished and a - /// status is sent to the client). - /// - /// \param meta_key The metadata key. If \a meta_value is binary data, - /// it must end in "-bin". - /// \param meta_value The metadata value. If its value is binary, the key name - /// must end in "-bin". - void AddTrailingMetadata(const grpc::string& key, const grpc::string& value); - - /// IsCancelled is always safe to call when using sync API. - /// When using async API, it is only safe to call IsCancelled after - /// the AsyncNotifyWhenDone tag has been delivered. - bool IsCancelled() const; - - /// Cancel the Call from the server. This is a best-effort API and - /// depending on when it is called, the RPC may still appear successful to - /// the client. - /// For example, if TryCancel() is called on a separate thread, it might race - /// with the server handler which might return success to the client before - /// TryCancel() was even started by the thread. - /// - /// It is the caller's responsibility to prevent such races and ensure that if - /// TryCancel() is called, the serverhandler must return Status::CANCELLED. - /// The only exception is that if the serverhandler is already returning an - /// error status code, it is ok to not return Status::CANCELLED even if - /// TryCancel() was called. - void TryCancel() const; - - /// Return a collection of initial metadata key-value pairs sent from the - /// client. Note that keys may happen more than - /// once (ie, a \a std::multimap is returned). - /// - /// It is safe to use this method after initial metadata has been received, - /// Calls always begin with the client sending initial metadata, so this is - /// safe to access as soon as the call has begun on the server side. - /// - /// \return A multimap of initial metadata key-value pairs from the server. - const std::multimap& client_metadata() - const { - return *client_metadata_.map(); - } - - /// Return the compression algorithm to be used by the server call. - grpc_compression_level compression_level() const { - return compression_level_; - } - - /// Set \a algorithm to be the compression algorithm used for the server call. - /// - /// \param algorithm The compression algorithm used for the server call. - void set_compression_level(grpc_compression_level level) { - compression_level_set_ = true; - compression_level_ = level; - } - - /// Return a bool indicating whether the compression level for this call - /// has been set (either implicitly or through a previous call to - /// \a set_compression_level. - bool compression_level_set() const { return compression_level_set_; } - - /// Return the compression algorithm to be used by the server call. - grpc_compression_algorithm compression_algorithm() const { - return compression_algorithm_; - } - /// Set \a algorithm to be the compression algorithm used for the server call. - /// - /// \param algorithm The compression algorithm used for the server call. - void set_compression_algorithm(grpc_compression_algorithm algorithm); - - /// Set the load reporting costs in \a cost_data for the call. - void SetLoadReportingCosts(const std::vector& cost_data); - - /// Return the authentication context for this server call. - /// - /// \see grpc::AuthContext. - std::shared_ptr auth_context() const { - if (auth_context_.get() == nullptr) { - auth_context_ = CreateAuthContext(call_); - } - return auth_context_; - } - - /// Return the peer uri in a string. - /// WARNING: this value is never authenticated or subject to any security - /// related code. It must not be used for any authentication related - /// functionality. Instead, use auth_context. - grpc::string peer() const; - - /// Get the census context associated with this server call. - const struct census_context* census_context() const; - - /// Async only. Has to be called before the rpc starts. - /// Returns the tag in completion queue when the rpc finishes. - /// IsCancelled() can then be called to check whether the rpc was cancelled. - void AsyncNotifyWhenDone(void* tag) { - has_notify_when_done_tag_ = true; - async_notify_when_done_tag_ = tag; - } - - /// Should be used for framework-level extensions only. - /// Applications never need to call this method. - grpc_call* c_call() { return call_; } - - private: - friend class ::grpc::testing::InteropServerContextInspector; - friend class ::grpc::testing::ServerContextTestSpouse; - friend class ::grpc::ServerInterface; - friend class ::grpc::Server; - template - friend class ::grpc::ServerAsyncReader; - template - friend class ::grpc::ServerAsyncWriter; - template - friend class ::grpc::ServerAsyncResponseWriter; - template - friend class ::grpc::ServerAsyncReaderWriter; - template - friend class ::grpc::ServerReader; - template - friend class ::grpc::ServerWriter; - template - friend class ::grpc::internal::ServerReaderWriterBody; - template - friend class RpcMethodHandler; - template - friend class ClientStreamingHandler; - template - friend class ServerStreamingHandler; - template - friend class TemplatedBidiStreamingHandler; - friend class UnknownMethodHandler; - friend class ::grpc::ClientContext; - - /// Prevent copying. - ServerContext(const ServerContext&); - ServerContext& operator=(const ServerContext&); - - class CompletionOp; - - void BeginCompletionOp(Call* call); - /// Return the tag queued by BeginCompletionOp() - CompletionQueueTag* GetCompletionOpTag(); - - ServerContext(gpr_timespec deadline, grpc_metadata_array* arr); - - void set_call(grpc_call* call) { call_ = call; } - - uint32_t initial_metadata_flags() const { return 0; } - - CompletionOp* completion_op_; - bool has_notify_when_done_tag_; - void* async_notify_when_done_tag_; - - gpr_timespec deadline_; - grpc_call* call_; - CompletionQueue* cq_; - bool sent_initial_metadata_; - mutable std::shared_ptr auth_context_; - MetadataMap client_metadata_; - std::multimap initial_metadata_; - std::multimap trailing_metadata_; - - bool compression_level_set_; - grpc_compression_level compression_level_; - grpc_compression_algorithm compression_algorithm_; - - CallOpSet pending_ops_; - bool has_pending_ops_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SERVER_CONTEXT_H diff --git a/winx64/include/grpc++/impl/codegen/server_interface.h b/winx64/include/grpc++/impl/codegen/server_interface.h deleted file mode 100644 index 55937f19..00000000 --- a/winx64/include/grpc++/impl/codegen/server_interface.h +++ /dev/null @@ -1,270 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SERVER_INTERFACE_H -#define GRPCXX_IMPL_CODEGEN_SERVER_INTERFACE_H - -#include -#include -#include -#include -#include - -namespace grpc { - -class AsyncGenericService; -class Channel; -class GenericServerContext; -class RpcService; -class ServerAsyncStreamingInterface; -class ServerCompletionQueue; -class ServerContext; -class ServerCredentials; -class Service; -class ThreadPoolInterface; - -extern CoreCodegenInterface* g_core_codegen_interface; - -/// Models a gRPC server. -/// -/// Servers are configured and started via \a grpc::ServerBuilder. -class ServerInterface : public CallHook { - public: - virtual ~ServerInterface() {} - - /// Shutdown the server, blocking until all rpc processing finishes. - /// Forcefully terminate pending calls after \a deadline expires. - /// - /// All completion queue associated with the server (for example, for async - /// serving) must be shutdown *after* this method has returned: - /// See \a ServerBuilder::AddCompletionQueue for details. - /// - /// \param deadline How long to wait until pending rpcs are forcefully - /// terminated. - template - void Shutdown(const T& deadline) { - ShutdownInternal(TimePoint(deadline).raw_time()); - } - - /// Shutdown the server, waiting for all rpc processing to finish. - /// - /// All completion queue associated with the server (for example, for async - /// serving) must be shutdown *after* this method has returned: - /// See \a ServerBuilder::AddCompletionQueue for details. - void Shutdown() { - ShutdownInternal( - g_core_codegen_interface->gpr_inf_future(GPR_CLOCK_MONOTONIC)); - } - - /// Block waiting for all work to complete. - /// - /// \warning The server must be either shutting down or some other thread must - /// call \a Shutdown for this function to ever return. - virtual void Wait() = 0; - - protected: - friend class Service; - - /// Register a service. This call does not take ownership of the service. - /// The service must exist for the lifetime of the Server instance. - virtual bool RegisterService(const grpc::string* host, Service* service) = 0; - - /// Register a generic service. This call does not take ownership of the - /// service. The service must exist for the lifetime of the Server instance. - virtual void RegisterAsyncGenericService(AsyncGenericService* service) = 0; - - /// Tries to bind \a server to the given \a addr. - /// - /// It can be invoked multiple times. - /// - /// \param addr The address to try to bind to the server (eg, localhost:1234, - /// 192.168.1.1:31416, [::1]:27182, etc.). - /// \params creds The credentials associated with the server. - /// - /// \return bound port number on sucess, 0 on failure. - /// - /// \warning It's an error to call this method on an already started server. - virtual int AddListeningPort(const grpc::string& addr, - ServerCredentials* creds) = 0; - - /// Start the server. - /// - /// \param cqs Completion queues for handling asynchronous services. The - /// caller is required to keep all completion queues live until the server is - /// destroyed. - /// \param num_cqs How many completion queues does \a cqs hold. - virtual void Start(ServerCompletionQueue** cqs, size_t num_cqs) = 0; - - virtual void ShutdownInternal(gpr_timespec deadline) = 0; - - virtual int max_receive_message_size() const = 0; - - virtual grpc_server* server() = 0; - - virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0; - - class BaseAsyncRequest : public CompletionQueueTag { - public: - BaseAsyncRequest(ServerInterface* server, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, void* tag, - bool delete_on_finalize); - virtual ~BaseAsyncRequest(); - - bool FinalizeResult(void** tag, bool* status) override; - - protected: - ServerInterface* const server_; - ServerContext* const context_; - ServerAsyncStreamingInterface* const stream_; - CompletionQueue* const call_cq_; - void* const tag_; - const bool delete_on_finalize_; - grpc_call* call_; - }; - - class RegisteredAsyncRequest : public BaseAsyncRequest { - public: - RegisteredAsyncRequest(ServerInterface* server, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, void* tag); - - // uses BaseAsyncRequest::FinalizeResult - - protected: - void IssueRequest(void* registered_method, grpc_byte_buffer** payload, - ServerCompletionQueue* notification_cq); - }; - - class NoPayloadAsyncRequest final : public RegisteredAsyncRequest { - public: - NoPayloadAsyncRequest(void* registered_method, ServerInterface* server, - ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag) - : RegisteredAsyncRequest(server, context, stream, call_cq, tag) { - IssueRequest(registered_method, nullptr, notification_cq); - } - - // uses RegisteredAsyncRequest::FinalizeResult - }; - - template - class PayloadAsyncRequest final : public RegisteredAsyncRequest { - public: - PayloadAsyncRequest(void* registered_method, ServerInterface* server, - ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag, - Message* request) - : RegisteredAsyncRequest(server, context, stream, call_cq, tag), - registered_method_(registered_method), - server_(server), - context_(context), - stream_(stream), - call_cq_(call_cq), - notification_cq_(notification_cq), - tag_(tag), - request_(request) { - IssueRequest(registered_method, &payload_, notification_cq); - } - - bool FinalizeResult(void** tag, bool* status) override { - if (*status) { - if (payload_ == nullptr || - !SerializationTraits::Deserialize(payload_, request_) - .ok()) { - // If deserialization fails, we cancel the call and instantiate - // a new instance of ourselves to request another call. We then - // return false, which prevents the call from being returned to - // the application. - g_core_codegen_interface->grpc_call_cancel_with_status( - call_, GRPC_STATUS_INTERNAL, "Unable to parse request", nullptr); - g_core_codegen_interface->grpc_call_unref(call_); - new PayloadAsyncRequest(registered_method_, server_, context_, - stream_, call_cq_, notification_cq_, tag_, - request_); - delete this; - return false; - } - } - return RegisteredAsyncRequest::FinalizeResult(tag, status); - } - - private: - void* const registered_method_; - ServerInterface* const server_; - ServerContext* const context_; - ServerAsyncStreamingInterface* const stream_; - CompletionQueue* const call_cq_; - ServerCompletionQueue* const notification_cq_; - void* const tag_; - Message* const request_; - grpc_byte_buffer* payload_; - }; - - class GenericAsyncRequest : public BaseAsyncRequest { - public: - GenericAsyncRequest(ServerInterface* server, GenericServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag, - bool delete_on_finalize); - - bool FinalizeResult(void** tag, bool* status) override; - - private: - grpc_call_details call_details_; - }; - - template - void RequestAsyncCall(RpcServiceMethod* method, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag, - Message* message) { - GPR_CODEGEN_ASSERT(method); - new PayloadAsyncRequest(method->server_tag(), this, context, - stream, call_cq, notification_cq, tag, - message); - } - - void RequestAsyncCall(RpcServiceMethod* method, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag) { - GPR_CODEGEN_ASSERT(method); - new NoPayloadAsyncRequest(method->server_tag(), this, context, stream, - call_cq, notification_cq, tag); - } - - void RequestAsyncGenericCall(GenericServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, - void* tag) { - new GenericAsyncRequest(this, context, stream, call_cq, notification_cq, - tag, true); - } -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SERVER_INTERFACE_H diff --git a/winx64/include/grpc++/impl/codegen/service_type.h b/winx64/include/grpc++/impl/codegen/service_type.h deleted file mode 100644 index 2dc4ea0e..00000000 --- a/winx64/include/grpc++/impl/codegen/service_type.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SERVICE_TYPE_H -#define GRPCXX_IMPL_CODEGEN_SERVICE_TYPE_H - -#include -#include -#include -#include -#include -#include - -namespace grpc { - -class Call; -class CompletionQueue; -class Server; -class ServerInterface; -class ServerCompletionQueue; -class ServerContext; - -class ServerAsyncStreamingInterface { - public: - virtual ~ServerAsyncStreamingInterface() {} - - /// Request notification of the sending of initial metadata to the client. - /// Completion will be notified by \a tag on the associated completion - /// queue. This call is optional, but if it is used, it cannot be used - /// concurrently with or after the \a Finish method. - /// - /// \param[in] tag Tag identifying this request. - virtual void SendInitialMetadata(void* tag) = 0; - - private: - friend class ServerInterface; - virtual void BindCall(Call* call) = 0; -}; - -/// Desriptor of an RPC service and its various RPC methods -class Service { - public: - Service() : server_(nullptr) {} - virtual ~Service() {} - - bool has_async_methods() const { - for (auto it = methods_.begin(); it != methods_.end(); ++it) { - if (*it && (*it)->handler() == nullptr) { - return true; - } - } - return false; - } - - bool has_synchronous_methods() const { - for (auto it = methods_.begin(); it != methods_.end(); ++it) { - if (*it && (*it)->handler() != nullptr) { - return true; - } - } - return false; - } - - bool has_generic_methods() const { - for (auto it = methods_.begin(); it != methods_.end(); ++it) { - if (it->get() == nullptr) { - return true; - } - } - return false; - } - - protected: - template - void RequestAsyncUnary(int index, ServerContext* context, Message* request, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, void* tag) { - server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq, - notification_cq, tag, request); - } - void RequestAsyncClientStreaming(int index, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, - void* tag) { - server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq, - notification_cq, tag); - } - template - void RequestAsyncServerStreaming(int index, ServerContext* context, - Message* request, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, - void* tag) { - server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq, - notification_cq, tag, request); - } - void RequestAsyncBidiStreaming(int index, ServerContext* context, - ServerAsyncStreamingInterface* stream, - CompletionQueue* call_cq, - ServerCompletionQueue* notification_cq, - void* tag) { - server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq, - notification_cq, tag); - } - - void AddMethod(RpcServiceMethod* method) { methods_.emplace_back(method); } - - void MarkMethodAsync(int index) { - GPR_CODEGEN_ASSERT( - methods_[index].get() != nullptr && - "Cannot mark the method as 'async' because it has already been " - "marked as 'generic'."); - methods_[index]->ResetHandler(); - } - - void MarkMethodGeneric(int index) { - GPR_CODEGEN_ASSERT( - methods_[index]->handler() != nullptr && - "Cannot mark the method as 'generic' because it has already been " - "marked as 'async'."); - methods_[index].reset(); - } - - void MarkMethodStreamed(int index, MethodHandler* streamed_method) { - GPR_CODEGEN_ASSERT(methods_[index] && methods_[index]->handler() && - "Cannot mark an async or generic method Streamed"); - methods_[index]->SetHandler(streamed_method); - - // From the server's point of view, streamed unary is a special - // case of BIDI_STREAMING that has 1 read and 1 write, in that order, - // and split server-side streaming is BIDI_STREAMING with 1 read and - // any number of writes, in that order. - methods_[index]->SetMethodType(::grpc::RpcMethod::BIDI_STREAMING); - } - - private: - friend class Server; - friend class ServerInterface; - ServerInterface* server_; - std::vector> methods_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SERVICE_TYPE_H diff --git a/winx64/include/grpc++/impl/codegen/slice.h b/winx64/include/grpc++/impl/codegen/slice.h deleted file mode 100644 index e682bdef..00000000 --- a/winx64/include/grpc++/impl/codegen/slice.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SLICE_H -#define GRPCXX_IMPL_CODEGEN_SLICE_H - -#include -#include - -namespace grpc { - -inline grpc::string_ref StringRefFromSlice(const grpc_slice* slice) { - return grpc::string_ref( - reinterpret_cast(GRPC_SLICE_START_PTR(*slice)), - GRPC_SLICE_LENGTH(*slice)); -} - -inline grpc::string StringFromCopiedSlice(grpc_slice slice) { - return grpc::string(reinterpret_cast(GRPC_SLICE_START_PTR(slice)), - GRPC_SLICE_LENGTH(slice)); -} - -inline grpc_slice SliceReferencingString(const grpc::string& str) { - return g_core_codegen_interface->grpc_slice_from_static_buffer(str.data(), - str.length()); -} - -inline grpc_slice SliceFromCopiedString(const grpc::string& str) { - return g_core_codegen_interface->grpc_slice_from_copied_buffer(str.data(), - str.length()); -} - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SLICE_H diff --git a/winx64/include/grpc++/impl/codegen/status.h b/winx64/include/grpc++/impl/codegen/status.h deleted file mode 100644 index 6f013cf0..00000000 --- a/winx64/include/grpc++/impl/codegen/status.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_STATUS_H -#define GRPCXX_IMPL_CODEGEN_STATUS_H - -#include -#include - -namespace grpc { - -/// Did it work? If it didn't, why? -/// -/// See \a grpc::StatusCode for details on the available code and their meaning. -class Status { - public: - /// Construct an OK instance. - Status() : code_(StatusCode::OK) {} - - /// Construct an instance with associated \a code and \a error_message. - /// It is an error to construct an OK status with non-empty \a error_message. - Status(StatusCode code, const grpc::string& error_message) - : code_(code), error_message_(error_message) {} - - /// Construct an instance with \a code, \a error_message and - /// \a error_details. It is an error to construct an OK status with non-empty - /// \a error_message and/or \a error_details. - Status(StatusCode code, const grpc::string& error_message, - const grpc::string& error_details) - : code_(code), - error_message_(error_message), - binary_error_details_(error_details) {} - - // Pre-defined special status objects. - /// An OK pre-defined instance. - static const Status& OK; - /// A CANCELLED pre-defined instance. - static const Status& CANCELLED; - - /// Return the instance's error code. - StatusCode error_code() const { return code_; } - /// Return the instance's error message. - grpc::string error_message() const { return error_message_; } - /// Return the (binary) error details. - // Usually it contains a serialized google.rpc.Status proto. - grpc::string error_details() const { return binary_error_details_; } - - /// Is the status OK? - bool ok() const { return code_ == StatusCode::OK; } - - // Ignores any errors. This method does nothing except potentially suppress - // complaints from any tools that are checking that errors are not dropped on - // the floor. - void IgnoreError() const {} - - private: - StatusCode code_; - grpc::string error_message_; - grpc::string binary_error_details_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_STATUS_H diff --git a/winx64/include/grpc++/impl/codegen/status_code_enum.h b/winx64/include/grpc++/impl/codegen/status_code_enum.h deleted file mode 100644 index 68da185c..00000000 --- a/winx64/include/grpc++/impl/codegen/status_code_enum.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_CODEGEN_STATUS_CODE_ENUM_H -#define GRPCXX_IMPL_CODEGEN_STATUS_CODE_ENUM_H - -namespace grpc { - -enum StatusCode { - /// Not an error; returned on success. - OK = 0, - - /// The operation was cancelled (typically by the caller). - CANCELLED = 1, - - /// Unknown error. An example of where this error may be returned is if a - /// Status value received from another address space belongs to an error-space - /// that is not known in this address space. Also errors raised by APIs that - /// do not return enough error information may be converted to this error. - UNKNOWN = 2, - - /// Client specified an invalid argument. Note that this differs from - /// FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments that are - /// problematic regardless of the state of the system (e.g., a malformed file - /// name). - INVALID_ARGUMENT = 3, - - /// Deadline expired before operation could complete. For operations that - /// change the state of the system, this error may be returned even if the - /// operation has completed successfully. For example, a successful response - /// from a server could have been delayed long enough for the deadline to - /// expire. - DEADLINE_EXCEEDED = 4, - - /// Some requested entity (e.g., file or directory) was not found. - NOT_FOUND = 5, - - /// Some entity that we attempted to create (e.g., file or directory) already - /// exists. - ALREADY_EXISTS = 6, - - /// The caller does not have permission to execute the specified operation. - /// PERMISSION_DENIED must not be used for rejections caused by exhausting - /// some resource (use RESOURCE_EXHAUSTED instead for those errors). - /// PERMISSION_DENIED must not be used if the caller can not be identified - /// (use UNAUTHENTICATED instead for those errors). - PERMISSION_DENIED = 7, - - /// The request does not have valid authentication credentials for the - /// operation. - UNAUTHENTICATED = 16, - - /// Some resource has been exhausted, perhaps a per-user quota, or perhaps the - /// entire file system is out of space. - RESOURCE_EXHAUSTED = 8, - - /// Operation was rejected because the system is not in a state required for - /// the operation's execution. For example, directory to be deleted may be - /// non-empty, an rmdir operation is applied to a non-directory, etc. - /// - /// A litmus test that may help a service implementor in deciding - /// between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE: - /// (a) Use UNAVAILABLE if the client can retry just the failing call. - /// (b) Use ABORTED if the client should retry at a higher-level - /// (e.g., restarting a read-modify-write sequence). - /// (c) Use FAILED_PRECONDITION if the client should not retry until - /// the system state has been explicitly fixed. E.g., if an "rmdir" - /// fails because the directory is non-empty, FAILED_PRECONDITION - /// should be returned since the client should not retry unless - /// they have first fixed up the directory by deleting files from it. - /// (d) Use FAILED_PRECONDITION if the client performs conditional - /// REST Get/Update/Delete on a resource and the resource on the - /// server does not match the condition. E.g., conflicting - /// read-modify-write on the same resource. - FAILED_PRECONDITION = 9, - - /// The operation was aborted, typically due to a concurrency issue like - /// sequencer check failures, transaction aborts, etc. - /// - /// See litmus test above for deciding between FAILED_PRECONDITION, ABORTED, - /// and UNAVAILABLE. - ABORTED = 10, - - /// Operation was attempted past the valid range. E.g., seeking or reading - /// past end of file. - /// - /// Unlike INVALID_ARGUMENT, this error indicates a problem that may be fixed - /// if the system state changes. For example, a 32-bit file system will - /// generate INVALID_ARGUMENT if asked to read at an offset that is not in the - /// range [0,2^32-1], but it will generate OUT_OF_RANGE if asked to read from - /// an offset past the current file size. - /// - /// There is a fair bit of overlap between FAILED_PRECONDITION and - /// OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific error) - /// when it applies so that callers who are iterating through a space can - /// easily look for an OUT_OF_RANGE error to detect when they are done. - OUT_OF_RANGE = 11, - - /// Operation is not implemented or not supported/enabled in this service. - UNIMPLEMENTED = 12, - - /// Internal errors. Means some invariants expected by underlying System has - /// been broken. If you see one of these errors, Something is very broken. - INTERNAL = 13, - - /// The service is currently unavailable. This is a most likely a transient - /// condition and may be corrected by retrying with a backoff. - /// - /// \warning Although data MIGHT not have been transmitted when this - /// status occurs, there is NOT A GUARANTEE that the server has not seen - /// anything. So in general it is unsafe to retry on this status code - /// if the call is non-idempotent. - /// - /// See litmus test above for deciding between FAILED_PRECONDITION, ABORTED, - /// and UNAVAILABLE. - UNAVAILABLE = 14, - - /// Unrecoverable data loss or corruption. - DATA_LOSS = 15, - - /// Force users to include a default branch: - DO_NOT_USE = -1 -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_STATUS_CODE_ENUM_H diff --git a/winx64/include/grpc++/impl/codegen/string_ref.h b/winx64/include/grpc++/impl/codegen/string_ref.h deleted file mode 100644 index dbe3f197..00000000 --- a/winx64/include/grpc++/impl/codegen/string_ref.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_STRING_REF_H -#define GRPCXX_IMPL_CODEGEN_STRING_REF_H - -#include - -#include -#include -#include -#include - -#include - -namespace grpc { - -/// This class is a non owning reference to a string. -/// -/// It should be a strict subset of the upcoming std::string_ref. -/// -/// \see http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3442.html -/// -/// The constexpr is dropped or replaced with const for legacy compiler -/// compatibility. -class string_ref { - public: - /// types - typedef const char* const_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - /// constants - const static size_t npos; - - /// construct/copy. - string_ref() : data_(nullptr), length_(0) {} - string_ref(const string_ref& other) - : data_(other.data_), length_(other.length_) {} - string_ref& operator=(const string_ref& rhs) { - data_ = rhs.data_; - length_ = rhs.length_; - return *this; - } - - string_ref(const char* s) : data_(s), length_(strlen(s)) {} - string_ref(const char* s, size_t l) : data_(s), length_(l) {} - string_ref(const grpc::string& s) : data_(s.data()), length_(s.length()) {} - - /// iterators - const_iterator begin() const { return data_; } - const_iterator end() const { return data_ + length_; } - const_iterator cbegin() const { return data_; } - const_iterator cend() const { return data_ + length_; } - const_reverse_iterator rbegin() const { - return const_reverse_iterator(end()); - } - const_reverse_iterator rend() const { - return const_reverse_iterator(begin()); - } - const_reverse_iterator crbegin() const { - return const_reverse_iterator(end()); - } - const_reverse_iterator crend() const { - return const_reverse_iterator(begin()); - } - - /// capacity - size_t size() const { return length_; } - size_t length() const { return length_; } - size_t max_size() const { return length_; } - bool empty() const { return length_ == 0; } - - /// element access - const char* data() const { return data_; } - - /// string operations - int compare(string_ref x) const { - size_t min_size = length_ < x.length_ ? length_ : x.length_; - int r = memcmp(data_, x.data_, min_size); - if (r < 0) return -1; - if (r > 0) return 1; - if (length_ < x.length_) return -1; - if (length_ > x.length_) return 1; - return 0; - } - - bool starts_with(string_ref x) const { - return length_ >= x.length_ && (memcmp(data_, x.data_, x.length_) == 0); - } - - bool ends_with(string_ref x) const { - return length_ >= x.length_ && - (memcmp(data_ + (length_ - x.length_), x.data_, x.length_) == 0); - } - - size_t find(string_ref s) const { - auto it = std::search(cbegin(), cend(), s.cbegin(), s.cend()); - return it == cend() ? npos : std::distance(cbegin(), it); - } - - size_t find(char c) const { - auto it = std::find(cbegin(), cend(), c); - return it == cend() ? npos : std::distance(cbegin(), it); - } - - string_ref substr(size_t pos, size_t n = npos) const { - if (pos > length_) pos = length_; - if (n > (length_ - pos)) n = length_ - pos; - return string_ref(data_ + pos, n); - } - - private: - const char* data_; - size_t length_; -}; - -/// Comparison operators -inline bool operator==(string_ref x, string_ref y) { return x.compare(y) == 0; } -inline bool operator!=(string_ref x, string_ref y) { return x.compare(y) != 0; } -inline bool operator<(string_ref x, string_ref y) { return x.compare(y) < 0; } -inline bool operator<=(string_ref x, string_ref y) { return x.compare(y) <= 0; } -inline bool operator>(string_ref x, string_ref y) { return x.compare(y) > 0; } -inline bool operator>=(string_ref x, string_ref y) { return x.compare(y) >= 0; } - -inline std::ostream& operator<<(std::ostream& out, const string_ref& string) { - return out << grpc::string(string.begin(), string.end()); -} - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_STRING_REF_H diff --git a/winx64/include/grpc++/impl/codegen/stub_options.h b/winx64/include/grpc++/impl/codegen/stub_options.h deleted file mode 100644 index 380d052a..00000000 --- a/winx64/include/grpc++/impl/codegen/stub_options.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_STUB_OPTIONS_H -#define GRPCXX_IMPL_CODEGEN_STUB_OPTIONS_H - -namespace grpc { - -/// Useful interface for generated stubs -class StubOptions {}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_STUB_OPTIONS_H diff --git a/winx64/include/grpc++/impl/codegen/sync_stream.h b/winx64/include/grpc++/impl/codegen/sync_stream.h deleted file mode 100644 index 3fa20896..00000000 --- a/winx64/include/grpc++/impl/codegen/sync_stream.h +++ /dev/null @@ -1,853 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_SYNC_STREAM_H -#define GRPCXX_IMPL_CODEGEN_SYNC_STREAM_H - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace grpc { - -/// Common interface for all synchronous client side streaming. -class ClientStreamingInterface { - public: - virtual ~ClientStreamingInterface() {} - - /// Block waiting until the stream finishes and a final status of the call is - /// available. - /// - /// It is appropriate to call this method when both: - /// * the calling code (client-side) has no more message to send - /// (this can be declared implicitly by calling this method, or - /// explicitly through an earlier call to WritesDone method of the - /// class in use, e.g. \a ClientWriterInterface::WritesDone or - /// \a ClientReaderWriterInterface::WritesDone). - /// * there are no more messages to be received from the server (which can - /// be known implicitly, or explicitly from an earlier call to \a - /// ReaderInterface::Read that returned "false"). - /// - /// This function will return either: - /// - when all incoming messages have been read and the server has - /// returned status. - /// - when the server has returned a non-OK status. - /// - OR when the call failed for some reason and the library generated a - /// status. - /// - /// Return values: - /// - \a Status contains the status code, message and details for the call - /// - the \a ClientContext associated with this call is updated with - /// possible trailing metadata sent from the server. - virtual Status Finish() = 0; -}; - -/// Common interface for all synchronous server side streaming. -class ServerStreamingInterface { - public: - virtual ~ServerStreamingInterface() {} - - /// Block to send initial metadata to client. - /// This call is optional, but if it is used, it cannot be used concurrently - /// with or after the \a Finish method. - /// - /// The initial metadata that will be sent to the client will be - /// taken from the \a ServerContext associated with the call. - virtual void SendInitialMetadata() = 0; -}; - -/// An interface that yields a sequence of messages of type \a R. -template -class ReaderInterface { - public: - virtual ~ReaderInterface() {} - - /// Get an upper bound on the next message size available for reading on this - /// stream. - virtual bool NextMessageSize(uint32_t* sz) = 0; - - /// Block to read a message and parse to \a msg. Returns \a true on success. - /// This is thread-safe with respect to \a Write or \WritesDone methods on - /// the same stream. It should not be called concurrently with another \a - /// Read on the same stream as the order of delivery will not be defined. - /// - /// \param[out] msg The read message. - /// - /// \return \a false when there will be no more incoming messages, either - /// because the other side has called \a WritesDone() or the stream has failed - /// (or been cancelled). - virtual bool Read(R* msg) = 0; -}; - -/// An interface that can be fed a sequence of messages of type \a W. -template -class WriterInterface { - public: - virtual ~WriterInterface() {} - - /// Block to write \a msg to the stream with WriteOptions \a options. - /// This is thread-safe with respect to \a ReaderInterface::Read - /// - /// \param msg The message to be written to the stream. - /// \param options The WriteOptions affecting the write operation. - /// - /// \return \a true on success, \a false when the stream has been closed. - virtual bool Write(const W& msg, WriteOptions options) = 0; - - /// Block to write \a msg to the stream with default write options. - /// This is thread-safe with respect to \a ReaderInterface::Read - /// - /// \param msg The message to be written to the stream. - /// - /// \return \a true on success, \a false when the stream has been closed. - inline bool Write(const W& msg) { return Write(msg, WriteOptions()); } - - /// Write \a msg and coalesce it with the writing of trailing metadata, using - /// WriteOptions \a options. - /// - /// For client, WriteLast is equivalent of performing Write and WritesDone in - /// a single step. \a msg and trailing metadata are coalesced and sent on wire - /// by calling this function. For server, WriteLast buffers the \a msg. - /// The writing of \a msg is held until the service handler returns, - /// where \a msg and trailing metadata are coalesced and sent on wire. - /// Note that WriteLast can only buffer \a msg up to the flow control window - /// size. If \a msg size is larger than the window size, it will be sent on - /// wire without buffering. - /// - /// \param[in] msg The message to be written to the stream. - /// \param[in] options The WriteOptions to be used to write this message. - void WriteLast(const W& msg, WriteOptions options) { - Write(msg, options.set_last_message()); - } -}; - -/// Client-side interface for streaming reads of message of type \a R. -template -class ClientReaderInterface : public ClientStreamingInterface, - public ReaderInterface { - public: - /// Block to wait for initial metadata from server. The received metadata - /// can only be accessed after this call returns. Should only be called before - /// the first read. Calling this method is optional, and if it is not called - /// the metadata will be available in ClientContext after the first read. - virtual void WaitForInitialMetadata() = 0; -}; - -/// Synchronous (blocking) client-side API for doing server-streaming RPCs, -/// where the stream of messages coming from the server has messages -/// of type \a R. -template -class ClientReader final : public ClientReaderInterface { - public: - /// Block to create a stream and write the initial metadata and \a request - /// out. Note that \a context will be used to fill in custom initial - /// metadata used to send to the server when starting the call. - template - ClientReader(ChannelInterface* channel, const RpcMethod& method, - ClientContext* context, const W& request) - : context_(context), - cq_(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK, - GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq - call_(channel->CreateCall(method, context, &cq_)) { - CallOpSet - ops; - ops.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - // TODO(ctiller): don't assert - GPR_CODEGEN_ASSERT(ops.SendMessage(request).ok()); - ops.ClientSendClose(); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - - /// See the \a ClientStreamingInterface.WaitForInitialMetadata method for - /// semantics. - /// - // Side effect: - /// Once complete, the initial metadata read from - /// the server will be accessable through the \a ClientContext used to - /// construct this object. - void WaitForInitialMetadata() override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - CallOpSet ops; - ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); /// status ignored - } - - bool NextMessageSize(uint32_t* sz) override { - *sz = call_.max_receive_message_size(); - return true; - } - - /// See the \a ReaderInterface.Read method for semantics. - /// Side effect: - /// This also receives initial metadata from the server, if not - /// already received (if initial metadata is received, it can be then - /// accessed through the \a ClientContext associated with this call). - bool Read(R* msg) override { - CallOpSet> ops; - if (!context_->initial_metadata_received_) { - ops.RecvInitialMetadata(context_); - } - ops.RecvMessage(msg); - call_.PerformOps(&ops); - return cq_.Pluck(&ops) && ops.got_message; - } - - /// See the \a ClientStreamingInterface.Finish method for semantics. - /// - /// Side effect: - /// The \a ClientContext associated with this call is updated with - /// possible metadata received from the server. - Status Finish() override { - CallOpSet ops; - Status status; - ops.ClientRecvStatus(context_, &status); - call_.PerformOps(&ops); - GPR_CODEGEN_ASSERT(cq_.Pluck(&ops)); - return status; - } - - private: - ClientContext* context_; - CompletionQueue cq_; - Call call_; -}; - -/// Client-side interface for streaming writes of message type \a W. -template -class ClientWriterInterface : public ClientStreamingInterface, - public WriterInterface { - public: - /// Half close writing from the client. (signal that the stream of messages - /// coming from the clinet is complete). - /// Blocks until currently-pending writes are completed. - /// Thread safe with respect to \a ReaderInterface::Read operations only - /// - /// \return Whether the writes were successful. - virtual bool WritesDone() = 0; -}; - -/// Synchronous (blocking) client-side API for doing client-streaming RPCs, -/// where the outgoing message stream coming from the client has messages of -/// type \a W. -template -class ClientWriter : public ClientWriterInterface { - public: - /// Block to create a stream (i.e. send request headers and other initial - /// metadata to the server). Note that \a context will be used to fill - /// in custom initial metadata. \a response will be filled in with the - /// single expected response message from the server upon a successful - /// call to the \a Finish method of this instance. - template - ClientWriter(ChannelInterface* channel, const RpcMethod& method, - ClientContext* context, R* response) - : context_(context), - cq_(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK, - GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq - call_(channel->CreateCall(method, context, &cq_)) { - finish_ops_.RecvMessage(response); - finish_ops_.AllowNoMessage(); - - if (!context_->initial_metadata_corked_) { - CallOpSet ops; - ops.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - } - - /// See the \a ClientStreamingInterface.WaitForInitialMetadata method for - /// semantics. - /// - // Side effect: - /// Once complete, the initial metadata read from the server will be - /// accessable through the \a ClientContext used to construct this object. - void WaitForInitialMetadata() { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - CallOpSet ops; - ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); // status ignored - } - - /// See the WriterInterface.Write(const W& msg, WriteOptions options) method - /// for semantics. - /// - /// Side effect: - /// Also sends initial metadata if not already sent (using the - /// \a ClientContext associated with this call). - using WriterInterface::Write; - bool Write(const W& msg, WriteOptions options) override { - CallOpSet - ops; - - if (options.is_last_message()) { - options.set_buffer_hint(); - ops.ClientSendClose(); - } - if (context_->initial_metadata_corked_) { - ops.SendInitialMetadata(context_->send_initial_metadata_, - context_->initial_metadata_flags()); - context_->set_initial_metadata_corked(false); - } - if (!ops.SendMessage(msg, options).ok()) { - return false; - } - - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - bool WritesDone() override { - CallOpSet ops; - ops.ClientSendClose(); - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - /// See the ClientStreamingInterface.Finish method for semantics. - /// Side effects: - /// - Also receives initial metadata if not already received. - /// - Attempts to fill in the \a response parameter passed - /// to the constructor of this instance with the response - /// message from the server. - Status Finish() override { - Status status; - if (!context_->initial_metadata_received_) { - finish_ops_.RecvInitialMetadata(context_); - } - finish_ops_.ClientRecvStatus(context_, &status); - call_.PerformOps(&finish_ops_); - GPR_CODEGEN_ASSERT(cq_.Pluck(&finish_ops_)); - return status; - } - - private: - ClientContext* context_; - CallOpSet - finish_ops_; - CompletionQueue cq_; - Call call_; -}; - -/// Client-side interface for bi-directional streaming with -/// client-to-server stream messages of type \a W and -/// server-to-client stream messages of type \a R. -template -class ClientReaderWriterInterface : public ClientStreamingInterface, - public WriterInterface, - public ReaderInterface { - public: - /// Block to wait for initial metadata from server. The received metadata - /// can only be accessed after this call returns. Should only be called before - /// the first read. Calling this method is optional, and if it is not called - /// the metadata will be available in ClientContext after the first read. - virtual void WaitForInitialMetadata() = 0; - - /// Half close writing from the client. (signal that the stream of messages - /// coming from the clinet is complete). - /// Blocks until currently-pending writes are completed. - /// Thread-safe with respect to \a ReaderInterface::Read - /// - /// \return Whether the writes were successful. - virtual bool WritesDone() = 0; -}; - -/// Synchronous (blocking) client-side API for bi-directional streaming RPCs, -/// where the outgoing message stream coming from the client has messages of -/// type \a W, and the incoming messages stream coming from the server has -/// messages of type \a R. -template -class ClientReaderWriter final : public ClientReaderWriterInterface { - public: - /// Block to create a stream and write the initial metadata and \a request - /// out. Note that \a context will be used to fill in custom initial metadata - /// used to send to the server when starting the call. - ClientReaderWriter(ChannelInterface* channel, const RpcMethod& method, - ClientContext* context) - : context_(context), - cq_(grpc_completion_queue_attributes{ - GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK, - GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq - call_(channel->CreateCall(method, context, &cq_)) { - if (!context_->initial_metadata_corked_) { - CallOpSet ops; - ops.SendInitialMetadata(context->send_initial_metadata_, - context->initial_metadata_flags()); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - } - - /// Block waiting to read initial metadata from the server. - /// This call is optional, but if it is used, it cannot be used concurrently - /// with or after the \a Finish method. - /// - /// Once complete, the initial metadata read from the server will be - /// accessable through the \a ClientContext used to construct this object. - void WaitForInitialMetadata() override { - GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_); - - CallOpSet ops; - ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); // status ignored - } - - bool NextMessageSize(uint32_t* sz) override { - *sz = call_.max_receive_message_size(); - return true; - } - - /// See the \a ReaderInterface.Read method for semantics. - /// Side effect: - /// Also receives initial metadata if not already received (updates the \a - /// ClientContext associated with this call in that case). - bool Read(R* msg) override { - CallOpSet> ops; - if (!context_->initial_metadata_received_) { - ops.RecvInitialMetadata(context_); - } - ops.RecvMessage(msg); - call_.PerformOps(&ops); - return cq_.Pluck(&ops) && ops.got_message; - } - - /// See the \a WriterInterface.Write method for semantics. - /// - /// Side effect: - /// Also sends initial metadata if not already sent (using the - /// \a ClientContext associated with this call to fill in values). - using WriterInterface::Write; - bool Write(const W& msg, WriteOptions options) override { - CallOpSet - ops; - - if (options.is_last_message()) { - options.set_buffer_hint(); - ops.ClientSendClose(); - } - if (context_->initial_metadata_corked_) { - ops.SendInitialMetadata(context_->send_initial_metadata_, - context_->initial_metadata_flags()); - context_->set_initial_metadata_corked(false); - } - if (!ops.SendMessage(msg, options).ok()) { - return false; - } - - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - bool WritesDone() override { - CallOpSet ops; - ops.ClientSendClose(); - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - /// See the ClientStreamingInterface.Finish method for semantics. - /// - /// Side effect: - /// - the \a ClientContext associated with this call is updated with - /// possible trailing metadata sent from the server. - Status Finish() override { - CallOpSet ops; - if (!context_->initial_metadata_received_) { - ops.RecvInitialMetadata(context_); - } - Status status; - ops.ClientRecvStatus(context_, &status); - call_.PerformOps(&ops); - GPR_CODEGEN_ASSERT(cq_.Pluck(&ops)); - return status; - } - - private: - ClientContext* context_; - CompletionQueue cq_; - Call call_; -}; - -/// Server-side interface for streaming reads of message of type \a R. -template -class ServerReaderInterface : public ServerStreamingInterface, - public ReaderInterface {}; - -/// Synchronous (blocking) server-side API for doing client-streaming RPCs, -/// where the incoming message stream coming from the client has messages of -/// type \a R. -template -class ServerReader final : public ServerReaderInterface { - public: - ServerReader(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} - - /// See the \a ServerStreamingInterface.SendInitialMetadata method - /// for semantics. Note that initial metadata will be affected by the - /// \a ServerContext associated with this call. - void SendInitialMetadata() override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet ops; - ops.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - bool NextMessageSize(uint32_t* sz) override { - *sz = call_->max_receive_message_size(); - return true; - } - - bool Read(R* msg) override { - CallOpSet> ops; - ops.RecvMessage(msg); - call_->PerformOps(&ops); - return call_->cq()->Pluck(&ops) && ops.got_message; - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; - -/// Server-side interface for streaming writes of message of type \a W. -template -class ServerWriterInterface : public ServerStreamingInterface, - public WriterInterface {}; - -/// Synchronous (blocking) server-side API for doing for doing a -/// server-streaming RPCs, where the outgoing message stream coming from the -/// server has messages of type \a W. -template -class ServerWriter final : public ServerWriterInterface { - public: - ServerWriter(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} - - /// See the \a ServerStreamingInterface.SendInitialMetadata method - /// for semantics. - /// Note that initial metadata will be affected by the - /// \a ServerContext associated with this call. - void SendInitialMetadata() override { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet ops; - ops.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - /// See the \a WriterInterface.Write method for semantics. - /// - /// Side effect: - /// Also sends initial metadata if not already sent (using the - /// \a ClientContext associated with this call to fill in values). - using WriterInterface::Write; - bool Write(const W& msg, WriteOptions options) override { - if (options.is_last_message()) { - options.set_buffer_hint(); - } - if (!ctx_->pending_ops_.SendMessage(msg, options).ok()) { - return false; - } - if (!ctx_->sent_initial_metadata_) { - ctx_->pending_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ctx_->pending_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - call_->PerformOps(&ctx_->pending_ops_); - // if this is the last message we defer the pluck until AFTER we start - // the trailing md op. This prevents hangs. See - // https://github.com/grpc/grpc/issues/11546 - if (options.is_last_message()) { - ctx_->has_pending_ops_ = true; - return true; - } - ctx_->has_pending_ops_ = false; - return call_->cq()->Pluck(&ctx_->pending_ops_); - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; - -/// Server-side interface for bi-directional streaming. -template -class ServerReaderWriterInterface : public ServerStreamingInterface, - public WriterInterface, - public ReaderInterface {}; - -/// Actual implementation of bi-directional streaming -namespace internal { -template -class ServerReaderWriterBody final { - public: - ServerReaderWriterBody(Call* call, ServerContext* ctx) - : call_(call), ctx_(ctx) {} - - void SendInitialMetadata() { - GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet ops; - ops.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ops.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - bool NextMessageSize(uint32_t* sz) { - *sz = call_->max_receive_message_size(); - return true; - } - - bool Read(R* msg) { - CallOpSet> ops; - ops.RecvMessage(msg); - call_->PerformOps(&ops); - return call_->cq()->Pluck(&ops) && ops.got_message; - } - - bool Write(const W& msg, WriteOptions options) { - if (options.is_last_message()) { - options.set_buffer_hint(); - } - if (!ctx_->pending_ops_.SendMessage(msg, options).ok()) { - return false; - } - if (!ctx_->sent_initial_metadata_) { - ctx_->pending_ops_.SendInitialMetadata(ctx_->initial_metadata_, - ctx_->initial_metadata_flags()); - if (ctx_->compression_level_set()) { - ctx_->pending_ops_.set_compression_level(ctx_->compression_level()); - } - ctx_->sent_initial_metadata_ = true; - } - call_->PerformOps(&ctx_->pending_ops_); - // if this is the last message we defer the pluck until AFTER we start - // the trailing md op. This prevents hangs. See - // https://github.com/grpc/grpc/issues/11546 - if (options.is_last_message()) { - ctx_->has_pending_ops_ = true; - return true; - } - ctx_->has_pending_ops_ = false; - return call_->cq()->Pluck(&ctx_->pending_ops_); - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; -} // namespace internal - -/// Synchronous (blocking) server-side API for a bidirectional -/// streaming call, where the incoming message stream coming from the client has -/// messages of type \a R, and the outgoing message streaming coming from -/// the server has messages of type \a W. -template -class ServerReaderWriter final : public ServerReaderWriterInterface { - public: - ServerReaderWriter(Call* call, ServerContext* ctx) : body_(call, ctx) {} - - /// See the \a ServerStreamingInterface.SendInitialMetadata method - /// for semantics. Note that initial metadata will be affected by the - /// \a ServerContext associated with this call. - void SendInitialMetadata() override { body_.SendInitialMetadata(); } - - bool NextMessageSize(uint32_t* sz) override { - return body_.NextMessageSize(sz); - } - - bool Read(R* msg) override { return body_.Read(msg); } - - /// See the \a WriterInterface.Write(const W& msg, WriteOptions options) - /// method for semantics. - /// Side effect: - /// Also sends initial metadata if not already sent (using the \a - /// ServerContext associated with this call). - using WriterInterface::Write; - bool Write(const W& msg, WriteOptions options) override { - return body_.Write(msg, options); - } - - private: - internal::ServerReaderWriterBody body_; -}; - -/// A class to represent a flow-controlled unary call. This is something -/// of a hybrid between conventional unary and streaming. This is invoked -/// through a unary call on the client side, but the server responds to it -/// as though it were a single-ping-pong streaming call. The server can use -/// the \a NextMessageSize method to determine an upper-bound on the size of -/// the message. A key difference relative to streaming: ServerUnaryStreamer -/// must have exactly 1 Read and exactly 1 Write, in that order, to function -/// correctly. Otherwise, the RPC is in error. -template -class ServerUnaryStreamer final - : public ServerReaderWriterInterface { - public: - ServerUnaryStreamer(Call* call, ServerContext* ctx) - : body_(call, ctx), read_done_(false), write_done_(false) {} - - /// Block to send initial metadata to client. - /// Implicit input parameter: - /// - the \a ServerContext associated with this call will be used for - /// sending initial metadata. - void SendInitialMetadata() override { body_.SendInitialMetadata(); } - - /// Get an upper bound on the request message size from the client. - bool NextMessageSize(uint32_t* sz) override { - return body_.NextMessageSize(sz); - } - - /// Read a message of type \a R into \a msg. Completion will be notified by \a - /// tag on the associated completion queue. - /// This is thread-safe with respect to \a Write or \a WritesDone methods. It - /// should not be called concurrently with other streaming APIs - /// on the same stream. It is not meaningful to call it concurrently - /// with another \a ReaderInterface::Read on the same stream since reads on - /// the same stream are delivered in order. - /// - /// \param[out] msg Where to eventually store the read message. - /// \param[in] tag The tag identifying the operation. - bool Read(RequestType* request) override { - if (read_done_) { - return false; - } - read_done_ = true; - return body_.Read(request); - } - - /// Block to write \a msg to the stream with WriteOptions \a options. - /// This is thread-safe with respect to \a ReaderInterface::Read - /// - /// \param msg The message to be written to the stream. - /// \param options The WriteOptions affecting the write operation. - /// - /// \return \a true on success, \a false when the stream has been closed. - using WriterInterface::Write; - bool Write(const ResponseType& response, WriteOptions options) override { - if (write_done_ || !read_done_) { - return false; - } - write_done_ = true; - return body_.Write(response, options); - } - - private: - internal::ServerReaderWriterBody body_; - bool read_done_; - bool write_done_; -}; - -/// A class to represent a flow-controlled server-side streaming call. -/// This is something of a hybrid between server-side and bidi streaming. -/// This is invoked through a server-side streaming call on the client side, -/// but the server responds to it as though it were a bidi streaming call that -/// must first have exactly 1 Read and then any number of Writes. -template -class ServerSplitStreamer final - : public ServerReaderWriterInterface { - public: - ServerSplitStreamer(Call* call, ServerContext* ctx) - : body_(call, ctx), read_done_(false) {} - - /// Block to send initial metadata to client. - /// Implicit input parameter: - /// - the \a ServerContext associated with this call will be used for - /// sending initial metadata. - void SendInitialMetadata() override { body_.SendInitialMetadata(); } - - /// Get an upper bound on the request message size from the client. - bool NextMessageSize(uint32_t* sz) override { - return body_.NextMessageSize(sz); - } - - /// Read a message of type \a R into \a msg. Completion will be notified by \a - /// tag on the associated completion queue. - /// This is thread-safe with respect to \a Write or \a WritesDone methods. It - /// should not be called concurrently with other streaming APIs - /// on the same stream. It is not meaningful to call it concurrently - /// with another \a ReaderInterface::Read on the same stream since reads on - /// the same stream are delivered in order. - /// - /// \param[out] msg Where to eventually store the read message. - /// \param[in] tag The tag identifying the operation. - bool Read(RequestType* request) override { - if (read_done_) { - return false; - } - read_done_ = true; - return body_.Read(request); - } - - /// Block to write \a msg to the stream with WriteOptions \a options. - /// This is thread-safe with respect to \a ReaderInterface::Read - /// - /// \param msg The message to be written to the stream. - /// \param options The WriteOptions affecting the write operation. - /// - /// \return \a true on success, \a false when the stream has been closed. - using WriterInterface::Write; - bool Write(const ResponseType& response, WriteOptions options) override { - return read_done_ && body_.Write(response, options); - } - - private: - internal::ServerReaderWriterBody body_; - bool read_done_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_SYNC_STREAM_H diff --git a/winx64/include/grpc++/impl/codegen/time.h b/winx64/include/grpc++/impl/codegen/time.h deleted file mode 100644 index 589deb4f..00000000 --- a/winx64/include/grpc++/impl/codegen/time.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_CODEGEN_TIME_H -#define GRPCXX_IMPL_CODEGEN_TIME_H - -#include -#include - -namespace grpc { - -/** If you are trying to use CompletionQueue::AsyncNext with a time class that - isn't either gpr_timespec or std::chrono::system_clock::time_point, you - will most likely be looking at this comment as your compiler will have - fired an error below. In order to fix this issue, you have two potential - solutions: - - 1. Use gpr_timespec or std::chrono::system_clock::time_point instead - 2. Specialize the TimePoint class with whichever time class that you - want to use here. See below for two examples of how to do this. - */ -template -class TimePoint { - public: - TimePoint(const T& time) { you_need_a_specialization_of_TimePoint(); } - gpr_timespec raw_time() { - gpr_timespec t; - return t; - } - - private: - void you_need_a_specialization_of_TimePoint(); -}; - -template <> -class TimePoint { - public: - TimePoint(const gpr_timespec& time) : time_(time) {} - gpr_timespec raw_time() { return time_; } - - private: - gpr_timespec time_; -}; - -} // namespace grpc - -#include - -#include - -namespace grpc { - -// from and to should be absolute time. -void Timepoint2Timespec(const std::chrono::system_clock::time_point& from, - gpr_timespec* to); -void TimepointHR2Timespec( - const std::chrono::high_resolution_clock::time_point& from, - gpr_timespec* to); - -std::chrono::system_clock::time_point Timespec2Timepoint(gpr_timespec t); - -template <> -class TimePoint { - public: - TimePoint(const std::chrono::system_clock::time_point& time) { - Timepoint2Timespec(time, &time_); - } - gpr_timespec raw_time() const { return time_; } - - private: - gpr_timespec time_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_CODEGEN_TIME_H diff --git a/winx64/include/grpc++/impl/grpc_library.h b/winx64/include/grpc++/impl/grpc_library.h deleted file mode 100644 index 55c867dd..00000000 --- a/winx64/include/grpc++/impl/grpc_library.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_GRPC_LIBRARY_H -#define GRPCXX_IMPL_GRPC_LIBRARY_H - -#include - -#include -#include -#include -#include - -namespace grpc { - -namespace internal { -class GrpcLibrary final : public GrpcLibraryInterface { - public: - void init() override { grpc_init(); } - void shutdown() override { grpc_shutdown(); } -}; - -static GrpcLibrary g_gli; -static CoreCodegen g_core_codegen; - -/// Instantiating this class ensures the proper initialization of gRPC. -class GrpcLibraryInitializer final { - public: - GrpcLibraryInitializer() { - if (grpc::g_glip == nullptr) { - grpc::g_glip = &g_gli; - } - if (grpc::g_core_codegen_interface == nullptr) { - grpc::g_core_codegen_interface = &g_core_codegen; - } - } - - /// A no-op method to force the linker to reference this class, which will - /// take care of initializing and shutting down the gRPC runtime. - int summon() { return 0; } -}; - -} // namespace internal -} // namespace grpc - -#endif // GRPCXX_IMPL_GRPC_LIBRARY_H diff --git a/winx64/include/grpc++/impl/method_handler_impl.h b/winx64/include/grpc++/impl/method_handler_impl.h deleted file mode 100644 index 0b1ab027..00000000 --- a/winx64/include/grpc++/impl/method_handler_impl.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_METHOD_HANDLER_IMPL_H -#define GRPCXX_IMPL_METHOD_HANDLER_IMPL_H - -#include - -#endif // GRPCXX_IMPL_METHOD_HANDLER_IMPL_H diff --git a/winx64/include/grpc++/impl/rpc_method.h b/winx64/include/grpc++/impl/rpc_method.h deleted file mode 100644 index 51e95bb1..00000000 --- a/winx64/include/grpc++/impl/rpc_method.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_RPC_METHOD_H -#define GRPCXX_IMPL_RPC_METHOD_H - -#include - -#endif // GRPCXX_IMPL_RPC_METHOD_H diff --git a/winx64/include/grpc++/impl/rpc_service_method.h b/winx64/include/grpc++/impl/rpc_service_method.h deleted file mode 100644 index efde374e..00000000 --- a/winx64/include/grpc++/impl/rpc_service_method.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_RPC_SERVICE_METHOD_H -#define GRPCXX_IMPL_RPC_SERVICE_METHOD_H - -#include - -#endif // GRPCXX_IMPL_RPC_SERVICE_METHOD_H diff --git a/winx64/include/grpc++/impl/serialization_traits.h b/winx64/include/grpc++/impl/serialization_traits.h deleted file mode 100644 index 91e894c9..00000000 --- a/winx64/include/grpc++/impl/serialization_traits.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_SERIALIZATION_TRAITS_H -#define GRPCXX_IMPL_SERIALIZATION_TRAITS_H - -#include - -#endif // GRPCXX_IMPL_SERIALIZATION_TRAITS_H diff --git a/winx64/include/grpc++/impl/server_builder_option.h b/winx64/include/grpc++/impl/server_builder_option.h deleted file mode 100644 index ab04a1c9..00000000 --- a/winx64/include/grpc++/impl/server_builder_option.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_SERVER_BUILDER_OPTION_H -#define GRPCXX_IMPL_SERVER_BUILDER_OPTION_H - -#include -#include - -#include -#include - -namespace grpc { - -/// Interface to pass an option to a \a ServerBuilder. -class ServerBuilderOption { - public: - virtual ~ServerBuilderOption() {} - /// Alter the \a ChannelArguments used to create the gRPC server. - virtual void UpdateArguments(ChannelArguments* args) = 0; - /// Alter the ServerBuilderPlugin map that will be added into ServerBuilder. - virtual void UpdatePlugins( - std::vector>* plugins) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_SERVER_BUILDER_OPTION_H diff --git a/winx64/include/grpc++/impl/server_builder_plugin.h b/winx64/include/grpc++/impl/server_builder_plugin.h deleted file mode 100644 index e15cd7b4..00000000 --- a/winx64/include/grpc++/impl/server_builder_plugin.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H -#define GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H - -#include - -#include - -namespace grpc { - -class ServerBuilder; -class ServerInitializer; -class ChannelArguments; - -/// This interface is meant for internal usage only. Implementations of this -/// interface should add themselves to a \a ServerBuilder instance through the -/// \a InternalAddPluginFactory method. -class ServerBuilderPlugin { - public: - virtual ~ServerBuilderPlugin() {} - virtual grpc::string name() = 0; - - /// UpdateServerBuilder will be called at the beginning of - /// \a ServerBuilder::BuildAndStart(). - virtual void UpdateServerBuilder(ServerBuilder* builder) {} - - /// InitServer will be called in ServerBuilder::BuildAndStart(), after the - /// Server instance is created. - virtual void InitServer(ServerInitializer* si) = 0; - - /// Finish will be called at the end of ServerBuilder::BuildAndStart(). - virtual void Finish(ServerInitializer* si) = 0; - - /// ChangeArguments is an interface that can be used in - /// ServerBuilderOption::UpdatePlugins - virtual void ChangeArguments(const grpc::string& name, void* value) = 0; - - /// UpdateChannelArguments will be called in ServerBuilder::BuildAndStart(), - /// before the Server instance is created. - virtual void UpdateChannelArguments(ChannelArguments* args) {} - - virtual bool has_sync_methods() const { return false; } - virtual bool has_async_methods() const { return false; } -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H diff --git a/winx64/include/grpc++/impl/server_initializer.h b/winx64/include/grpc++/impl/server_initializer.h deleted file mode 100644 index 873c46fb..00000000 --- a/winx64/include/grpc++/impl/server_initializer.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_IMPL_SERVER_INITIALIZER_H -#define GRPCXX_IMPL_SERVER_INITIALIZER_H - -#include -#include - -#include - -namespace grpc { - -class Server; -class Service; - -class ServerInitializer { - public: - ServerInitializer(Server* server) : server_(server) {} - - bool RegisterService(std::shared_ptr service) { - if (!server_->RegisterService(nullptr, service.get())) { - return false; - } - default_services_.push_back(service); - return true; - } - - const std::vector* GetServiceList() { - return &server_->services_; - } - - private: - Server* server_; - std::vector > default_services_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_SERVER_INITIALIZER_H diff --git a/winx64/include/grpc++/impl/service_type.h b/winx64/include/grpc++/impl/service_type.h deleted file mode 100644 index 6a9e90a9..00000000 --- a/winx64/include/grpc++/impl/service_type.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_IMPL_SERVICE_TYPE_H -#define GRPCXX_IMPL_SERVICE_TYPE_H - -#include - -#endif // GRPCXX_IMPL_SERVICE_TYPE_H diff --git a/winx64/include/grpc++/resource_quota.h b/winx64/include/grpc++/resource_quota.h deleted file mode 100644 index ef214dba..00000000 --- a/winx64/include/grpc++/resource_quota.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_RESOURCE_QUOTA_H -#define GRPCXX_RESOURCE_QUOTA_H - -struct grpc_resource_quota; - -#include -#include - -namespace grpc { - -/// ResourceQuota represents a bound on memory usage by the gRPC library. -/// A ResourceQuota can be attached to a server (via \a ServerBuilder), -/// or a client channel (via \a ChannelArguments). -/// gRPC will attempt to keep memory used by all attached entities -/// below the ResourceQuota bound. -class ResourceQuota final : private GrpcLibraryCodegen { - public: - /// \param name - a unique name for this ResourceQuota. - explicit ResourceQuota(const grpc::string& name); - ResourceQuota(); - ~ResourceQuota(); - - /// Resize this \a ResourceQuota to a new size. If \a new_size is smaller - /// than the current size of the pool, memory usage will be monotonically - /// decreased until it falls under \a new_size. - /// No time bound is given for this to occur however. - ResourceQuota& Resize(size_t new_size); - - grpc_resource_quota* c_resource_quota() const { return impl_; } - - private: - ResourceQuota(const ResourceQuota& rhs); - ResourceQuota& operator=(const ResourceQuota& rhs); - - grpc_resource_quota* const impl_; -}; - -} // namespace grpc - -#endif // GRPCXX_RESOURCE_QUOTA_H diff --git a/winx64/include/grpc++/security/auth_context.h b/winx64/include/grpc++/security/auth_context.h deleted file mode 100644 index 71f5d6e5..00000000 --- a/winx64/include/grpc++/security/auth_context.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SECURITY_AUTH_CONTEXT_H -#define GRPCXX_SECURITY_AUTH_CONTEXT_H - -#include - -#endif // GRPCXX_SECURITY_AUTH_CONTEXT_H diff --git a/winx64/include/grpc++/security/auth_metadata_processor.h b/winx64/include/grpc++/security/auth_metadata_processor.h deleted file mode 100644 index a49e30f8..00000000 --- a/winx64/include/grpc++/security/auth_metadata_processor.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * - * 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 GRPCXX_SECURITY_AUTH_METADATA_PROCESSOR_H -#define GRPCXX_SECURITY_AUTH_METADATA_PROCESSOR_H - -#include - -#include -#include -#include - -namespace grpc { - -/// Interface allowing custom server-side authorization based on credentials -/// encoded in metadata. Objects of this type can be passed to -/// \a ServerCredentials::SetAuthMetadataProcessor(). -class AuthMetadataProcessor { - public: - typedef std::multimap InputMetadata; - typedef std::multimap OutputMetadata; - - virtual ~AuthMetadataProcessor() {} - - /// If this method returns true, the \a Process function will be scheduled in - /// a different thread from the one processing the call. - virtual bool IsBlocking() const { return true; } - - /// context is read/write: it contains the properties of the channel peer and - /// it is the job of the Process method to augment it with properties derived - /// from the passed-in auth_metadata. - /// consumed_auth_metadata needs to be filled with metadata that has been - /// consumed by the processor and will be removed from the call. - /// response_metadata is the metadata that will be sent as part of the - /// response. - /// If the return value is not Status::OK, the rpc call will be aborted with - /// the error code and error message sent back to the client. - virtual Status Process(const InputMetadata& auth_metadata, - AuthContext* context, - OutputMetadata* consumed_auth_metadata, - OutputMetadata* response_metadata) = 0; -}; - -} // namespace grpc - -#endif // GRPCXX_SECURITY_AUTH_METADATA_PROCESSOR_H diff --git a/winx64/include/grpc++/security/credentials.h b/winx64/include/grpc++/security/credentials.h deleted file mode 100644 index 92330d42..00000000 --- a/winx64/include/grpc++/security/credentials.h +++ /dev/null @@ -1,224 +0,0 @@ -/* - * - * 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 GRPCXX_SECURITY_CREDENTIALS_H -#define GRPCXX_SECURITY_CREDENTIALS_H - -#include -#include - -#include -#include -#include -#include - -struct grpc_call; - -namespace grpc { -class ChannelArguments; -class Channel; -class SecureChannelCredentials; -class CallCredentials; -class SecureCallCredentials; - -/// A channel credentials object encapsulates all the state needed by a client -/// to authenticate with a server for a given channel. -/// It can make various assertions, e.g., about the client’s identity, role -/// for all the calls on that channel. -/// -/// \see https://grpc.io/docs/guides/auth.html -class ChannelCredentials : private GrpcLibraryCodegen { - public: - ChannelCredentials(); - ~ChannelCredentials(); - - protected: - friend std::shared_ptr CompositeChannelCredentials( - const std::shared_ptr& channel_creds, - const std::shared_ptr& call_creds); - - virtual SecureChannelCredentials* AsSecureCredentials() = 0; - - private: - friend std::shared_ptr CreateCustomChannel( - const grpc::string& target, - const std::shared_ptr& creds, - const ChannelArguments& args); - - virtual std::shared_ptr CreateChannel( - const grpc::string& target, const ChannelArguments& args) = 0; -}; - -/// A call credentials object encapsulates the state needed by a client to -/// authenticate with a server for a given call on a channel. -/// -/// \see https://grpc.io/docs/guides/auth.html -class CallCredentials : private GrpcLibraryCodegen { - public: - CallCredentials(); - ~CallCredentials(); - - /// Apply this instance's credentials to \a call. - virtual bool ApplyToCall(grpc_call* call) = 0; - - protected: - friend std::shared_ptr CompositeChannelCredentials( - const std::shared_ptr& channel_creds, - const std::shared_ptr& call_creds); - - friend std::shared_ptr CompositeCallCredentials( - const std::shared_ptr& creds1, - const std::shared_ptr& creds2); - - virtual SecureCallCredentials* AsSecureCredentials() = 0; -}; - -/// Options used to build SslCredentials. -struct SslCredentialsOptions { - /// The buffer containing the PEM encoding of the server root certificates. If - /// this parameter is empty, the default roots will be used. The default - /// roots can be overridden using the \a GRPC_DEFAULT_SSL_ROOTS_FILE_PATH - /// environment variable pointing to a file on the file system containing the - /// roots. - grpc::string pem_root_certs; - - /// The buffer containing the PEM encoding of the client's private key. This - /// parameter can be empty if the client does not have a private key. - grpc::string pem_private_key; - - /// The buffer containing the PEM encoding of the client's certificate chain. - /// This parameter can be empty if the client does not have a certificate - /// chain. - grpc::string pem_cert_chain; -}; - -// Factories for building different types of Credentials The functions may -// return empty shared_ptr when credentials cannot be created. If a -// Credentials pointer is returned, it can still be invalid when used to create -// a channel. A lame channel will be created then and all rpcs will fail on it. - -/// Builds credentials with reasonable defaults. -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr GoogleDefaultCredentials(); - -/// Builds SSL Credentials given SSL specific options -std::shared_ptr SslCredentials( - const SslCredentialsOptions& options); - -/// Builds credentials for use when running in GCE -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr GoogleComputeEngineCredentials(); - -/// Constant for maximum auth token lifetime. -constexpr long kMaxAuthTokenLifetimeSecs = 3600; - -/// Builds Service Account JWT Access credentials. -/// json_key is the JSON key string containing the client's private key. -/// token_lifetime_seconds is the lifetime in seconds of each Json Web Token -/// (JWT) created with this credentials. It should not exceed -/// \a kMaxAuthTokenLifetimeSecs or will be cropped to this value. -std::shared_ptr ServiceAccountJWTAccessCredentials( - const grpc::string& json_key, - long token_lifetime_seconds = kMaxAuthTokenLifetimeSecs); - -/// Builds refresh token credentials. -/// json_refresh_token is the JSON string containing the refresh token along -/// with a client_id and client_secret. -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr GoogleRefreshTokenCredentials( - const grpc::string& json_refresh_token); - -/// Builds access token credentials. -/// access_token is an oauth2 access token that was fetched using an out of band -/// mechanism. -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr AccessTokenCredentials( - const grpc::string& access_token); - -/// Builds IAM credentials. -/// -/// \warning Only use these credentials when connecting to a Google endpoint. -/// Using these credentials to connect to any other service may result in this -/// service being able to impersonate your client for requests to Google -/// services. -std::shared_ptr GoogleIAMCredentials( - const grpc::string& authorization_token, - const grpc::string& authority_selector); - -/// Combines a channel credentials and a call credentials into a composite -/// channel credentials. -std::shared_ptr CompositeChannelCredentials( - const std::shared_ptr& channel_creds, - const std::shared_ptr& call_creds); - -/// Combines two call credentials objects into a composite call credentials. -std::shared_ptr CompositeCallCredentials( - const std::shared_ptr& creds1, - const std::shared_ptr& creds2); - -/// Credentials for an unencrypted, unauthenticated channel -std::shared_ptr InsecureChannelCredentials(); - -/// Credentials for a channel using Cronet. -std::shared_ptr CronetChannelCredentials(void* engine); - -/// User defined metadata credentials. -class MetadataCredentialsPlugin { - public: - virtual ~MetadataCredentialsPlugin() {} - - /// If this method returns true, the Process function will be scheduled in - /// a different thread from the one processing the call. - virtual bool IsBlocking() const { return true; } - - /// Type of credentials this plugin is implementing. - virtual const char* GetType() const { return ""; } - - /// Gets the auth metatada produced by this plugin. - /// The fully qualified method name is: - /// service_url + "/" + method_name. - /// The channel_auth_context contains (among other things), the identity of - /// the server. - virtual Status GetMetadata( - grpc::string_ref service_url, grpc::string_ref method_name, - const AuthContext& channel_auth_context, - std::multimap* metadata) = 0; -}; - -std::shared_ptr MetadataCredentialsFromPlugin( - std::unique_ptr plugin); - -} // namespace grpc - -#endif // GRPCXX_SECURITY_CREDENTIALS_H diff --git a/winx64/include/grpc++/security/server_credentials.h b/winx64/include/grpc++/security/server_credentials.h deleted file mode 100644 index 74a61b51..00000000 --- a/winx64/include/grpc++/security/server_credentials.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * - * 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 GRPCXX_SECURITY_SERVER_CREDENTIALS_H -#define GRPCXX_SECURITY_SERVER_CREDENTIALS_H - -#include -#include - -#include -#include -#include - -struct grpc_server; - -namespace grpc { -class Server; - -/// Wrapper around \a grpc_server_credentials, a way to authenticate a server. -class ServerCredentials { - public: - virtual ~ServerCredentials(); - - /// This method is not thread-safe and has to be called before the server is - /// started. The last call to this function wins. - virtual void SetAuthMetadataProcessor( - const std::shared_ptr& processor) = 0; - - private: - friend class ::grpc::Server; - - /// Tries to bind \a server to the given \a addr (eg, localhost:1234, - /// 192.168.1.1:31416, [::1]:27182, etc.) - /// - /// \return bound port number on sucess, 0 on failure. - // TODO(dgq): the "port" part seems to be a misnomer. - virtual int AddPortToServer(const grpc::string& addr, - grpc_server* server) = 0; -}; - -/// Options to create ServerCredentials with SSL -struct SslServerCredentialsOptions { - /// \warning Deprecated - SslServerCredentialsOptions() - : force_client_auth(false), - client_certificate_request(GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE) {} - SslServerCredentialsOptions( - grpc_ssl_client_certificate_request_type request_type) - : force_client_auth(false), client_certificate_request(request_type) {} - - struct PemKeyCertPair { - grpc::string private_key; - grpc::string cert_chain; - }; - grpc::string pem_root_certs; - std::vector pem_key_cert_pairs; - /// \warning Deprecated - bool force_client_auth; - - /// If both \a force_client_auth and \a client_certificate_request - /// fields are set, \a force_client_auth takes effect, i.e. - /// \a REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY - /// will be enforced. - grpc_ssl_client_certificate_request_type client_certificate_request; -}; - -/// Builds SSL ServerCredentials given SSL specific options -std::shared_ptr SslServerCredentials( - const SslServerCredentialsOptions& options); - -/// Builds insecure server credentials. -std::shared_ptr InsecureServerCredentials(); - -} // namespace grpc - -#endif // GRPCXX_SECURITY_SERVER_CREDENTIALS_H diff --git a/winx64/include/grpc++/server.h b/winx64/include/grpc++/server.h deleted file mode 100644 index 0a3aae82..00000000 --- a/winx64/include/grpc++/server.h +++ /dev/null @@ -1,226 +0,0 @@ -/* - * - * 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 GRPCXX_SERVER_H -#define GRPCXX_SERVER_H - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct grpc_server; - -namespace grpc { - -class AsyncGenericService; -class HealthCheckServiceInterface; -class ServerContext; -class ServerInitializer; - -/// Represents a gRPC server. -/// -/// Use a \a grpc::ServerBuilder to create, configure, and start -/// \a Server instances. -class Server final : public ServerInterface, private GrpcLibraryCodegen { - public: - ~Server(); - - /// Block until the server shuts down. - /// - /// \warning The server must be either shutting down or some other thread must - /// call \a Shutdown for this function to ever return. - void Wait() override; - - /// Global callbacks are a set of hooks that are called when server - /// events occur. \a SetGlobalCallbacks method is used to register - /// the hooks with gRPC. Note that - /// the \a GlobalCallbacks instance will be shared among all - /// \a Server instances in an application and can be set exactly - /// once per application. - class GlobalCallbacks { - public: - virtual ~GlobalCallbacks() {} - /// Called before server is created. - virtual void UpdateArguments(ChannelArguments* args) {} - /// Called before application callback for each synchronous server request - virtual void PreSynchronousRequest(ServerContext* context) = 0; - /// Called after application callback for each synchronous server request - virtual void PostSynchronousRequest(ServerContext* context) = 0; - /// Called before server is started. - virtual void PreServerStart(Server* server) {} - /// Called after a server port is added. - virtual void AddPort(Server* server, const grpc::string& addr, - ServerCredentials* creds, int port) {} - }; - /// Set the global callback object. Can only be called once per application. - /// Does not take ownership of callbacks, and expects the pointed to object - /// to be alive until all server objects in the process have been destroyed. - /// The same \a GlobalCallbacks object will be used throughout the - /// application and is shared among all \a Server objects. - static void SetGlobalCallbacks(GlobalCallbacks* callbacks); - - // Returns a \em raw pointer to the underlying \a grpc_server instance. - grpc_server* c_server(); - - /// Returns the health check service. - HealthCheckServiceInterface* GetHealthCheckService() const { - return health_check_service_.get(); - } - - /// Establish a channel for in-process communication - std::shared_ptr InProcessChannel(const ChannelArguments& args); - - private: - friend class AsyncGenericService; - friend class ServerBuilder; - friend class ServerInitializer; - - class SyncRequest; - class AsyncRequest; - class ShutdownRequest; - - /// SyncRequestThreadManager is an implementation of ThreadManager. This class - /// is responsible for polling for incoming RPCs and calling the RPC handlers. - /// This is only used in case of a Sync server (i.e a server exposing a sync - /// interface) - class SyncRequestThreadManager; - - class UnimplementedAsyncRequestContext; - class UnimplementedAsyncRequest; - class UnimplementedAsyncResponse; - - /// Server constructors. To be used by \a ServerBuilder only. - /// - /// \param max_message_size Maximum message length that the channel can - /// receive. - /// - /// \param args The channel args - /// - /// \param sync_server_cqs The completion queues to use if the server is a - /// synchronous server (or a hybrid server). The server polls for new RPCs on - /// these queues - /// - /// \param min_pollers The minimum number of polling threads per server - /// completion queue (in param sync_server_cqs) to use for listening to - /// incoming requests (used only in case of sync server) - /// - /// \param max_pollers The maximum number of polling threads per server - /// completion queue (in param sync_server_cqs) to use for listening to - /// incoming requests (used only in case of sync server) - /// - /// \param sync_cq_timeout_msec The timeout to use when calling AsyncNext() on - /// server completion queues passed via sync_server_cqs param. - Server(int max_message_size, ChannelArguments* args, - std::shared_ptr>> - sync_server_cqs, - int min_pollers, int max_pollers, int sync_cq_timeout_msec); - - /// Register a service. This call does not take ownership of the service. - /// The service must exist for the lifetime of the Server instance. - bool RegisterService(const grpc::string* host, Service* service) override; - - /// Register a generic service. This call does not take ownership of the - /// service. The service must exist for the lifetime of the Server instance. - void RegisterAsyncGenericService(AsyncGenericService* service) override; - - /// Try binding the server to the given \a addr endpoint - /// (port, and optionally including IP address to bind to). - /// - /// It can be invoked multiple times. Should be used before - /// starting the server. - /// - /// \param addr The address to try to bind to the server (eg, localhost:1234, - /// 192.168.1.1:31416, [::1]:27182, etc.). - /// \param creds The credentials associated with the server. - /// - /// \return bound port number on success, 0 on failure. - /// - /// \warning It is an error to call this method on an already started server. - int AddListeningPort(const grpc::string& addr, - ServerCredentials* creds) override; - - /// Start the server. - /// - /// \param cqs Completion queues for handling asynchronous services. The - /// caller is required to keep all completion queues live until the server is - /// destroyed. - /// \param num_cqs How many completion queues does \a cqs hold. - void Start(ServerCompletionQueue** cqs, size_t num_cqs) override; - - void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) override; - - void ShutdownInternal(gpr_timespec deadline) override; - - int max_receive_message_size() const override { - return max_receive_message_size_; - }; - - grpc_server* server() override { return server_; }; - - ServerInitializer* initializer(); - - const int max_receive_message_size_; - - /// The following completion queues are ONLY used in case of Sync API - /// i.e. if the server has any services with sync methods. The server uses - /// these completion queues to poll for new RPCs - std::shared_ptr>> - sync_server_cqs_; - - /// List of \a ThreadManager instances (one for each cq in - /// the \a sync_server_cqs) - std::vector> sync_req_mgrs_; - - // Sever status - std::mutex mu_; - bool started_; - bool shutdown_; - bool shutdown_notified_; // Was notify called on the shutdown_cv_ - - std::condition_variable shutdown_cv_; - - std::shared_ptr global_callbacks_; - - std::vector services_; - bool has_generic_service_; - - // Pointer to the wrapped grpc_server. - grpc_server* server_; - - std::unique_ptr server_initializer_; - - std::unique_ptr health_check_service_; - bool health_check_service_disabled_; -}; - -} // namespace grpc - -#endif // GRPCXX_SERVER_H diff --git a/winx64/include/grpc++/server_builder.h b/winx64/include/grpc++/server_builder.h deleted file mode 100644 index eafd6361..00000000 --- a/winx64/include/grpc++/server_builder.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * - * Copyright 2015-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. - * - */ - -#ifndef GRPCXX_SERVER_BUILDER_H -#define GRPCXX_SERVER_BUILDER_H - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -struct grpc_resource_quota; - -namespace grpc { - -class AsyncGenericService; -class ResourceQuota; -class CompletionQueue; -class RpcService; -class Server; -class ServerCompletionQueue; -class ServerCredentials; -class Service; - -namespace testing { -class ServerBuilderPluginTest; -} // namespace testing - -/// A builder class for the creation and startup of \a grpc::Server instances. -class ServerBuilder { - public: - ServerBuilder(); - ~ServerBuilder(); - - /// Options for synchronous servers. - enum SyncServerOption { - NUM_CQS, ///< Number of completion queues. - MIN_POLLERS, ///< Minimum number of polling threads. - MAX_POLLERS, ///< Maximum number of polling threads. - CQ_TIMEOUT_MSEC ///< Completion queue timeout in milliseconds. - }; - - /// Register a service. This call does not take ownership of the service. - /// The service must exist for the lifetime of the \a Server instance returned - /// by \a BuildAndStart(). - /// Matches requests with any :authority - ServerBuilder& RegisterService(Service* service); - - /// Register a generic service. - /// Matches requests with any :authority - ServerBuilder& RegisterAsyncGenericService(AsyncGenericService* service); - - /// Register a service. This call does not take ownership of the service. - /// The service must exist for the lifetime of the \a Server instance returned - /// by \a BuildAndStart(). - /// Only matches requests with :authority \a host - ServerBuilder& RegisterService(const grpc::string& host, Service* service); - - /// Set max receive message size in bytes. - ServerBuilder& SetMaxReceiveMessageSize(int max_receive_message_size) { - max_receive_message_size_ = max_receive_message_size; - return *this; - } - - /// Set max send message size in bytes. - ServerBuilder& SetMaxSendMessageSize(int max_send_message_size) { - max_send_message_size_ = max_send_message_size; - return *this; - } - - /// \deprecated For backward compatibility. - ServerBuilder& SetMaxMessageSize(int max_message_size) { - return SetMaxReceiveMessageSize(max_message_size); - } - - /// Set the support status for compression algorithms. All algorithms are - /// enabled by default. - /// - /// Incoming calls compressed with an unsupported algorithm will fail with - /// \a GRPC_STATUS_UNIMPLEMENTED. - ServerBuilder& SetCompressionAlgorithmSupportStatus( - grpc_compression_algorithm algorithm, bool enabled); - - /// The default compression level to use for all channel calls in the - /// absence of a call-specific level. - ServerBuilder& SetDefaultCompressionLevel(grpc_compression_level level); - - /// The default compression algorithm to use for all channel calls in the - /// absence of a call-specific level. Note that it overrides any compression - /// level set by \a SetDefaultCompressionLevel. - ServerBuilder& SetDefaultCompressionAlgorithm( - grpc_compression_algorithm algorithm); - - /// Set the attached buffer pool for this server - ServerBuilder& SetResourceQuota(const ResourceQuota& resource_quota); - - ServerBuilder& SetOption(std::unique_ptr option); - - /// Only useful if this is a Synchronous server. - ServerBuilder& SetSyncServerOption(SyncServerOption option, int value); - - /// Add a channel argument (an escape hatch to tuning core library parameters - /// directly) - template - ServerBuilder& AddChannelArgument(const grpc::string& arg, const T& value) { - return SetOption(MakeChannelArgumentOption(arg, value)); - } - - /// Enlists an endpoint \a addr (port with an optional IP address) to - /// bind the \a grpc::Server object to be created to. - /// - /// It can be invoked multiple times. - /// - /// \param addr_uri The address to try to bind to the server in URI form. If - /// the scheme name is omitted, "dns:///" is assumed. Valid values include - /// dns:///localhost:1234, / 192.168.1.1:31416, dns:///[::1]:27182, etc.). - /// \params creds The credentials associated with the server. - /// \param selected_port[out] If not `nullptr`, gets populated with the port - /// number bound to the \a grpc::Server for the corresponding endpoint after - /// it is successfully bound, 0 otherwise. - /// - // TODO(dgq): the "port" part seems to be a misnomer. - ServerBuilder& AddListeningPort(const grpc::string& addr_uri, - std::shared_ptr creds, - int* selected_port = nullptr); - - /// Add a completion queue for handling asynchronous services. - /// - /// Caller is required to shutdown the server prior to shutting down the - /// returned completion queue. A typical usage scenario: - /// - /// // While building the server: - /// ServerBuilder builder; - /// ... - /// cq_ = builder.AddCompletionQueue(); - /// server_ = builder.BuildAndStart(); - /// - /// // While shutting down the server; - /// server_->Shutdown(); - /// cq_->Shutdown(); // Always *after* the associated server's Shutdown()! - /// - /// \param is_frequently_polled This is an optional parameter to inform gRPC - /// library about whether this completion queue would be frequently polled - /// (i.e. by calling \a Next() or \a AsyncNext()). The default value is - /// 'true' and is the recommended setting. Setting this to 'false' (i.e. - /// not polling the completion queue frequently) will have a significantly - /// negative performance impact and hence should not be used in production - /// use cases. - std::unique_ptr AddCompletionQueue( - bool is_frequently_polled = true); - - /// Return a running server which is ready for processing calls. - std::unique_ptr BuildAndStart(); - - /// For internal use only: Register a ServerBuilderPlugin factory function. - static void InternalAddPluginFactory( - std::unique_ptr (*CreatePlugin)()); - - /// Enable a server workaround. Do not use unless you know what the workaround - /// does. For explanation and detailed descriptions of workarounds, see - /// doc/workarounds.md. - ServerBuilder& EnableWorkaround(grpc_workaround_list id); - - private: - friend class ::grpc::testing::ServerBuilderPluginTest; - - struct Port { - grpc::string addr; - std::shared_ptr creds; - int* selected_port; - }; - - struct SyncServerSettings { - SyncServerSettings() - : num_cqs(1), min_pollers(1), max_pollers(2), cq_timeout_msec(10000) {} - - /// Number of server completion queues to create to listen to incoming RPCs. - int num_cqs; - - /// Minimum number of threads per completion queue that should be listening - /// to incoming RPCs. - int min_pollers; - - /// Maximum number of threads per completion queue that can be listening to - /// incoming RPCs. - int max_pollers; - - /// The timeout for server completion queue's AsyncNext call. - int cq_timeout_msec; - }; - - typedef std::unique_ptr HostString; - struct NamedService { - explicit NamedService(Service* s) : service(s) {} - NamedService(const grpc::string& h, Service* s) - : host(new grpc::string(h)), service(s) {} - HostString host; - Service* service; - }; - - int max_receive_message_size_; - int max_send_message_size_; - std::vector> options_; - std::vector> services_; - std::vector ports_; - - SyncServerSettings sync_server_settings_; - - /// List of completion queues added via \a AddCompletionQueue method. - std::vector cqs_; - - std::shared_ptr creds_; - std::vector> plugins_; - grpc_resource_quota* resource_quota_; - AsyncGenericService* generic_service_; - struct { - bool is_set; - grpc_compression_level level; - } maybe_default_compression_level_; - struct { - bool is_set; - grpc_compression_algorithm algorithm; - } maybe_default_compression_algorithm_; - uint32_t enabled_compression_algorithms_bitset_; -}; - -} // namespace grpc - -#endif // GRPCXX_SERVER_BUILDER_H diff --git a/winx64/include/grpc++/server_context.h b/winx64/include/grpc++/server_context.h deleted file mode 100644 index f9b98e18..00000000 --- a/winx64/include/grpc++/server_context.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SERVER_CONTEXT_H -#define GRPCXX_SERVER_CONTEXT_H - -#include - -#endif // GRPCXX_SERVER_CONTEXT_H diff --git a/winx64/include/grpc++/server_posix.h b/winx64/include/grpc++/server_posix.h deleted file mode 100644 index 6cafcff5..00000000 --- a/winx64/include/grpc++/server_posix.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPCXX_SERVER_POSIX_H -#define GRPCXX_SERVER_POSIX_H - -#include - -#include -#include - -namespace grpc { - -#ifdef GPR_SUPPORT_CHANNELS_FROM_FD - -/// Add a new client to a \a Server communicating over the given -/// file descriptor. -/// -/// \param server The server to add the client to. -/// \param fd The file descriptor representing a socket. -void AddInsecureChannelFromFd(Server* server, int fd); - -#endif // GPR_SUPPORT_CHANNELS_FROM_FD - -} // namespace grpc - -#endif // GRPCXX_SERVER_POSIX_H diff --git a/winx64/include/grpc++/support/async_stream.h b/winx64/include/grpc++/support/async_stream.h deleted file mode 100644 index f2cab848..00000000 --- a/winx64/include/grpc++/support/async_stream.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_ASYNC_STREAM_H -#define GRPCXX_SUPPORT_ASYNC_STREAM_H - -#include - -#endif // GRPCXX_SUPPORT_ASYNC_STREAM_H diff --git a/winx64/include/grpc++/support/async_unary_call.h b/winx64/include/grpc++/support/async_unary_call.h deleted file mode 100644 index 4947c442..00000000 --- a/winx64/include/grpc++/support/async_unary_call.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H -#define GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H - -#include - -#endif // GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H diff --git a/winx64/include/grpc++/support/byte_buffer.h b/winx64/include/grpc++/support/byte_buffer.h deleted file mode 100644 index df16c6a7..00000000 --- a/winx64/include/grpc++/support/byte_buffer.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_BYTE_BUFFER_H -#define GRPCXX_SUPPORT_BYTE_BUFFER_H - -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace grpc { - -/// 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(); - - ByteBuffer& operator=(const ByteBuffer&); - - /// Dump (read) the buffer contents into \a slices. - Status Dump(std::vector* slices) const; - - /// Remove all data. - void Clear(); - - /// Buffer size in bytes. - size_t Length() const; - - /// Swap the state of *this and *other. - void Swap(ByteBuffer* other); - - private: - friend class SerializationTraits; - - // takes ownership - void set_buffer(grpc_byte_buffer* buf) { - if (buffer_) { - Clear(); - } - buffer_ = buf; - } - - // For \a SerializationTraits's usage. - grpc_byte_buffer* buffer() const { return buffer_; } - - grpc_byte_buffer* buffer_; -}; - -template <> -class SerializationTraits { - public: - static Status Deserialize(grpc_byte_buffer* byte_buffer, ByteBuffer* dest) { - dest->set_buffer(byte_buffer); - return Status::OK; - } - static Status Serialize(const ByteBuffer& source, grpc_byte_buffer** buffer, - bool* own_buffer) { - *buffer = grpc_byte_buffer_copy(source.buffer()); - *own_buffer = true; - return Status::OK; - } -}; - -} // namespace grpc - -#endif // GRPCXX_SUPPORT_BYTE_BUFFER_H diff --git a/winx64/include/grpc++/support/channel_arguments.h b/winx64/include/grpc++/support/channel_arguments.h deleted file mode 100644 index 7b6befea..00000000 --- a/winx64/include/grpc++/support/channel_arguments.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H -#define GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H - -#include -#include - -#include -#include -#include - -namespace grpc { -namespace testing { -class ChannelArgumentsTest; -} // namespace testing - -class ResourceQuota; - -/// Options for channel creation. The user can use generic setters to pass -/// key value pairs down to C channel creation code. For gRPC related options, -/// concrete setters are provided. -class ChannelArguments { - public: - ChannelArguments(); - ~ChannelArguments(); - - ChannelArguments(const ChannelArguments& other); - ChannelArguments& operator=(ChannelArguments other) { - Swap(other); - return *this; - } - - void Swap(ChannelArguments& other); - - /// Dump arguments in this instance to \a channel_args. Does not take - /// ownership of \a channel_args. - /// - /// Note that the underlying arguments are shared. Changes made to either \a - /// channel_args or this instance would be reflected on both. - void SetChannelArgs(grpc_channel_args* channel_args) const; - - // gRPC specific channel argument setters - /// Set target name override for SSL host name checking. This option is for - /// testing only and should never be used in production. - void SetSslTargetNameOverride(const grpc::string& name); - // TODO(yangg) add flow control options - /// Set the compression algorithm for the channel. - void SetCompressionAlgorithm(grpc_compression_algorithm algorithm); - - /// Set the socket mutator for the channel. - void SetSocketMutator(grpc_socket_mutator* mutator); - - /// Set the string to prepend to the user agent. - void SetUserAgentPrefix(const grpc::string& user_agent_prefix); - - /// Set the buffer pool to be attached to the constructed channel. - void SetResourceQuota(const ResourceQuota& resource_quota); - - /// Set the max receive and send message sizes. - void SetMaxReceiveMessageSize(int size); - void SetMaxSendMessageSize(int size); - - /// Set LB policy name. - /// Note that if the name resolver returns only balancer addresses, the - /// grpclb LB policy will be used, regardless of what is specified here. - void SetLoadBalancingPolicyName(const grpc::string& lb_policy_name); - - /// Set service config in JSON form. - /// Primarily meant for use in unit tests. - void SetServiceConfigJSON(const grpc::string& service_config_json); - - // Generic channel argument setters. Only for advanced use cases. - /// Set an integer argument \a value under \a key. - void SetInt(const grpc::string& key, int value); - - // Generic channel argument setter. Only for advanced use cases. - /// Set a pointer argument \a value under \a key. Owership is not transferred. - void SetPointer(const grpc::string& key, void* value); - - void SetPointerWithVtable(const grpc::string& key, void* value, - const grpc_arg_pointer_vtable* vtable); - - /// Set a textual argument \a value under \a key. - void SetString(const grpc::string& key, const grpc::string& value); - - /// Return (by value) a C \a grpc_channel_args structure which points to - /// arguments owned by this \a ChannelArguments instance - grpc_channel_args c_channel_args() const { - grpc_channel_args out; - out.num_args = args_.size(); - out.args = args_.empty() ? NULL : const_cast(&args_[0]); - return out; - } - - private: - friend class SecureChannelCredentials; - friend class testing::ChannelArgumentsTest; - - /// Default pointer argument operations. - struct PointerVtableMembers { - static void* Copy(void* in) { return in; } - static void Destroy(grpc_exec_ctx* exec_ctx, void* in) {} - static int Compare(void* a, void* b) { - if (a < b) return -1; - if (a > b) return 1; - return 0; - } - }; - - // Returns empty string when it is not set. - grpc::string GetSslTargetNameOverride() const; - - std::vector args_; - std::list strings_; -}; - -} // namespace grpc - -#endif // GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H diff --git a/winx64/include/grpc++/support/config.h b/winx64/include/grpc++/support/config.h deleted file mode 100644 index b65af312..00000000 --- a/winx64/include/grpc++/support/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_CONFIG_H -#define GRPCXX_SUPPORT_CONFIG_H - -#include - -#endif // GRPCXX_SUPPORT_CONFIG_H diff --git a/winx64/include/grpc++/support/error_details.h b/winx64/include/grpc++/support/error_details.h deleted file mode 100644 index 8925fa84..00000000 --- a/winx64/include/grpc++/support/error_details.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * - * 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_SUPPORT_ERROR_DETAILS_H -#define GRPCXX_SUPPORT_ERROR_DETAILS_H - -#include - -namespace google { -namespace rpc { -class Status; -} // namespace rpc -} // namespace google - -namespace grpc { - -/// Map a \a grpc::Status to a \a google::rpc::Status. -/// The given \a to object will be cleared. -/// On success, returns status with OK. -/// Returns status with \a INVALID_ARGUMENT, if failed to deserialize. -/// Returns status with \a FAILED_PRECONDITION, if \a to is nullptr. -Status ExtractErrorDetails(const Status& from, ::google::rpc::Status* to); - -/// Map \a google::rpc::Status to a \a grpc::Status. -/// Returns OK on success. -/// Returns status with \a FAILED_PRECONDITION if \a to is nullptr. -Status SetErrorDetails(const ::google::rpc::Status& from, Status* to); - -} // namespace grpc - -#endif // GRPCXX_SUPPORT_ERROR_DETAILS_H diff --git a/winx64/include/grpc++/support/slice.h b/winx64/include/grpc++/support/slice.h deleted file mode 100644 index bbf97f28..00000000 --- a/winx64/include/grpc++/support/slice.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_SLICE_H -#define GRPCXX_SUPPORT_SLICE_H - -#include -#include - -namespace grpc { - -/// A wrapper around \a grpc_slice. -/// -/// A slice represents a contiguous reference counted array of bytes. -/// It is cheap to take references to a slice, and it is cheap to create a -/// slice pointing to a subset of another slice. -class Slice final { - public: - /// Construct an empty slice. - Slice(); - /// Destructor - drops one reference. - ~Slice(); - - enum AddRef { ADD_REF }; - /// Construct a slice from \a slice, adding a reference. - Slice(grpc_slice slice, AddRef); - - enum StealRef { STEAL_REF }; - /// Construct a slice from \a slice, stealing a reference. - Slice(grpc_slice slice, StealRef); - - /// Allocate a slice of specified size - Slice(size_t len); - - /// Construct a slice from a copied buffer - Slice(const void* buf, size_t len); - - /// Construct a slice from a copied string - Slice(const grpc::string& str); - - enum StaticSlice { STATIC_SLICE }; - - /// Construct a slice from a static buffer - Slice(const void* buf, size_t len, StaticSlice); - - /// Copy constructor, adds a reference. - Slice(const Slice& other); - - /// Assignment, reference count is unchanged. - Slice& operator=(Slice other) { - std::swap(slice_, other.slice_); - return *this; - } - - /// Create a slice pointing at some data. Calls malloc to allocate a refcount - /// for the object, and arranges that destroy will be called with the - /// user data pointer passed in at destruction. Can be the same as buf or - /// different (e.g., if data is part of a larger structure that must be - /// destroyed when the data is no longer needed) - Slice(void* buf, size_t len, void (*destroy)(void*), void* user_data); - - /// Specialization of above for common case where buf == user_data - Slice(void* buf, size_t len, void (*destroy)(void*)) - : Slice(buf, len, destroy, buf) {} - - /// Similar to the above but has a destroy that also takes slice length - Slice(void* buf, size_t len, void (*destroy)(void*, size_t)); - - /// Byte size. - size_t size() const { return GRPC_SLICE_LENGTH(slice_); } - - /// Raw pointer to the beginning (first element) of the slice. - const uint8_t* begin() const { return GRPC_SLICE_START_PTR(slice_); } - - /// Raw pointer to the end (one byte \em past the last element) of the slice. - const uint8_t* end() const { return GRPC_SLICE_END_PTR(slice_); } - - /// Raw C slice. Caller needs to call grpc_slice_unref when done. - grpc_slice c_slice() const { return grpc_slice_ref(slice_); } - - private: - friend class ByteBuffer; - - grpc_slice slice_; -}; - -} // namespace grpc - -#endif // GRPCXX_SUPPORT_SLICE_H diff --git a/winx64/include/grpc++/support/status.h b/winx64/include/grpc++/support/status.h deleted file mode 100644 index 1fa910a6..00000000 --- a/winx64/include/grpc++/support/status.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_STATUS_H -#define GRPCXX_SUPPORT_STATUS_H - -#include - -#endif // GRPCXX_SUPPORT_STATUS_H diff --git a/winx64/include/grpc++/support/status_code_enum.h b/winx64/include/grpc++/support/status_code_enum.h deleted file mode 100644 index d320c0cf..00000000 --- a/winx64/include/grpc++/support/status_code_enum.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_STATUS_CODE_ENUM_H -#define GRPCXX_SUPPORT_STATUS_CODE_ENUM_H - -#include - -#endif // GRPCXX_SUPPORT_STATUS_CODE_ENUM_H diff --git a/winx64/include/grpc++/support/string_ref.h b/winx64/include/grpc++/support/string_ref.h deleted file mode 100644 index 873be63c..00000000 --- a/winx64/include/grpc++/support/string_ref.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_STRING_REF_H -#define GRPCXX_SUPPORT_STRING_REF_H - -#include - -#endif // GRPCXX_SUPPORT_STRING_REF_H diff --git a/winx64/include/grpc++/support/stub_options.h b/winx64/include/grpc++/support/stub_options.h deleted file mode 100644 index 87843cf3..00000000 --- a/winx64/include/grpc++/support/stub_options.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_STUB_OPTIONS_H -#define GRPCXX_SUPPORT_STUB_OPTIONS_H - -#include - -#endif // GRPCXX_SUPPORT_STUB_OPTIONS_H diff --git a/winx64/include/grpc++/support/sync_stream.h b/winx64/include/grpc++/support/sync_stream.h deleted file mode 100644 index 6a6e0c79..00000000 --- a/winx64/include/grpc++/support/sync_stream.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_SYNC_STREAM_H -#define GRPCXX_SUPPORT_SYNC_STREAM_H - -#include - -#endif // GRPCXX_SUPPORT_SYNC_STREAM_H diff --git a/winx64/include/grpc++/support/time.h b/winx64/include/grpc++/support/time.h deleted file mode 100644 index e47a593a..00000000 --- a/winx64/include/grpc++/support/time.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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 GRPCXX_SUPPORT_TIME_H -#define GRPCXX_SUPPORT_TIME_H - -#include - -#endif // GRPCXX_SUPPORT_TIME_H diff --git a/winx64/include/grpc/byte_buffer.h b/winx64/include/grpc/byte_buffer.h deleted file mode 100644 index 55e191da..00000000 --- a/winx64/include/grpc/byte_buffer.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * - * 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_BYTE_BUFFER_H -#define GRPC_BYTE_BUFFER_H - -#include -#include - -#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_BYTE_BUFFER_H */ diff --git a/winx64/include/grpc/byte_buffer_reader.h b/winx64/include/grpc/byte_buffer_reader.h deleted file mode 100644 index 6bd07847..00000000 --- a/winx64/include/grpc/byte_buffer_reader.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_BYTE_BUFFER_READER_H -#define GRPC_BYTE_BUFFER_READER_H - -#include - -#endif /* GRPC_BYTE_BUFFER_READER_H */ diff --git a/winx64/include/grpc/census.h b/winx64/include/grpc/census.h deleted file mode 100644 index de8e7a66..00000000 --- a/winx64/include/grpc/census.h +++ /dev/null @@ -1,469 +0,0 @@ -/* - * - * Copyright 2015-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. - * - */ - -/** RPC-internal Census API's. These are designed to be generic enough that - * they can (ultimately) be used in many different RPC systems (with differing - * implementations). */ - -#ifndef GRPC_CENSUS_H -#define GRPC_CENSUS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Identify census features that can be enabled via census_initialize(). */ -enum census_features { - CENSUS_FEATURE_NONE = 0, /** Do not enable census. */ - CENSUS_FEATURE_TRACING = 1, /** Enable census tracing. */ - CENSUS_FEATURE_STATS = 2, /** Enable Census stats collection. */ - CENSUS_FEATURE_CPU = 4, /** Enable Census CPU usage collection. */ - CENSUS_FEATURE_ALL = - CENSUS_FEATURE_TRACING | CENSUS_FEATURE_STATS | CENSUS_FEATURE_CPU -}; - -/** Shutdown and startup census subsystem. The 'features' argument should be - * the OR (|) of census_features values. If census fails to initialize, then - * census_initialize() will return -1, otherwise the set of enabled features - * (which may be smaller than that provided in the `features` argument, see - * census_supported()) is returned. It is an error to call census_initialize() - * more than once (without an intervening census_shutdown()). These functions - * are not thread-safe. */ -CENSUSAPI int census_initialize(int features); -CENSUSAPI void census_shutdown(void); - -/** Return the features supported by the current census implementation (not all - * features will be available on all platforms). */ -CENSUSAPI int census_supported(void); - -/** Return the census features currently enabled. */ -CENSUSAPI int census_enabled(void); - -/** - A Census Context is a handle used by Census to represent the current tracing - and stats collection information. Contexts should be propagated across RPC's - (this is the responsibility of the local RPC system). A context is typically - used as the first argument to most census functions. Conceptually, they - should be thought of as specific to a single RPC/thread. The user visible - context representation is that of a collection of key:value string pairs, - each of which is termed a 'tag'; these form the basis against which Census - metrics will be recorded. Keys are unique within a context. */ -typedef struct census_context census_context; - -/** A tag is a key:value pair. Both keys and values are nil-terminated strings, - containing printable ASCII characters (decimal 32-126). Keys must be at - least one character in length. Both keys and values can have at most - CENSUS_MAX_TAG_KB_LEN characters (including the terminating nil). The - maximum number of tags that can be propagated is - CENSUS_MAX_PROPAGATED_TAGS. Users should also remember that some systems - may have limits on, e.g., the number of bytes that can be transmitted as - metadata, and that larger tags means more memory consumed and time in - processing. */ -typedef struct { - const char *key; - const char *value; - uint8_t flags; -} census_tag; - -/** Maximum length of a tag's key or value. */ -#define CENSUS_MAX_TAG_KV_LEN 255 -/** Maximum number of propagatable tags. */ -#define CENSUS_MAX_PROPAGATED_TAGS 255 - -/** Tag flags. */ -#define CENSUS_TAG_PROPAGATE 1 /** Tag should be propagated over RPC */ -#define CENSUS_TAG_STATS 2 /** Tag will be used for statistics aggregation */ -#define CENSUS_TAG_RESERVED 4 /** Reserved for internal use. */ -/** Flag values 4,8,16,32,64,128 are reserved for future/internal use. Clients - should not use or rely on their values. */ - -#define CENSUS_TAG_IS_PROPAGATED(flags) (flags & CENSUS_TAG_PROPAGATE) -#define CENSUS_TAG_IS_STATS(flags) (flags & CENSUS_TAG_STATS) - -/** An instance of this structure is kept by every context, and records the - basic information associated with the creation of that context. */ -typedef struct { - int n_propagated_tags; /** number of propagated tags */ - int n_local_tags; /** number of non-propagated (local) tags */ - int n_deleted_tags; /** number of tags that were deleted */ - int n_added_tags; /** number of tags that were added */ - int n_modified_tags; /** number of tags that were modified */ - int n_invalid_tags; /** number of tags with bad keys or values (e.g. - longer than CENSUS_MAX_TAG_KV_LEN) */ - int n_ignored_tags; /** number of tags ignored because of - CENSUS_MAX_PROPAGATED_TAGS limit. */ -} census_context_status; - -/** Create a new context, adding and removing tags from an existing context. - This will copy all tags from the 'tags' input, so it is recommended - to add as many tags in a single operation as is practical for the client. - @param base Base context to build upon. Can be NULL. - @param tags A set of tags to be added/changed/deleted. Tags with keys that - are in 'tags', but not 'base', are added to the context. Keys that are in - both 'tags' and 'base' will have their value/flags modified. Tags with keys - in both, but with NULL values, will be deleted from the context. Tags with - invalid (too long or short) keys or values will be ignored. - If adding a tag will result in more than CENSUS_MAX_PROPAGATED_TAGS in either - binary or non-binary tags, they will be ignored, as will deletions of - tags that don't exist. - @param ntags number of tags in 'tags' - @param status If not NULL, will return a pointer to a census_context_status - structure containing information about the new context and status of the - tags used in its creation. - @return A new, valid census_context. -*/ -CENSUSAPI census_context *census_context_create( - const census_context *base, const census_tag *tags, int ntags, - census_context_status const **status); - -/** Destroy a context. Once this function has been called, the context cannot - be reused. */ -CENSUSAPI void census_context_destroy(census_context *context); - -/** Get a pointer to the original status from the context creation. */ -CENSUSAPI const census_context_status *census_context_get_status( - const census_context *context); - -/** Structure used for iterating over the tags in a context. API clients should - not use or reference internal fields - neither their contents or - presence/absence are guaranteed. */ -typedef struct { - const census_context *context; - int base; - int index; - char *kvm; -} census_context_iterator; - -/** Initialize a census_tag_iterator. Must be called before first use. */ -CENSUSAPI void census_context_initialize_iterator( - const census_context *context, census_context_iterator *iterator); - -/** Get the contents of the "next" tag in the context. If there are no more - tags, returns 0 (and 'tag' contents will be unchanged), otherwise returns 1. - */ -CENSUSAPI int census_context_next_tag(census_context_iterator *iterator, - census_tag *tag); - -/** Get a context tag by key. Returns 0 if the key is not present. */ -CENSUSAPI int census_context_get_tag(const census_context *context, - const char *key, census_tag *tag); - -/** Tag set encode/decode functionality. These functions are intended - for use by RPC systems only, for purposes of transmitting/receiving contexts. - */ - -/** Encode a context into a buffer. - @param context context to be encoded - @param buffer buffer into which the context will be encoded. - @param buf_size number of available bytes in buffer. - @return The number of buffer bytes consumed for the encoded context, or - zero if the buffer was of insufficient size. */ -CENSUSAPI size_t census_context_encode(const census_context *context, - char *buffer, size_t buf_size); - -/** Decode context buffer encoded with census_context_encode(). Returns NULL - if there is an error in parsing either buffer. */ -CENSUSAPI census_context *census_context_decode(const char *buffer, - size_t size); - -/** Distributed traces can have a number of options. */ -enum census_trace_mask_values { - CENSUS_TRACE_MASK_NONE = 0, /** Default, empty flags */ - CENSUS_TRACE_MASK_IS_SAMPLED = 1 /** RPC tracing enabled for this context. */ -}; - -/** Get the current trace mask associated with this context. The value returned - will be the logical OR of census_trace_mask_values values. */ -CENSUSAPI int census_trace_mask(const census_context *context); - -/** Set the trace mask associated with a context. */ -CENSUSAPI void census_set_trace_mask(int trace_mask); - -/** The concept of "operation" is a fundamental concept for Census. In an RPC - system, an operation typically represents a single RPC, or a significant - sub-part thereof (e.g. a single logical "read" RPC to a distributed storage - system might do several other actions in parallel, from looking up metadata - indices to making requests of other services - each of these could be a - sub-operation with the larger RPC operation). Census uses operations for the - following: - - CPU accounting: If enabled, census will measure the thread CPU time - consumed between operation start and end times. - - Active operations: Census will maintain information on all currently - active operations. - - Distributed tracing: Each operation serves as a logical trace span. - - Stats collection: Stats are broken down by operation (e.g. latency - breakdown for each unique RPC path). - - The following functions serve to delineate the start and stop points for - each logical operation. */ - -/** - This structure represents a timestamp as used by census to record the time - at which an operation begins. -*/ -typedef struct { - /** Use gpr_timespec for default implementation. High performance - * implementations should use a cycle-counter based timestamp. */ - gpr_timespec ts; -} census_timestamp; - -/** - Mark the beginning of an RPC operation. The information required to call the - functions to record the start of RPC operations (both client and server) may - not be callable at the true start time of the operation, due to information - not being available (e.g. the census context data will not be available in a - server RPC until at least initial metadata has been processed). To ensure - correct CPU accounting and latency recording, RPC systems can call this - function to get the timestamp of operation beginning. This can later be used - as an argument to census_start_{client,server}_rpc_op(). NB: for correct - CPU accounting, the system must guarantee that the same thread is used - for all request processing after this function is called. - - @return A timestamp representing the operation start time. -*/ -CENSUSAPI census_timestamp census_start_rpc_op_timestamp(void); - -/** - Represent functions to map RPC name ID to service/method names. Census - breaks down all RPC stats by service and method names. We leave the - definition and format of these to the RPC system. For efficiency purposes, - we encode these as a single 64 bit identifier, and allow the RPC system to - provide a structure for functions that can convert these to service and - method strings. - - TODO(aveitch): Instead of providing this as an argument to the rpc_start_op() - functions, maybe it should be set once at census initialization. -*/ -typedef struct { - const char *(*get_rpc_service_name)(int64_t id); - const char *(*get_rpc_method_name)(int64_t id); -} census_rpc_name_info; - -/** - Start a client rpc operation. This function should be called as early in the - client RPC path as possible. This function will create a new context. If - the context argument is non-null, then the new context will inherit all - its properties, with the following changes: - - create a new operation ID for the new context, marking it as a child of - the previous operation. - - use the new RPC path and peer information for tracing and stats - collection purposes, rather than those from the original context - - If the context argument is NULL, then a new root context is created. This - is particularly important for tracing purposes (the trace spans generated - will be unassociated with any other trace spans, except those - downstream). The trace_mask will be used for tracing operations associated - with the new context. - - In some RPC systems (e.g. where load balancing is used), peer information - may not be available at the time the operation starts. In this case, use a - NULL value for peer, and set it later using the - census_set_rpc_client_peer() function. - - @param context The parent context. Can be NULL. - @param rpc_name_id The rpc name identifier to be associated with this RPC. - @param rpc_name_info Used to decode rpc_name_id. - @param peer RPC peer. If not available at the time, NULL can be used, - and a later census_set_rpc_client_peer() call made. - @param trace_mask An OR of census_trace_mask_values values. Only used in - the creation of a new root context (context == NULL). - @param start_time A timestamp returned from census_start_rpc_op_timestamp(). - Can be NULL. Used to set the true time the operation - begins. - - @return A new census context. - */ -CENSUSAPI census_context *census_start_client_rpc_op( - const census_context *context, int64_t rpc_name_id, - const census_rpc_name_info *rpc_name_info, const char *peer, int trace_mask, - const census_timestamp *start_time); - -/** - Add peer information to a context representing a client RPC operation. -*/ -CENSUSAPI void census_set_rpc_client_peer(census_context *context, - const char *peer); - -/** - Start a server RPC operation. Returns a new context to be used in future - census calls. If buffer is non-NULL, then the buffer contents should - represent the client context, as generated by census_context_serialize(). - If buffer is NULL, a new root context is created. - - @param buffer Buffer containing bytes output from census_context_serialize(). - @param rpc_name_id The rpc name identifier to be associated with this RPC. - @param rpc_name_info Used to decode rpc_name_id. - @param peer RPC peer. - @param trace_mask An OR of census_trace_mask_values values. Only used in - the creation of a new root context (buffer == NULL). - @param start_time A timestamp returned from census_start_rpc_op_timestamp(). - Can be NULL. Used to set the true time the operation - begins. - - @return A new census context. - */ -CENSUSAPI census_context *census_start_server_rpc_op( - const char *buffer, int64_t rpc_name_id, - const census_rpc_name_info *rpc_name_info, const char *peer, int trace_mask, - census_timestamp *start_time); - -/** - Start a new, non-RPC operation. In general, this function works very - similarly to census_start_client_rpc_op, with the primary difference being - the replacement of host/path information with the more generic family/name - tags. If the context argument is non-null, then the new context will - inherit all its properties, with the following changes: - - create a new operation ID for the new context, marking it as a child of - the previous operation. - - use the family and name information for tracing and stats collection - purposes, rather than those from the original context - - If the context argument is NULL, then a new root context is created. This - is particularly important for tracing purposes (the trace spans generated - will be unassociated with any other trace spans, except those - downstream). The trace_mask will be used for tracing - operations associated with the new context. - - @param context The base context. Can be NULL. - @param family Family name to associate with the trace - @param name Name within family to associate with traces/stats - @param trace_mask An OR of census_trace_mask_values values. Only used if - context is NULL. - - @return A new census context. - */ -CENSUSAPI census_context *census_start_op(census_context *context, - const char *family, const char *name, - int trace_mask); - -/** - End an operation started by any of the census_start_*_op*() calls. The - context used in this call will no longer be valid once this function - completes. - - @param context Context associated with operation which is ending. - @param status status associated with the operation. Not interpreted by - census. -*/ -CENSUSAPI void census_end_op(census_context *context, int status); - -#define CENSUS_TRACE_RECORD_START_OP ((uint32_t)0) -#define CENSUS_TRACE_RECORD_END_OP ((uint32_t)1) - -/** Insert a trace record into the trace stream. The record consists of an - arbitrary size buffer, the size of which is provided in 'n'. - @param context Trace context - @param type User-defined type to associate with trace entry. - @param buffer Pointer to buffer to use - @param n Number of bytes in buffer -*/ -CENSUSAPI void census_trace_print(census_context *context, uint32_t type, - const char *buffer, size_t n); - -/** Trace record. */ -typedef struct { - census_timestamp timestamp; /** Time of record creation */ - uint64_t trace_id; /** Trace ID associated with record */ - uint64_t op_id; /** Operation ID associated with record */ - uint32_t type; /** Type (as used in census_trace_print() */ - const char *buffer; /** Buffer (from census_trace_print() */ - size_t buf_size; /** Number of bytes inside buffer */ -} census_trace_record; - -/** Start a scan of existing trace records. While a scan is ongoing, addition - of new trace records will be blocked if the underlying trace buffers - fill up, so trace processing systems should endeavor to complete - reading as soon as possible. - @param consume if non-zero, indicates that reading records also "consumes" - the previously read record - i.e. releases space in the trace log - while scanning is ongoing. - @returns 0 on success, non-zero on failure (e.g. if a scan is already ongoing) -*/ -CENSUSAPI int census_trace_scan_start(int consume); - -/** Get a trace record. The data pointed to by the trace buffer is guaranteed - stable until the next census_get_trace_record() call (if the consume - argument to census_trace_scan_start was non-zero) or census_trace_scan_end() - is called (otherwise). - @param trace_record structure that will be filled in with oldest trace record. - @returns -1 if an error occurred (e.g. no previous call to - census_trace_scan_start()), 0 if there is no more trace data (and - trace_record will not be modified) or 1 otherwise. -*/ -CENSUSAPI int census_get_trace_record(census_trace_record *trace_record); - -/** End a scan previously started by census_trace_scan_start() */ -CENSUSAPI void census_trace_scan_end(); - -/** Core stats collection API's. The following concepts are used: - * Resource: Users record measurements for a single resource. Examples - include RPC latency, CPU seconds consumed, and bytes transmitted. - * Aggregation: An aggregation of a set of measurements. Census supports the - following aggregation types: - * Distribution - statistical distribution information, used for - recording average, standard deviation etc. Can include a histogram. - * Interval - a count of events that happen in a rolling time window. - * View: A view is a combination of a Resource, a set of tag keys and an - Aggregation. When a measurement for a Resource matches the View tags, it is - recorded (for each unique set of tag values) using the Aggregation type. - Each resource can have an arbitrary number of views by which it will be - broken down. - - Census uses protos to define each of the above, and output results. This - ensures unification across the different language and runtime - implementations. The proto definitions can be found in src/proto/census. -*/ - -/** Define a new resource. `resource_pb` should contain an encoded Resource - protobuf, `resource_pb_size` being the size of the buffer. Returns a -ve - value on error, or a positive (>= 0) resource id (for use in - census_delete_resource() and census_record_values()). In order to be valid, a - resource must have a name, and at least one numerator in its unit type. The - resource name must be unique, and an error will be returned if it is not. */ -CENSUSAPI int32_t census_define_resource(const uint8_t *resource_pb, - size_t resource_pb_size); - -/** Delete a resource created by census_define_resource(). */ -CENSUSAPI void census_delete_resource(int32_t resource_id); - -/** Determine the id of a resource, given its name. returns -1 if the resource - does not exist. */ -CENSUSAPI int32_t census_resource_id(const char *name); - -/** A single value to be recorded comprises two parts: an ID for the particular - * resource and the value to be recorded against it. */ -typedef struct { - int32_t resource_id; - double value; -} census_value; - -/** Record new usage values against the given context. */ -CENSUSAPI void census_record_values(census_context *context, - census_value *values, size_t nvalues); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_CENSUS_H */ diff --git a/winx64/include/grpc/compression.h b/winx64/include/grpc/compression.h deleted file mode 100644 index d47074c9..00000000 --- a/winx64/include/grpc/compression.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - * 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_COMPRESSION_H -#define GRPC_COMPRESSION_H - -#include - -#include - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Parses the first \a name_length bytes of \a name as a - * grpc_compression_algorithm instance, updating \a algorithm. Returns 1 upon - * success, 0 otherwise. */ -GRPCAPI int grpc_compression_algorithm_parse( - grpc_slice value, grpc_compression_algorithm *algorithm); - -/** Updates \a name with the encoding name corresponding to a valid \a - * algorithm. Note that \a name is statically allocated and must *not* be freed. - * Returns 1 upon success, 0 otherwise. */ -GRPCAPI int grpc_compression_algorithm_name( - grpc_compression_algorithm algorithm, char **name); - -/** Returns the compression algorithm corresponding to \a level for the - * compression algorithms encoded in the \a accepted_encodings bitset. - * - * It abort()s for unknown levels . */ -GRPCAPI grpc_compression_algorithm grpc_compression_algorithm_for_level( - grpc_compression_level level, uint32_t accepted_encodings); - -GRPCAPI void grpc_compression_options_init(grpc_compression_options *opts); - -/** Mark \a algorithm as enabled in \a opts. */ -GRPCAPI void grpc_compression_options_enable_algorithm( - grpc_compression_options *opts, grpc_compression_algorithm algorithm); - -/** Mark \a algorithm as disabled in \a opts. */ -GRPCAPI void grpc_compression_options_disable_algorithm( - grpc_compression_options *opts, grpc_compression_algorithm algorithm); - -/** Returns true if \a algorithm is marked as enabled in \a opts. */ -GRPCAPI int grpc_compression_options_is_algorithm_enabled( - const grpc_compression_options *opts, grpc_compression_algorithm algorithm); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_COMPRESSION_H */ diff --git a/winx64/include/grpc/grpc.h b/winx64/include/grpc/grpc.h deleted file mode 100644 index 943d6e48..00000000 --- a/winx64/include/grpc/grpc.h +++ /dev/null @@ -1,450 +0,0 @@ -/* - * - * Copyright 2015-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. - * - */ - -#ifndef GRPC_GRPC_H -#define GRPC_GRPC_H - -#include - -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/*! \mainpage GRPC Core - * - * The GRPC Core library is a low-level library designed to be wrapped by higher - * level libraries. The top-level API is provided in grpc.h. Security related - * functionality lives in grpc_security.h. - */ - -GRPCAPI void grpc_metadata_array_init(grpc_metadata_array *array); -GRPCAPI void grpc_metadata_array_destroy(grpc_metadata_array *array); - -GRPCAPI void grpc_call_details_init(grpc_call_details *details); -GRPCAPI void grpc_call_details_destroy(grpc_call_details *details); - -/** Registers a plugin to be initialized and destroyed with the library. - - The \a init and \a destroy functions will be invoked as part of - \a grpc_init() and \a grpc_shutdown(), respectively. - Note that these functions can be invoked an arbitrary number of times - (and hence so will \a init and \a destroy). - It is safe to pass NULL to either argument. Plugins are destroyed in - the reverse order they were initialized. */ -GRPCAPI void grpc_register_plugin(void (*init)(void), void (*destroy)(void)); - -/** Initialize the grpc library. - - It is not safe to call any other grpc functions before calling this. - (To avoid overhead, little checking is done, and some things may work. We - do not warrant that they will continue to do so in future revisions of this - library). */ -GRPCAPI void grpc_init(void); - -/** Shut down the grpc library. - - No memory is used by grpc after this call returns, nor are any instructions - executing within the grpc library. - Prior to calling, all application owned grpc objects must have been - destroyed. */ -GRPCAPI void grpc_shutdown(void); - -/** Return a string representing the current version of grpc */ -GRPCAPI const char *grpc_version_string(void); - -/** Return a string specifying what the 'g' in gRPC stands for */ -GRPCAPI const char *grpc_g_stands_for(void); - -/** Returns the completion queue factory based on the attributes. MAY return a - NULL if no factory can be found */ -GRPCAPI const grpc_completion_queue_factory * -grpc_completion_queue_factory_lookup( - const grpc_completion_queue_attributes *attributes); - -/** Helper function to create a completion queue with grpc_cq_completion_type - of GRPC_CQ_NEXT and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING */ -GRPCAPI grpc_completion_queue *grpc_completion_queue_create_for_next( - void *reserved); - -/** Helper function to create a completion queue with grpc_cq_completion_type - of GRPC_CQ_PLUCK and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING */ -GRPCAPI grpc_completion_queue *grpc_completion_queue_create_for_pluck( - void *reserved); - -/** Create a completion queue */ -GRPCAPI grpc_completion_queue *grpc_completion_queue_create( - const grpc_completion_queue_factory *factory, - const grpc_completion_queue_attributes *attributes, void *reserved); - -/** Blocks until an event is available, the completion queue is being shut down, - or deadline is reached. - - Returns a grpc_event with type GRPC_QUEUE_TIMEOUT on timeout, - otherwise a grpc_event describing the event that occurred. - - Callers must not call grpc_completion_queue_next and - grpc_completion_queue_pluck simultaneously on the same completion queue. */ -GRPCAPI grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, - gpr_timespec deadline, - void *reserved); - -/** Blocks until an event with tag 'tag' is available, the completion queue is - being shutdown or deadline is reached. - - Returns a grpc_event with type GRPC_QUEUE_TIMEOUT on timeout, - otherwise a grpc_event describing the event that occurred. - - Callers must not call grpc_completion_queue_next and - grpc_completion_queue_pluck simultaneously on the same completion queue. - - Completion queues support a maximum of GRPC_MAX_COMPLETION_QUEUE_PLUCKERS - concurrently executing plucks at any time. */ -GRPCAPI grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cq, - void *tag, gpr_timespec deadline, - void *reserved); - -/** Maximum number of outstanding grpc_completion_queue_pluck executions per - completion queue */ -#define GRPC_MAX_COMPLETION_QUEUE_PLUCKERS 6 - -/** Begin destruction of a completion queue. Once all possible events are - drained then grpc_completion_queue_next will start to produce - GRPC_QUEUE_SHUTDOWN events only. At that point it's safe to call - grpc_completion_queue_destroy. - - After calling this function applications should ensure that no - NEW work is added to be published on this completion queue. */ -GRPCAPI void grpc_completion_queue_shutdown(grpc_completion_queue *cq); - -/** Destroy a completion queue. The caller must ensure that the queue is - drained and no threads are executing grpc_completion_queue_next */ -GRPCAPI void grpc_completion_queue_destroy(grpc_completion_queue *cq); - -/** Create a completion queue alarm instance associated to \a cq. - * - * Once the alarm expires (at \a deadline) or it's cancelled (see \a - * grpc_alarm_cancel), an event with tag \a tag will be added to \a cq. If the - * alarm expired, the event's success bit will be true, false otherwise (ie, - * upon cancellation). */ -GRPCAPI grpc_alarm *grpc_alarm_create(grpc_completion_queue *cq, - gpr_timespec deadline, void *tag); - -/** Cancel a completion queue alarm. Calling this function over an alarm that - * has already fired has no effect. */ -GRPCAPI void grpc_alarm_cancel(grpc_alarm *alarm); - -/** Destroy the given completion queue alarm, cancelling it in the process. */ -GRPCAPI void grpc_alarm_destroy(grpc_alarm *alarm); - -/** Check the connectivity state of a channel. */ -GRPCAPI grpc_connectivity_state grpc_channel_check_connectivity_state( - grpc_channel *channel, int try_to_connect); - -/** Number of active "external connectivity state watchers" attached to a - * channel. - * Useful for testing. **/ -GRPCAPI int grpc_channel_num_external_connectivity_watchers( - grpc_channel *channel); - -/** Watch for a change in connectivity state. - Once the channel connectivity state is different from last_observed_state, - tag will be enqueued on cq with success=1. - If deadline expires BEFORE the state is changed, tag will be enqueued on cq - with success=0. */ -GRPCAPI void grpc_channel_watch_connectivity_state( - grpc_channel *channel, grpc_connectivity_state last_observed_state, - gpr_timespec deadline, grpc_completion_queue *cq, void *tag); - -/** Create a call given a grpc_channel, in order to call 'method'. All - completions are sent to 'completion_queue'. 'method' and 'host' need only - live through the invocation of this function. - If parent_call is non-NULL, it must be a server-side call. It will be used - to propagate properties from the server call to this new client call, - depending on the value of \a propagation_mask (see propagation_bits.h for - possible values). */ -GRPCAPI grpc_call *grpc_channel_create_call( - grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, - grpc_completion_queue *completion_queue, grpc_slice method, - const grpc_slice *host, gpr_timespec deadline, void *reserved); - -/** Ping the channels peer (load balanced channels will select one sub-channel - to ping); if the channel is not connected, posts a failed. */ -GRPCAPI void grpc_channel_ping(grpc_channel *channel, grpc_completion_queue *cq, - void *tag, void *reserved); - -/** Pre-register a method/host pair on a channel. */ -GRPCAPI void *grpc_channel_register_call(grpc_channel *channel, - const char *method, const char *host, - void *reserved); - -/** Create a call given a handle returned from grpc_channel_register_call. - \sa grpc_channel_create_call. */ -GRPCAPI grpc_call *grpc_channel_create_registered_call( - grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, - grpc_completion_queue *completion_queue, void *registered_call_handle, - gpr_timespec deadline, void *reserved); - -/** Allocate memory in the grpc_call arena: this memory is automatically - discarded at call completion */ -GRPCAPI void *grpc_call_arena_alloc(grpc_call *call, size_t size); - -/** Start a batch of operations defined in the array ops; when complete, post a - completion of type 'tag' to the completion queue bound to the call. - The order of ops specified in the batch has no significance. - Only one operation of each type can be active at once in any given - batch. - If a call to grpc_call_start_batch returns GRPC_CALL_OK you must call - grpc_completion_queue_next or grpc_completion_queue_pluck on the completion - queue associated with 'call' for work to be performed. If a call to - grpc_call_start_batch returns any value other than GRPC_CALL_OK it is - guaranteed that no state associated with 'call' is changed and it is not - appropriate to call grpc_completion_queue_next or - grpc_completion_queue_pluck consequent to the failed grpc_call_start_batch - call. - THREAD SAFETY: access to grpc_call_start_batch in multi-threaded environment - needs to be synchronized. As an optimization, you may synchronize batches - containing just send operations independently from batches containing just - receive operations. */ -GRPCAPI grpc_call_error grpc_call_start_batch(grpc_call *call, - const grpc_op *ops, size_t nops, - void *tag, void *reserved); - -/** Returns a newly allocated string representing the endpoint to which this - call is communicating with. The string is in the uri format accepted by - grpc_channel_create. - The returned string should be disposed of with gpr_free(). - - WARNING: this value is never authenticated or subject to any security - related code. It must not be used for any authentication related - functionality. Instead, use grpc_auth_context. */ -GRPCAPI char *grpc_call_get_peer(grpc_call *call); - -struct census_context; - -/** Set census context for a call; Must be called before first call to - grpc_call_start_batch(). */ -GRPCAPI void grpc_census_call_set_context(grpc_call *call, - struct census_context *context); - -/** Retrieve the calls current census context. */ -GRPCAPI struct census_context *grpc_census_call_get_context(grpc_call *call); - -/** Return a newly allocated string representing the target a channel was - created for. */ -GRPCAPI char *grpc_channel_get_target(grpc_channel *channel); - -/** Request info about the channel. - \a channel_info indicates what information is being requested and - how that information will be returned. - \a channel_info is owned by the caller. */ -GRPCAPI void grpc_channel_get_info(grpc_channel *channel, - const grpc_channel_info *channel_info); - -/** Create a client channel to 'target'. Additional channel level configuration - MAY be provided by grpc_channel_args, though the expectation is that most - clients will want to simply pass NULL. See grpc_channel_args definition for - more on this. The data in 'args' need only live through the invocation of - this function. */ -GRPCAPI grpc_channel *grpc_insecure_channel_create( - const char *target, const grpc_channel_args *args, void *reserved); - -/** Create a lame client: this client fails every operation attempted on it. */ -GRPCAPI grpc_channel *grpc_lame_client_channel_create( - const char *target, grpc_status_code error_code, const char *error_message); - -/** Close and destroy a grpc channel */ -GRPCAPI void grpc_channel_destroy(grpc_channel *channel); - -/** Error handling for grpc_call - Most grpc_call functions return a grpc_error. If the error is not GRPC_OK - then the operation failed due to some unsatisfied precondition. - If a grpc_call fails, it's guaranteed that no change to the call state - has been made. */ - -/** Called by clients to cancel an RPC on the server. - Can be called multiple times, from any thread. - THREAD-SAFETY grpc_call_cancel and grpc_call_cancel_with_status - are thread-safe, and can be called at any point before grpc_call_unref - is called.*/ -GRPCAPI grpc_call_error grpc_call_cancel(grpc_call *call, void *reserved); - -/** Called by clients to cancel an RPC on the server. - Can be called multiple times, from any thread. - If a status has not been received for the call, set it to the status code - and description passed in. - Importantly, this function does not send status nor description to the - remote endpoint. - Note that \a description doesn't need be a static string. - It doesn't need to be alive after the call to - grpc_call_cancel_with_status completes. - */ -GRPCAPI grpc_call_error grpc_call_cancel_with_status(grpc_call *call, - grpc_status_code status, - const char *description, - void *reserved); - -/** Ref a call. - THREAD SAFETY: grpc_call_unref is thread-compatible */ -GRPCAPI void grpc_call_ref(grpc_call *call); - -/** Unref a call. - THREAD SAFETY: grpc_call_unref is thread-compatible */ -GRPCAPI void grpc_call_unref(grpc_call *call); - -/** Request notification of a new call. - Once a call is received, a notification tagged with \a tag_new is added to - \a cq_for_notification. \a call, \a details and \a request_metadata are - updated with the appropriate call information. \a cq_bound_to_call is bound - to \a call, and batch operation notifications for that call will be posted - to \a cq_bound_to_call. - Note that \a cq_for_notification must have been registered to the server via - \a grpc_server_register_completion_queue. */ -GRPCAPI grpc_call_error grpc_server_request_call( - grpc_server *server, grpc_call **call, grpc_call_details *details, - grpc_metadata_array *request_metadata, - grpc_completion_queue *cq_bound_to_call, - grpc_completion_queue *cq_for_notification, void *tag_new); - -/** How to handle payloads for a registered method */ -typedef enum { - /** Don't try to read the payload */ - GRPC_SRM_PAYLOAD_NONE, - /** Read the initial payload as a byte buffer */ - GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER -} grpc_server_register_method_payload_handling; - -/** Registers a method in the server. - Methods to this (host, method) pair will not be reported by - grpc_server_request_call, but instead be reported by - grpc_server_request_registered_call when passed the appropriate - registered_method (as returned by this function). - Must be called before grpc_server_start. - Returns NULL on failure. */ -GRPCAPI void *grpc_server_register_method( - grpc_server *server, const char *method, const char *host, - grpc_server_register_method_payload_handling payload_handling, - uint32_t flags); - -/** Request notification of a new pre-registered call. 'cq_for_notification' - must have been registered to the server via - grpc_server_register_completion_queue. */ -GRPCAPI grpc_call_error grpc_server_request_registered_call( - grpc_server *server, void *registered_method, grpc_call **call, - gpr_timespec *deadline, grpc_metadata_array *request_metadata, - grpc_byte_buffer **optional_payload, - grpc_completion_queue *cq_bound_to_call, - grpc_completion_queue *cq_for_notification, void *tag_new); - -/** Create a server. Additional configuration for each incoming channel can - be specified with args. If no additional configuration is needed, args can - be NULL. See grpc_channel_args for more. The data in 'args' need only live - through the invocation of this function. */ -GRPCAPI grpc_server *grpc_server_create(const grpc_channel_args *args, - void *reserved); - -/** Register a completion queue with the server. Must be done for any - notification completion queue that is passed to grpc_server_request_*_call - and to grpc_server_shutdown_and_notify. Must be performed prior to - grpc_server_start. */ -GRPCAPI void grpc_server_register_completion_queue(grpc_server *server, - grpc_completion_queue *cq, - void *reserved); - -/** Add a HTTP2 over plaintext over tcp listener. - Returns bound port number on success, 0 on failure. - REQUIRES: server not started */ -GRPCAPI int grpc_server_add_insecure_http2_port(grpc_server *server, - const char *addr); - -/** Start a server - tells all listeners to start listening */ -GRPCAPI void grpc_server_start(grpc_server *server); - -/** Begin shutting down a server. - After completion, no new calls or connections will be admitted. - Existing calls will be allowed to complete. - Send a GRPC_OP_COMPLETE event when there are no more calls being serviced. - Shutdown is idempotent, and all tags will be notified at once if multiple - grpc_server_shutdown_and_notify calls are made. 'cq' must have been - registered to this server via grpc_server_register_completion_queue. */ -GRPCAPI void grpc_server_shutdown_and_notify(grpc_server *server, - grpc_completion_queue *cq, - void *tag); - -/** Cancel all in-progress calls. - Only usable after shutdown. */ -GRPCAPI void grpc_server_cancel_all_calls(grpc_server *server); - -/** Destroy a server. - Shutdown must have completed beforehand (i.e. all tags generated by - grpc_server_shutdown_and_notify must have been received, and at least - one call to grpc_server_shutdown_and_notify must have been made). */ -GRPCAPI void grpc_server_destroy(grpc_server *server); - -/** Enable or disable a tracer. - - Tracers (usually controlled by the environment variable GRPC_TRACE) - allow printf-style debugging on GRPC internals, and are useful for - tracking down problems in the field. - - Use of this function is not strictly thread-safe, but the - thread-safety issues raised by it should not be of concern. */ -GRPCAPI int grpc_tracer_set_enabled(const char *name, int enabled); - -/** Check whether a metadata key is legal (will be accepted by core) */ -GRPCAPI int grpc_header_key_is_legal(grpc_slice slice); - -/** Check whether a non-binary metadata value is legal (will be accepted by - core) */ -GRPCAPI int grpc_header_nonbin_value_is_legal(grpc_slice slice); - -/** Check whether a metadata key corresponds to a binary value */ -GRPCAPI int grpc_is_binary_header(grpc_slice slice); - -/** Convert grpc_call_error values to a string */ -GRPCAPI const char *grpc_call_error_to_string(grpc_call_error error); - -/** Create a buffer pool */ -GRPCAPI grpc_resource_quota *grpc_resource_quota_create(const char *trace_name); - -/** Add a reference to a buffer pool */ -GRPCAPI void grpc_resource_quota_ref(grpc_resource_quota *resource_quota); - -/** Drop a reference to a buffer pool */ -GRPCAPI void grpc_resource_quota_unref(grpc_resource_quota *resource_quota); - -/** Update the size of a buffer pool */ -GRPCAPI void grpc_resource_quota_resize(grpc_resource_quota *resource_quota, - size_t new_size); - -/** Fetch a vtable for a grpc_channel_arg that points to a grpc_resource_quota - */ -GRPCAPI const grpc_arg_pointer_vtable *grpc_resource_quota_arg_vtable(void); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_H */ diff --git a/winx64/include/grpc/grpc_cronet.h b/winx64/include/grpc/grpc_cronet.h deleted file mode 100644 index 44330c6e..00000000 --- a/winx64/include/grpc/grpc_cronet.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_GRPC_CRONET_H -#define GRPC_GRPC_CRONET_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -GRPCAPI grpc_channel *grpc_cronet_secure_channel_create( - void *engine, const char *target, const grpc_channel_args *args, - void *reserved); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_CRONET_H */ diff --git a/winx64/include/grpc/grpc_posix.h b/winx64/include/grpc/grpc_posix.h deleted file mode 100644 index c7429eae..00000000 --- a/winx64/include/grpc/grpc_posix.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_GRPC_POSIX_H -#define GRPC_GRPC_POSIX_H - -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/*! \mainpage GRPC Core POSIX - * - * The GRPC Core POSIX library provides some POSIX-specific low-level - * functionality on top of GRPC Core. - */ - -/** Create a client channel to 'target' using file descriptor 'fd'. The 'target' - argument will be used to indicate the name for this channel. See the comment - for grpc_insecure_channel_create for description of 'args' argument. */ -GRPCAPI grpc_channel *grpc_insecure_channel_create_from_fd( - const char *target, int fd, const grpc_channel_args *args); - -/** Add the connected communication channel based on file descriptor 'fd' to the - 'server'. The 'fd' must be an open file descriptor corresponding to a - connected socket. Events from the file descriptor may come on any of the - server completion queues (i.e completion queues registered via the - grpc_server_register_completion_queue API). - - The 'reserved' pointer MUST be NULL. - */ -GRPCAPI void grpc_server_add_insecure_channel_from_fd(grpc_server *server, - void *reserved, int fd); - -/** GRPC Core POSIX library may internally use signals to optimize some work. - The library uses (SIGRTMIN + 6) signal by default. Use this API to instruct - the library to use a different signal i.e 'signum' instead. - Note: - - To prevent GRPC library from using any signals, pass a 'signum' of -1 - - This API is optional but if called, it MUST be called before grpc_init() */ -GRPCAPI void grpc_use_signal(int signum); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_POSIX_H */ diff --git a/winx64/include/grpc/grpc_security.h b/winx64/include/grpc/grpc_security.h deleted file mode 100644 index 2005e25d..00000000 --- a/winx64/include/grpc/grpc_security.h +++ /dev/null @@ -1,375 +0,0 @@ -/* - * - * 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_GRPC_SECURITY_H -#define GRPC_GRPC_SECURITY_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** --- Authentication Context. --- */ - -typedef struct grpc_auth_context grpc_auth_context; - -typedef struct grpc_auth_property_iterator { - const grpc_auth_context *ctx; - size_t index; - const char *name; -} grpc_auth_property_iterator; - -/** value, if not NULL, is guaranteed to be NULL terminated. */ -typedef struct grpc_auth_property { - char *name; - char *value; - size_t value_length; -} grpc_auth_property; - -/** Returns NULL when the iterator is at the end. */ -GRPCAPI const grpc_auth_property *grpc_auth_property_iterator_next( - grpc_auth_property_iterator *it); - -/** Iterates over the auth context. */ -GRPCAPI grpc_auth_property_iterator -grpc_auth_context_property_iterator(const grpc_auth_context *ctx); - -/** Gets the peer identity. Returns an empty iterator (first _next will return - NULL) if the peer is not authenticated. */ -GRPCAPI grpc_auth_property_iterator -grpc_auth_context_peer_identity(const grpc_auth_context *ctx); - -/** Finds a property in the context. May return an empty iterator (first _next - will return NULL) if no property with this name was found in the context. */ -GRPCAPI grpc_auth_property_iterator grpc_auth_context_find_properties_by_name( - const grpc_auth_context *ctx, const char *name); - -/** Gets the name of the property that indicates the peer identity. Will return - NULL if the peer is not authenticated. */ -GRPCAPI const char *grpc_auth_context_peer_identity_property_name( - const grpc_auth_context *ctx); - -/** Returns 1 if the peer is authenticated, 0 otherwise. */ -GRPCAPI int grpc_auth_context_peer_is_authenticated( - const grpc_auth_context *ctx); - -/** Gets the auth context from the call. Caller needs to call - grpc_auth_context_release on the returned context. */ -GRPCAPI grpc_auth_context *grpc_call_auth_context(grpc_call *call); - -/** Releases the auth context returned from grpc_call_auth_context. */ -GRPCAPI void grpc_auth_context_release(grpc_auth_context *context); - -/** -- - The following auth context methods should only be called by a server metadata - processor to set properties extracted from auth metadata. - -- */ - -/** Add a property. */ -GRPCAPI void grpc_auth_context_add_property(grpc_auth_context *ctx, - const char *name, const char *value, - size_t value_length); - -/** Add a C string property. */ -GRPCAPI void grpc_auth_context_add_cstring_property(grpc_auth_context *ctx, - const char *name, - const char *value); - -/** Sets the property name. Returns 1 if successful or 0 in case of failure - (which means that no property with this name exists). */ -GRPCAPI int grpc_auth_context_set_peer_identity_property_name( - grpc_auth_context *ctx, const char *name); - -/** --- grpc_channel_credentials object. --- - - A channel credentials object represents a way to authenticate a client on a - channel. */ - -typedef struct grpc_channel_credentials grpc_channel_credentials; - -/** Releases a channel credentials object. - The creator of the credentials object is responsible for its release. */ -GRPCAPI void grpc_channel_credentials_release(grpc_channel_credentials *creds); - -/** Creates default credentials to connect to a google gRPC service. - WARNING: Do NOT use this credentials to connect to a non-google service as - this could result in an oauth2 token leak. */ -GRPCAPI grpc_channel_credentials *grpc_google_default_credentials_create(void); - -/** Callback for getting the SSL roots override from the application. - In case of success, *pem_roots_certs must be set to a NULL terminated string - containing the list of PEM encoded root certificates. The ownership is passed - to the core and freed (laster by the core) with gpr_free. - If this function fails and GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment is - set to a valid path, it will override the roots specified this func */ -typedef grpc_ssl_roots_override_result (*grpc_ssl_roots_override_callback)( - char **pem_root_certs); - -/** Setup a callback to override the default TLS/SSL roots. - This function is not thread-safe and must be called at initialization time - before any ssl credentials are created to have the desired side effect. - If GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment is set to a valid path, the - callback will not be called. */ -GRPCAPI void grpc_set_ssl_roots_override_callback( - grpc_ssl_roots_override_callback cb); - -/** Object that holds a private key / certificate chain pair in PEM format. */ -typedef struct { - /** private_key is the NULL-terminated string containing the PEM encoding of - the client's private key. */ - const char *private_key; - - /** cert_chain is the NULL-terminated string containing the PEM encoding of - the client's certificate chain. */ - const char *cert_chain; -} grpc_ssl_pem_key_cert_pair; - -/** Creates an SSL credentials object. - - pem_root_certs is the NULL-terminated string containing the PEM encoding - of the server root certificates. If this parameter is NULL, the - implementation will first try to dereference the file pointed by the - GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable, and if that fails, - try to get the roots set by grpc_override_ssl_default_roots. Eventually, - if all these fail, it will try to get the roots from a well-known place on - disk (in the grpc install directory). - - pem_key_cert_pair is a pointer on the object containing client's private - key and certificate chain. This parameter can be NULL if the client does - not have such a key/cert pair. */ -GRPCAPI grpc_channel_credentials *grpc_ssl_credentials_create( - const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair, - void *reserved); - -/** --- grpc_call_credentials object. - - A call credentials object represents a way to authenticate on a particular - call. These credentials can be composed with a channel credentials object - so that they are sent with every call on this channel. */ - -typedef struct grpc_call_credentials grpc_call_credentials; - -/** Releases a call credentials object. - The creator of the credentials object is responsible for its release. */ -GRPCAPI void grpc_call_credentials_release(grpc_call_credentials *creds); - -/** Creates a composite channel credentials object. */ -GRPCAPI grpc_channel_credentials *grpc_composite_channel_credentials_create( - grpc_channel_credentials *channel_creds, grpc_call_credentials *call_creds, - void *reserved); - -/** Creates a composite call credentials object. */ -GRPCAPI grpc_call_credentials *grpc_composite_call_credentials_create( - grpc_call_credentials *creds1, grpc_call_credentials *creds2, - void *reserved); - -/** Creates a compute engine credentials object for connecting to Google. - WARNING: Do NOT use this credentials to connect to a non-google service as - this could result in an oauth2 token leak. */ -GRPCAPI grpc_call_credentials *grpc_google_compute_engine_credentials_create( - void *reserved); - -GRPCAPI gpr_timespec grpc_max_auth_token_lifetime(); - -/** Creates a JWT credentials object. May return NULL if the input is invalid. - - json_key is the JSON key string containing the client's private key. - - token_lifetime is the lifetime of each Json Web Token (JWT) created with - this credentials. It should not exceed grpc_max_auth_token_lifetime or - will be cropped to this value. */ -GRPCAPI grpc_call_credentials * -grpc_service_account_jwt_access_credentials_create(const char *json_key, - gpr_timespec token_lifetime, - void *reserved); - -/** Creates an Oauth2 Refresh Token credentials object for connecting to Google. - May return NULL if the input is invalid. - WARNING: Do NOT use this credentials to connect to a non-google service as - this could result in an oauth2 token leak. - - json_refresh_token is the JSON string containing the refresh token itself - along with a client_id and client_secret. */ -GRPCAPI grpc_call_credentials *grpc_google_refresh_token_credentials_create( - const char *json_refresh_token, void *reserved); - -/** Creates an Oauth2 Access Token credentials with an access token that was - aquired by an out of band mechanism. */ -GRPCAPI grpc_call_credentials *grpc_access_token_credentials_create( - const char *access_token, void *reserved); - -/** Creates an IAM credentials object for connecting to Google. */ -GRPCAPI grpc_call_credentials *grpc_google_iam_credentials_create( - const char *authorization_token, const char *authority_selector, - void *reserved); - -/** Callback function to be called by the metadata credentials plugin - implementation when the metadata is ready. - - user_data is the opaque pointer that was passed in the get_metadata method - of the grpc_metadata_credentials_plugin (see below). - - creds_md is an array of credentials metadata produced by the plugin. It - may be set to NULL in case of an error. - - num_creds_md is the number of items in the creds_md array. - - status must be GRPC_STATUS_OK in case of success or another specific error - code otherwise. - - error_details contains details about the error if any. In case of success - it should be NULL and will be otherwise ignored. */ -typedef void (*grpc_credentials_plugin_metadata_cb)( - void *user_data, const grpc_metadata *creds_md, size_t num_creds_md, - grpc_status_code status, const char *error_details); - -/** Context that can be used by metadata credentials plugin in order to create - auth related metadata. */ -typedef struct { - /** The fully qualifed service url. */ - const char *service_url; - - /** The method name of the RPC being called (not fully qualified). - The fully qualified method name can be built from the service_url: - full_qualified_method_name = ctx->service_url + '/' + ctx->method_name. */ - const char *method_name; - - /** The auth_context of the channel which gives the server's identity. */ - const grpc_auth_context *channel_auth_context; - - /** Reserved for future use. */ - void *reserved; -} grpc_auth_metadata_context; - -/** grpc_metadata_credentials plugin is an API user provided structure used to - create grpc_credentials objects that can be set on a channel (composed) or - a call. See grpc_credentials_metadata_create_from_plugin below. - The grpc client stack will call the get_metadata method of the plugin for - every call in scope for the credentials created from it. */ -typedef struct { - /** The implementation of this method has to be non-blocking. - - context is the information that can be used by the plugin to create auth - metadata. - - cb is the callback that needs to be called when the metadata is ready. - - user_data needs to be passed as the first parameter of the callback. */ - void (*get_metadata)(void *state, grpc_auth_metadata_context context, - grpc_credentials_plugin_metadata_cb cb, void *user_data); - - /** Destroys the plugin state. */ - void (*destroy)(void *state); - - /** State that will be set as the first parameter of the methods above. */ - void *state; - - /** Type of credentials that this plugin is implementing. */ - const char *type; -} grpc_metadata_credentials_plugin; - -/** Creates a credentials object from a plugin. */ -GRPCAPI grpc_call_credentials *grpc_metadata_credentials_create_from_plugin( - grpc_metadata_credentials_plugin plugin, void *reserved); - -/** --- Secure channel creation. --- */ - -/** Creates a secure channel using the passed-in credentials. */ -GRPCAPI grpc_channel *grpc_secure_channel_create( - grpc_channel_credentials *creds, const char *target, - const grpc_channel_args *args, void *reserved); - -/** --- grpc_server_credentials object. --- - - A server credentials object represents a way to authenticate a server. */ - -typedef struct grpc_server_credentials grpc_server_credentials; - -/** Releases a server_credentials object. - The creator of the server_credentials object is responsible for its release. - */ -GRPCAPI void grpc_server_credentials_release(grpc_server_credentials *creds); - -/** Deprecated in favor of grpc_ssl_server_credentials_create_ex. - Creates an SSL server_credentials object. - - pem_roots_cert is the NULL-terminated string containing the PEM encoding of - the client root certificates. This parameter may be NULL if the server does - not want the client to be authenticated with SSL. - - pem_key_cert_pairs is an array private key / certificate chains of the - server. This parameter cannot be NULL. - - num_key_cert_pairs indicates the number of items in the private_key_files - and cert_chain_files parameters. It should be at least 1. - - force_client_auth, if set to non-zero will force the client to authenticate - with an SSL cert. Note that this option is ignored if pem_root_certs is - NULL. */ -GRPCAPI grpc_server_credentials *grpc_ssl_server_credentials_create( - const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, - size_t num_key_cert_pairs, int force_client_auth, void *reserved); - -/** Same as grpc_ssl_server_credentials_create method except uses - grpc_ssl_client_certificate_request_type enum to support more ways to - authenticate client cerificates.*/ -GRPCAPI grpc_server_credentials *grpc_ssl_server_credentials_create_ex( - const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, - size_t num_key_cert_pairs, - grpc_ssl_client_certificate_request_type client_certificate_request, - void *reserved); - -/** --- Server-side secure ports. --- */ - -/** Add a HTTP2 over an encrypted link over tcp listener. - Returns bound port number on success, 0 on failure. - REQUIRES: server not started */ -GRPCAPI int grpc_server_add_secure_http2_port(grpc_server *server, - const char *addr, - grpc_server_credentials *creds); - -/** --- Call specific credentials. --- */ - -/** Sets a credentials to a call. Can only be called on the client side before - grpc_call_start_batch. */ -GRPCAPI grpc_call_error grpc_call_set_credentials(grpc_call *call, - grpc_call_credentials *creds); - -/** --- Auth Metadata Processing --- */ - -/** Callback function that is called when the metadata processing is done. - - Consumed metadata will be removed from the set of metadata available on the - call. consumed_md may be NULL if no metadata has been consumed. - - Response metadata will be set on the response. response_md may be NULL. - - status is GRPC_STATUS_OK for success or a specific status for an error. - Common error status for auth metadata processing is either - GRPC_STATUS_UNAUTHENTICATED in case of an authentication failure or - GRPC_STATUS PERMISSION_DENIED in case of an authorization failure. - - error_details gives details about the error. May be NULL. */ -typedef void (*grpc_process_auth_metadata_done_cb)( - void *user_data, const grpc_metadata *consumed_md, size_t num_consumed_md, - const grpc_metadata *response_md, size_t num_response_md, - grpc_status_code status, const char *error_details); - -/** Pluggable server-side metadata processor object. */ -typedef struct { - /** The context object is read/write: it contains the properties of the - channel peer and it is the job of the process function to augment it with - properties derived from the passed-in metadata. - The lifetime of these objects is guaranteed until cb is invoked. */ - void (*process)(void *state, grpc_auth_context *context, - const grpc_metadata *md, size_t num_md, - grpc_process_auth_metadata_done_cb cb, void *user_data); - void (*destroy)(void *state); - void *state; -} grpc_auth_metadata_processor; - -GRPCAPI void grpc_server_credentials_set_auth_metadata_processor( - grpc_server_credentials *creds, grpc_auth_metadata_processor processor); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_SECURITY_H */ diff --git a/winx64/include/grpc/grpc_security_constants.h b/winx64/include/grpc/grpc_security_constants.h deleted file mode 100644 index fde300df..00000000 --- a/winx64/include/grpc/grpc_security_constants.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_GRPC_SECURITY_CONSTANTS_H -#define GRPC_GRPC_SECURITY_CONSTANTS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME "transport_security_type" -#define GRPC_SSL_TRANSPORT_SECURITY_TYPE "ssl" - -#define GRPC_X509_CN_PROPERTY_NAME "x509_common_name" -#define GRPC_X509_SAN_PROPERTY_NAME "x509_subject_alternative_name" -#define GRPC_X509_PEM_CERT_PROPERTY_NAME "x509_pem_cert" - -/** Environment variable that points to the default SSL roots file. This file - must be a PEM encoded file with all the roots such as the one that can be - downloaded from https://pki.google.com/roots.pem. */ -#define GRPC_DEFAULT_SSL_ROOTS_FILE_PATH_ENV_VAR \ - "GRPC_DEFAULT_SSL_ROOTS_FILE_PATH" - -/** Environment variable that points to the google default application - credentials json key or refresh token. Used in the - grpc_google_default_credentials_create function. */ -#define GRPC_GOOGLE_CREDENTIALS_ENV_VAR "GOOGLE_APPLICATION_CREDENTIALS" - -/** Results for the SSL roots override callback. */ -typedef enum { - GRPC_SSL_ROOTS_OVERRIDE_OK, - GRPC_SSL_ROOTS_OVERRIDE_FAIL_PERMANENTLY, /** Do not try fallback options. */ - GRPC_SSL_ROOTS_OVERRIDE_FAIL -} grpc_ssl_roots_override_result; - -typedef enum { - /** Server does not request client certificate. A client can present a self - signed or signed certificates if it wishes to do so and they would be - accepted. */ - GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE, - /** Server requests client certificate but does not enforce that the client - presents a certificate. - - If the client presents a certificate, the client authentication is left to - the application based on the metadata like certificate etc. - - The key cert pair should still be valid for the SSL connection to be - established. */ - GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_BUT_DONT_VERIFY, - /** Server requests client certificate but does not enforce that the client - presents a certificate. - - If the client presents a certificate, the client authentication is done by - grpc framework (The client needs to either present a signed cert or skip no - certificate for a successful connection). - - The key cert pair should still be valid for the SSL connection to be - established. */ - GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_AND_VERIFY, - /** Server requests client certificate but enforces that the client presents a - certificate. - - If the client presents a certificate, the client authentication is left to - the application based on the metadata like certificate etc. - - The key cert pair should still be valid for the SSL connection to be - established. */ - GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_BUT_DONT_VERIFY, - /** Server requests client certificate but enforces that the client presents a - certificate. - - The cerificate presented by the client is verified by grpc framework (The - client needs to present signed certs for a successful connection). - - The key cert pair should still be valid for the SSL connection to be - established. */ - GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY -} grpc_ssl_client_certificate_request_type; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_GRPC_SECURITY_CONSTANTS_H */ diff --git a/winx64/include/grpc/impl/codegen/atm.h b/winx64/include/grpc/impl/codegen/atm.h deleted file mode 100644 index 2cfd22ab..00000000 --- a/winx64/include/grpc/impl/codegen/atm.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * - * 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_ATM_H -#define GRPC_IMPL_CODEGEN_ATM_H - -/** This interface provides atomic operations and barriers. - It is internal to gpr support code and should not be used outside it. - - If an operation with acquire semantics precedes another memory access by the - same thread, the operation will precede that other access as seen by other - threads. - - If an operation with release semantics follows another memory access by the - same thread, the operation will follow that other access as seen by other - threads. - - Routines with "acq" or "full" in the name have acquire semantics. Routines - with "rel" or "full" in the name have release semantics. Routines with - "no_barrier" in the name have neither acquire not release semantics. - - The routines may be implemented as macros. - - // Atomic operations act on an intergral_type gpr_atm that is guaranteed to - // be the same size as a pointer. - typedef intptr_t gpr_atm; - - // A memory barrier, providing both acquire and release semantics, but not - // otherwise acting on memory. - void gpr_atm_full_barrier(void); - - // Atomically return *p, with acquire semantics. - gpr_atm gpr_atm_acq_load(gpr_atm *p); - - // Atomically set *p = value, with release semantics. - void gpr_atm_rel_store(gpr_atm *p, gpr_atm value); - - // Atomically add delta to *p, and return the old value of *p, with - // the barriers specified. - gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm *p, gpr_atm delta); - gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta); - - // Atomically, if *p==o, set *p=n and return non-zero otherwise return 0, - // with the barriers specified if the operation succeeds. - int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n); - int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n); - int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n); - int gpr_atm_full_cas(gpr_atm *p, gpr_atm o, gpr_atm n); - - // Atomically, set *p=n and return the old value of *p - gpr_atm gpr_atm_full_xchg(gpr_atm *p, gpr_atm n); -*/ - -#include - -#if defined(GPR_GCC_ATOMIC) -#include -#elif defined(GPR_GCC_SYNC) -#include -#elif defined(GPR_WINDOWS_ATOMIC) -#include -#else -#error could not determine platform for atm -#endif - -/** Adds \a delta to \a *value, clamping the result to the range specified - by \a min and \a max. Returns the new value. */ -gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm *value, gpr_atm delta, - gpr_atm min, gpr_atm max); - -#endif /* GRPC_IMPL_CODEGEN_ATM_H */ diff --git a/winx64/include/grpc/impl/codegen/atm_gcc_atomic.h b/winx64/include/grpc/impl/codegen/atm_gcc_atomic.h deleted file mode 100644 index 1793ec22..00000000 --- a/winx64/include/grpc/impl/codegen/atm_gcc_atomic.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * - * 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_ATM_GCC_ATOMIC_H -#define GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H - -/* atm_platform.h for gcc and gcc-like compilers with the - __atomic_* interface. */ -#include - -typedef intptr_t gpr_atm; -#define GPR_ATM_MAX INTPTR_MAX - -#ifdef GPR_LOW_LEVEL_COUNTERS -extern gpr_atm gpr_counter_atm_cas; -extern gpr_atm gpr_counter_atm_add; -#define GPR_ATM_INC_COUNTER(counter) \ - __atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED) -#define GPR_ATM_INC_CAS_THEN(blah) \ - (GPR_ATM_INC_COUNTER(gpr_counter_atm_cas), blah) -#define GPR_ATM_INC_ADD_THEN(blah) \ - (GPR_ATM_INC_COUNTER(gpr_counter_atm_add), blah) -#else -#define GPR_ATM_INC_CAS_THEN(blah) blah -#define GPR_ATM_INC_ADD_THEN(blah) blah -#endif - -#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST)) - -#define gpr_atm_acq_load(p) (__atomic_load_n((p), __ATOMIC_ACQUIRE)) -#define gpr_atm_no_barrier_load(p) (__atomic_load_n((p), __ATOMIC_RELAXED)) -#define gpr_atm_rel_store(p, value) \ - (__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELEASE)) -#define gpr_atm_no_barrier_store(p, value) \ - (__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELAXED)) - -#define gpr_atm_no_barrier_fetch_add(p, delta) \ - GPR_ATM_INC_ADD_THEN( \ - __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED)) -#define gpr_atm_full_fetch_add(p, delta) \ - GPR_ATM_INC_ADD_THEN( \ - __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL)) - -static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { - return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n( - p, &o, n, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED)); -} - -static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { - return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n( - p, &o, n, 0, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)); -} - -static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { - return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n( - p, &o, n, 0, __ATOMIC_RELEASE, __ATOMIC_RELAXED)); -} - -static __inline int gpr_atm_full_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { - return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n( - p, &o, n, 0, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED)); -} - -#define gpr_atm_full_xchg(p, n) \ - GPR_ATM_INC_CAS_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL)) - -#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H */ diff --git a/winx64/include/grpc/impl/codegen/atm_gcc_sync.h b/winx64/include/grpc/impl/codegen/atm_gcc_sync.h deleted file mode 100644 index 27ae0f63..00000000 --- a/winx64/include/grpc/impl/codegen/atm_gcc_sync.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * - * 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_ATM_GCC_SYNC_H -#define GRPC_IMPL_CODEGEN_ATM_GCC_SYNC_H - -/* variant of atm_platform.h for gcc and gcc-like compiers with __sync_* - interface */ -#include - -typedef intptr_t gpr_atm; -#define GPR_ATM_MAX INTPTR_MAX - -#define GPR_ATM_COMPILE_BARRIER_() __asm__ __volatile__("" : : : "memory") - -#if defined(__i386) || defined(__x86_64__) -/* All loads are acquire loads and all stores are release stores. */ -#define GPR_ATM_LS_BARRIER_() GPR_ATM_COMPILE_BARRIER_() -#else -#define GPR_ATM_LS_BARRIER_() gpr_atm_full_barrier() -#endif - -#define gpr_atm_full_barrier() (__sync_synchronize()) - -static __inline gpr_atm gpr_atm_acq_load(const gpr_atm *p) { - gpr_atm value = *p; - GPR_ATM_LS_BARRIER_(); - return value; -} - -static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm *p) { - gpr_atm value = *p; - GPR_ATM_COMPILE_BARRIER_(); - return value; -} - -static __inline void gpr_atm_rel_store(gpr_atm *p, gpr_atm value) { - GPR_ATM_LS_BARRIER_(); - *p = value; -} - -static __inline void gpr_atm_no_barrier_store(gpr_atm *p, gpr_atm value) { - GPR_ATM_COMPILE_BARRIER_(); - *p = value; -} - -#undef GPR_ATM_LS_BARRIER_ -#undef GPR_ATM_COMPILE_BARRIER_ - -#define gpr_atm_no_barrier_fetch_add(p, delta) \ - gpr_atm_full_fetch_add((p), (delta)) -#define gpr_atm_full_fetch_add(p, delta) (__sync_fetch_and_add((p), (delta))) - -#define gpr_atm_no_barrier_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n)) -#define gpr_atm_acq_cas(p, o, n) (__sync_bool_compare_and_swap((p), (o), (n))) -#define gpr_atm_rel_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n)) -#define gpr_atm_full_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n)) - -static __inline gpr_atm gpr_atm_full_xchg(gpr_atm *p, gpr_atm n) { - gpr_atm cur; - do { - cur = gpr_atm_acq_load(p); - } while (!gpr_atm_rel_cas(p, cur, n)); - return cur; -} - -#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_SYNC_H */ diff --git a/winx64/include/grpc/impl/codegen/atm_windows.h b/winx64/include/grpc/impl/codegen/atm_windows.h deleted file mode 100644 index dfcaa4cc..00000000 --- a/winx64/include/grpc/impl/codegen/atm_windows.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * - * 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_ATM_WINDOWS_H -#define GRPC_IMPL_CODEGEN_ATM_WINDOWS_H - -/** Win32 variant of atm_platform.h */ -#include - -typedef intptr_t gpr_atm; -#define GPR_ATM_MAX INTPTR_MAX - -#define gpr_atm_full_barrier MemoryBarrier - -static __inline gpr_atm gpr_atm_acq_load(const gpr_atm *p) { - gpr_atm result = *p; - gpr_atm_full_barrier(); - return result; -} - -static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm *p) { - /* TODO(dklempner): Can we implement something better here? */ - return gpr_atm_acq_load(p); -} - -static __inline void gpr_atm_rel_store(gpr_atm *p, gpr_atm value) { - gpr_atm_full_barrier(); - *p = value; -} - -static __inline void gpr_atm_no_barrier_store(gpr_atm *p, gpr_atm value) { - /* TODO(ctiller): Can we implement something better here? */ - gpr_atm_rel_store(p, value); -} - -static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { -/** InterlockedCompareExchangePointerNoFence() not available on vista or - windows7 */ -#ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeAcquire64( - (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); -#else - return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *)p, - (LONG)n, (LONG)o); -#endif -} - -static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { -#ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeAcquire64( - (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); -#else - return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *)p, - (LONG)n, (LONG)o); -#endif -} - -static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { -#ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeRelease64( - (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); -#else - return o == (gpr_atm)InterlockedCompareExchangeRelease((volatile LONG *)p, - (LONG)n, (LONG)o); -#endif -} - -static __inline int gpr_atm_full_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { -#ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG *)p, - (LONGLONG)n, (LONGLONG)o); -#else - return o == (gpr_atm)InterlockedCompareExchange((volatile LONG *)p, (LONG)n, - (LONG)o); -#endif -} - -static __inline gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm *p, - gpr_atm delta) { - /** Use the CAS operation to get pointer-sized fetch and add */ - gpr_atm old; - do { - old = *p; - } while (!gpr_atm_no_barrier_cas(p, old, old + delta)); - return old; -} - -static __inline gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta) { - /** Use a CAS operation to get pointer-sized fetch and add */ - gpr_atm old; -#ifdef GPR_ARCH_64 - do { - old = *p; - } while (old != (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG *)p, - (LONGLONG)old + delta, - (LONGLONG)old)); -#else - do { - old = *p; - } while (old != (gpr_atm)InterlockedCompareExchange( - (volatile LONG *)p, (LONG)old + delta, (LONG)old)); -#endif - return old; -} - -static __inline gpr_atm gpr_atm_full_xchg(gpr_atm *p, gpr_atm n) { - return (gpr_atm)InterlockedExchangePointer((PVOID *)p, (PVOID)n); -} - -#endif /* GRPC_IMPL_CODEGEN_ATM_WINDOWS_H */ diff --git a/winx64/include/grpc/impl/codegen/byte_buffer_reader.h b/winx64/include/grpc/impl/codegen/byte_buffer_reader.h deleted file mode 100644 index dc0f1549..00000000 --- a/winx64/include/grpc/impl/codegen/byte_buffer_reader.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * - * 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_READER_H -#define GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H - -#ifdef __cplusplus -extern "C" { -#endif - -struct grpc_byte_buffer; - -struct grpc_byte_buffer_reader { - struct grpc_byte_buffer *buffer_in; - struct grpc_byte_buffer *buffer_out; - /** Different current objects correspond to different types of byte buffers */ - union grpc_byte_buffer_reader_current { - /** Index into a slice buffer's array of slices */ - unsigned index; - } current; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H */ diff --git a/winx64/include/grpc/impl/codegen/compression_types.h b/winx64/include/grpc/impl/codegen/compression_types.h deleted file mode 100644 index f1b2de3f..00000000 --- a/winx64/include/grpc/impl/codegen/compression_types.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H -#define GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** To be used as initial metadata key for the request of a concrete compression - * algorithm */ -#define GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY \ - "grpc-internal-encoding-request" - -/** To be used in channel arguments. - * - * \addtogroup grpc_arg_keys - * \{ */ -/** Default compression algorithm for the channel. - * Its value is an int from the \a grpc_compression_algorithm enum. */ -#define GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM \ - "grpc.default_compression_algorithm" -/** Default compression level for the channel. - * Its value is an int from the \a grpc_compression_level enum. */ -#define GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL "grpc.default_compression_level" -/** Compression algorithms supported by the channel. - * Its value is a bitset (an int). Bits correspond to algorithms in \a - * grpc_compression_algorithm. For example, its LSB corresponds to - * GRPC_COMPRESS_NONE, the next bit to GRPC_COMPRESS_DEFLATE, etc. - * Unset bits disable support for the algorithm. By default all algorithms are - * supported. It's not possible to disable GRPC_COMPRESS_NONE (the attempt will - * be ignored). */ -#define GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET \ - "grpc.compression_enabled_algorithms_bitset" -/** \} */ - -/** The various compression algorithms supported by gRPC */ -typedef enum { - GRPC_COMPRESS_NONE = 0, - GRPC_COMPRESS_DEFLATE, - GRPC_COMPRESS_GZIP, - /* TODO(ctiller): snappy */ - GRPC_COMPRESS_ALGORITHMS_COUNT -} grpc_compression_algorithm; - -/** Compression levels allow a party with knowledge of its peer's accepted - * encodings to request compression in an abstract way. The level-algorithm - * mapping is performed internally and depends on the peer's supported - * compression algorithms. */ -typedef enum { - GRPC_COMPRESS_LEVEL_NONE = 0, - GRPC_COMPRESS_LEVEL_LOW, - GRPC_COMPRESS_LEVEL_MED, - GRPC_COMPRESS_LEVEL_HIGH, - GRPC_COMPRESS_LEVEL_COUNT -} grpc_compression_level; - -typedef struct grpc_compression_options { - /** All algs are enabled by default. This option corresponds to the channel - * argument key behind \a GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET - */ - uint32_t enabled_algorithms_bitset; - - /** The default channel compression level. It'll be used in the absence of - * call specific settings. This option corresponds to the channel argument key - * behind \a GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL. If present, takes - * precedence over \a default_algorithm. - * TODO(dgq): currently only available for server channels. */ - struct grpc_compression_options_default_level { - int is_set; - grpc_compression_level level; - } default_level; - - /** The default channel compression algorithm. It'll be used in the absence of - * call specific settings. This option corresponds to the channel argument key - * behind \a GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM. */ - struct grpc_compression_options_default_algorithm { - int is_set; - grpc_compression_algorithm algorithm; - } default_algorithm; - -} grpc_compression_options; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H */ diff --git a/winx64/include/grpc/impl/codegen/connectivity_state.h b/winx64/include/grpc/impl/codegen/connectivity_state.h deleted file mode 100644 index 545b4fdb..00000000 --- a/winx64/include/grpc/impl/codegen/connectivity_state.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H -#define GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** Connectivity state of a channel. */ -typedef enum { - /** channel has just been initialized */ - GRPC_CHANNEL_INIT = -1, - /** channel is idle */ - GRPC_CHANNEL_IDLE, - /** channel is connecting */ - GRPC_CHANNEL_CONNECTING, - /** channel is ready for work */ - GRPC_CHANNEL_READY, - /** channel has seen a failure but expects to recover */ - GRPC_CHANNEL_TRANSIENT_FAILURE, - /** channel has seen a failure that it cannot recover from */ - GRPC_CHANNEL_SHUTDOWN -} grpc_connectivity_state; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H */ diff --git a/winx64/include/grpc/impl/codegen/exec_ctx_fwd.h b/winx64/include/grpc/impl/codegen/exec_ctx_fwd.h deleted file mode 100644 index 005ff14e..00000000 --- a/winx64/include/grpc/impl/codegen/exec_ctx_fwd.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_EXEC_CTX_FWD_H -#define GRPC_IMPL_CODEGEN_EXEC_CTX_FWD_H - -/* forward declaration for exec_ctx.h */ -struct grpc_exec_ctx; -typedef struct grpc_exec_ctx grpc_exec_ctx; - -#endif /* GRPC_IMPL_CODEGEN_EXEC_CTX_FWD_H */ diff --git a/winx64/include/grpc/impl/codegen/gpr_slice.h b/winx64/include/grpc/impl/codegen/gpr_slice.h deleted file mode 100644 index 89fa72d5..00000000 --- a/winx64/include/grpc/impl/codegen/gpr_slice.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * 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. - * - */ -#ifndef GRPC_IMPL_CODEGEN_GPR_SLICE_H -#define GRPC_IMPL_CODEGEN_GPR_SLICE_H - -/** WARNING: Please do not use this header. This was added as a temporary - * measure to not break some of the external projects that depend on - * gpr_slice_* functions. We are actively working on moving all the - * gpr_slice_* references to grpc_slice_* and this file will be removed - */ - -/* TODO (sreek) - Allowed by default but will be very soon turned off */ -#define GRPC_ALLOW_GPR_SLICE_FUNCTIONS 1 - -#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS - -#define gpr_slice_refcount grpc_slice_refcount -#define gpr_slice grpc_slice -#define gpr_slice_buffer grpc_slice_buffer - -#define gpr_slice_ref grpc_slice_ref -#define gpr_slice_unref grpc_slice_unref -#define gpr_slice_new grpc_slice_new -#define gpr_slice_new_with_user_data grpc_slice_new_with_user_data -#define gpr_slice_new_with_len grpc_slice_new_with_len -#define gpr_slice_malloc grpc_slice_malloc -#define gpr_slice_from_copied_string grpc_slice_from_copied_string -#define gpr_slice_from_copied_buffer grpc_slice_from_copied_buffer -#define gpr_slice_from_static_string grpc_slice_from_static_string -#define gpr_slice_sub grpc_slice_sub -#define gpr_slice_sub_no_ref grpc_slice_sub_no_ref -#define gpr_slice_split_tail grpc_slice_split_tail -#define gpr_slice_split_head grpc_slice_split_head -#define gpr_slice_cmp grpc_slice_cmp -#define gpr_slice_str_cmp grpc_slice_str_cmp - -#define gpr_slice_buffer grpc_slice_buffer -#define gpr_slice_buffer_init grpc_slice_buffer_init -#define gpr_slice_buffer_destroy grpc_slice_buffer_destroy -#define gpr_slice_buffer_add grpc_slice_buffer_add -#define gpr_slice_buffer_add_indexed grpc_slice_buffer_add_indexed -#define gpr_slice_buffer_addn grpc_slice_buffer_addn -#define gpr_slice_buffer_tiny_add grpc_slice_buffer_tiny_add -#define gpr_slice_buffer_pop grpc_slice_buffer_pop -#define gpr_slice_buffer_reset_and_unref grpc_slice_buffer_reset_and_unref -#define gpr_slice_buffer_swap grpc_slice_buffer_swap -#define gpr_slice_buffer_move_into grpc_slice_buffer_move_into -#define gpr_slice_buffer_trim_end grpc_slice_buffer_trim_end -#define gpr_slice_buffer_move_first grpc_slice_buffer_move_first -#define gpr_slice_buffer_take_first grpc_slice_buffer_take_first - -#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */ - -#endif /* GRPC_IMPL_CODEGEN_GPR_SLICE_H */ diff --git a/winx64/include/grpc/impl/codegen/gpr_types.h b/winx64/include/grpc/impl/codegen/gpr_types.h deleted file mode 100644 index d7bb5452..00000000 --- a/winx64/include/grpc/impl/codegen/gpr_types.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_GPR_TYPES_H -#define GRPC_IMPL_CODEGEN_GPR_TYPES_H - -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** The clocks we support. */ -typedef enum { - /** Monotonic clock. Epoch undefined. Always moves forwards. */ - GPR_CLOCK_MONOTONIC = 0, - /** Realtime clock. May jump forwards or backwards. Settable by - the system administrator. Has its epoch at 0:00:00 UTC 1 Jan 1970. */ - GPR_CLOCK_REALTIME, - /** CPU cycle time obtained by rdtsc instruction on x86 platforms. Epoch - undefined. Degrades to GPR_CLOCK_REALTIME on other platforms. */ - GPR_CLOCK_PRECISE, - /** Unmeasurable clock type: no base, created by taking the difference - between two times */ - GPR_TIMESPAN -} gpr_clock_type; - -/** Analogous to struct timespec. On some machines, absolute times may be in - * local time. */ -typedef struct gpr_timespec { - int64_t tv_sec; - int32_t tv_nsec; - /** Against which clock was this time measured? (or GPR_TIMESPAN if - this is a relative time meaure) */ - gpr_clock_type clock_type; -} gpr_timespec; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_GPR_TYPES_H */ diff --git a/winx64/include/grpc/impl/codegen/grpc_types.h b/winx64/include/grpc/impl/codegen/grpc_types.h deleted file mode 100644 index 8813ec8f..00000000 --- a/winx64/include/grpc/impl/codegen/grpc_types.h +++ /dev/null @@ -1,618 +0,0 @@ -/* - * - * 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_GRPC_TYPES_H -#define GRPC_IMPL_CODEGEN_GRPC_TYPES_H - -#include - -#include -#include -#include -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - GRPC_BB_RAW - /** Future types may include GRPC_BB_PROTOBUF, etc. */ -} grpc_byte_buffer_type; - -typedef struct grpc_byte_buffer { - void *reserved; - grpc_byte_buffer_type type; - union grpc_byte_buffer_data { - struct /* internal */ { - void *reserved[8]; - } reserved; - struct grpc_compressed_buffer { - grpc_compression_algorithm compression; - grpc_slice_buffer slice_buffer; - } raw; - } data; -} grpc_byte_buffer; - -/** Completion Queues enable notification of the completion of - * asynchronous actions. */ -typedef struct grpc_completion_queue grpc_completion_queue; - -/** An alarm associated with a completion queue. */ -typedef struct grpc_alarm grpc_alarm; - -/** The Channel interface allows creation of Call objects. */ -typedef struct grpc_channel grpc_channel; - -/** A server listens to some port and responds to request calls */ -typedef struct grpc_server grpc_server; - -/** A Call represents an RPC. When created, it is in a configuration state - allowing properties to be set until it is invoked. After invoke, the Call - can have messages written to it and read from it. */ -typedef struct grpc_call grpc_call; - -/** The Socket Mutator interface allows changes on socket options */ -typedef struct grpc_socket_mutator grpc_socket_mutator; - -/** The Socket Factory interface creates and binds sockets */ -typedef struct grpc_socket_factory grpc_socket_factory; - -/** Type specifier for grpc_arg */ -typedef enum { - GRPC_ARG_STRING, - GRPC_ARG_INTEGER, - GRPC_ARG_POINTER -} grpc_arg_type; - -typedef struct grpc_arg_pointer_vtable { - void *(*copy)(void *p); - void (*destroy)(grpc_exec_ctx *exec_ctx, void *p); - int (*cmp)(void *p, void *q); -} grpc_arg_pointer_vtable; - -/** A single argument... each argument has a key and a value - - A note on naming keys: - Keys are namespaced into groups, usually grouped by library, and are - keys for module XYZ are named XYZ.key1, XYZ.key2, etc. Module names must - be restricted to the regex [A-Za-z][_A-Za-z0-9]{,15}. - Key names must be restricted to the regex [A-Za-z][_A-Za-z0-9]{,47}. - - GRPC core library keys are prefixed by grpc. - - Library authors are strongly encouraged to \#define symbolic constants for - their keys so that it's possible to change them in the future. */ -typedef struct { - grpc_arg_type type; - char *key; - union grpc_arg_value { - char *string; - int integer; - struct grpc_arg_pointer { - void *p; - const grpc_arg_pointer_vtable *vtable; - } pointer; - } value; -} grpc_arg; - -/** An array of arguments that can be passed around. - - Used to set optional channel-level configuration. - These configuration options are modelled as key-value pairs as defined - by grpc_arg; keys are strings to allow easy backwards-compatible extension - by arbitrary parties. All evaluation is performed at channel creation - time (i.e. the values in this structure need only live through the - creation invocation). - - See the description of the \ref grpc_arg_keys "available args" for more - details. */ -typedef struct { - size_t num_args; - grpc_arg *args; -} grpc_channel_args; - -/** \defgroup grpc_arg_keys - * Channel argument keys. - * \{ - */ -/** If non-zero, enable census for tracing and stats collection. */ -#define GRPC_ARG_ENABLE_CENSUS "grpc.census" -/** If non-zero, enable load reporting. */ -#define GRPC_ARG_ENABLE_LOAD_REPORTING "grpc.loadreporting" -/** Request that optional features default to off (regardless of what they - usually default to) - to enable tight control over what gets enabled */ -#define GRPC_ARG_MINIMAL_STACK "grpc.minimal_stack" -/** Maximum number of concurrent incoming streams to allow on a http2 - connection. Int valued. */ -#define GRPC_ARG_MAX_CONCURRENT_STREAMS "grpc.max_concurrent_streams" -/** Maximum message length that the channel can receive. Int valued, bytes. - -1 means unlimited. */ -#define GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH "grpc.max_receive_message_length" -/** \deprecated For backward compatibility. - * Use GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH instead. */ -#define GRPC_ARG_MAX_MESSAGE_LENGTH GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH -/** Maximum message length that the channel can send. Int valued, bytes. - -1 means unlimited. */ -#define GRPC_ARG_MAX_SEND_MESSAGE_LENGTH "grpc.max_send_message_length" -/** Maximum time that a channel may have no outstanding rpcs. Int valued, - milliseconds. INT_MAX means unlimited. */ -#define GRPC_ARG_MAX_CONNECTION_IDLE_MS "grpc.max_connection_idle_ms" -/** Maximum time that a channel may exist. Int valued, milliseconds. - * INT_MAX means unlimited. */ -#define GRPC_ARG_MAX_CONNECTION_AGE_MS "grpc.max_connection_age_ms" -/** Grace period after the chennel reaches its max age. Int valued, - milliseconds. INT_MAX means unlimited. */ -#define GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS "grpc.max_connection_age_grace_ms" -/** Enable/disable support for per-message compression. Defaults to 1, unless - GRPC_ARG_MINIMAL_STACK is enabled, in which case it defaults to 0. */ -#define GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION "grpc.per_message_compression" -/** Enable/disable support for deadline checking. Defaults to 1, unless - GRPC_ARG_MINIMAL_STACK is enabled, in which case it defaults to 0 */ -#define GRPC_ARG_ENABLE_DEADLINE_CHECKS "grpc.enable_deadline_checking" -/** Initial stream ID for http2 transports. Int valued. */ -#define GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER \ - "grpc.http2.initial_sequence_number" -/** Amount to read ahead on individual streams. Defaults to 64kb, larger - values can help throughput on high-latency connections. - NOTE: at some point we'd like to auto-tune this, and this parameter - will become a no-op. Int valued, bytes. */ -#define GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES "grpc.http2.lookahead_bytes" -/** How much memory to use for hpack decoding. Int valued, bytes. */ -#define GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER \ - "grpc.http2.hpack_table_size.decoder" -/** How much memory to use for hpack encoding. Int valued, bytes. */ -#define GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER \ - "grpc.http2.hpack_table_size.encoder" -/** How big a frame are we willing to receive via HTTP2. - Min 16384, max 16777215. Larger values give lower CPU usage for large - messages, but more head of line blocking for small messages. */ -#define GRPC_ARG_HTTP2_MAX_FRAME_SIZE "grpc.http2.max_frame_size" -/** Should BDP probing be performed? */ -#define GRPC_ARG_HTTP2_BDP_PROBE "grpc.http2.bdp_probe" -/** Minimum time (in milliseconds) between successive ping frames being sent */ -#define GRPC_ARG_HTTP2_MIN_TIME_BETWEEN_PINGS_MS \ - "grpc.http2.min_time_between_pings_ms" -/** Channel arg to override the http2 :scheme header */ -#define GRPC_ARG_HTTP2_SCHEME "grpc.http2_scheme" -/** How many pings can we send before needing to send a data frame or header - frame? (0 indicates that an infinite number of pings can be sent without - sending a data frame or header frame) */ -#define GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA \ - "grpc.http2.max_pings_without_data" -/** How many misbehaving pings the server can bear before sending goaway and - closing the transport? (0 indicates that the server can bear an infinite - number of misbehaving pings) */ -#define GRPC_ARG_HTTP2_MAX_PING_STRIKES "grpc.http2.max_ping_strikes" -/** Minimum allowed time between two pings without sending any data frame. Int - valued, seconds */ -#define GRPC_ARG_HTTP2_MIN_PING_INTERVAL_WITHOUT_DATA_MS \ - "grpc.http2.min_ping_interval_without_data_ms" -/** How much data are we willing to queue up per stream if - GRPC_WRITE_BUFFER_HINT is set? This is an upper bound */ -#define GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE "grpc.http2.write_buffer_size" -/** Should we allow receipt of true-binary data on http2 connections? - Defaults to on (1) */ -#define GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY "grpc.http2.true_binary" -/** After a duration of this time the client/server pings its peer to see if the - transport is still alive. Int valued, milliseconds. */ -#define GRPC_ARG_KEEPALIVE_TIME_MS "grpc.keepalive_time_ms" -/** After waiting for a duration of this time, if the keepalive ping sender does - not receive the ping ack, it will close the transport. Int valued, - milliseconds. */ -#define GRPC_ARG_KEEPALIVE_TIMEOUT_MS "grpc.keepalive_timeout_ms" -/** Is it permissible to send keepalive pings without any outstanding streams. - Int valued, 0(false)/1(true). */ -#define GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS \ - "grpc.keepalive_permit_without_calls" -/** Default authority to pass if none specified on call construction. A string. - * */ -#define GRPC_ARG_DEFAULT_AUTHORITY "grpc.default_authority" -/** Primary user agent: goes at the start of the user-agent metadata - sent on each request. A string. */ -#define GRPC_ARG_PRIMARY_USER_AGENT_STRING "grpc.primary_user_agent" -/** Secondary user agent: goes at the end of the user-agent metadata - sent on each request. A string. */ -#define GRPC_ARG_SECONDARY_USER_AGENT_STRING "grpc.secondary_user_agent" -/** The minimum time between subsequent connection attempts, in ms */ -#define GRPC_ARG_MIN_RECONNECT_BACKOFF_MS "grpc.min_reconnect_backoff_ms" -/** The maximum time between subsequent connection attempts, in ms */ -#define GRPC_ARG_MAX_RECONNECT_BACKOFF_MS "grpc.max_reconnect_backoff_ms" -/** The time between the first and second connection attempts, in ms */ -#define GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS \ - "grpc.initial_reconnect_backoff_ms" -/** This *should* be used for testing only. - The caller of the secure_channel_create functions may override the target - name used for SSL host name checking using this channel argument which is of - type \a GRPC_ARG_STRING. If this argument is not specified, the name used - for SSL host name checking will be the target parameter (assuming that the - secure channel is an SSL channel). If this parameter is specified and the - underlying is not an SSL channel, it will just be ignored. */ -#define GRPC_SSL_TARGET_NAME_OVERRIDE_ARG "grpc.ssl_target_name_override" -/** Maximum metadata size, in bytes. Note this limit applies to the max sum of - all metadata key-value entries in a batch of headers. */ -#define GRPC_ARG_MAX_METADATA_SIZE "grpc.max_metadata_size" -/** If non-zero, allow the use of SO_REUSEPORT if it's available (default 1) */ -#define GRPC_ARG_ALLOW_REUSEPORT "grpc.so_reuseport" -/** If non-zero, a pointer to a buffer pool (a pointer of type - * grpc_resource_quota*). (use grpc_resource_quota_arg_vtable() to fetch an - * appropriate pointer arg vtable) */ -#define GRPC_ARG_RESOURCE_QUOTA "grpc.resource_quota" -/** If non-zero, expand wildcard addresses to a list of local addresses. */ -#define GRPC_ARG_EXPAND_WILDCARD_ADDRS "grpc.expand_wildcard_addrs" -/** Service config data in JSON form. - This value will be ignored if the name resolver returns a service config. */ -#define GRPC_ARG_SERVICE_CONFIG "grpc.service_config" -/** Disable looking up the service config via the name resolver. */ -#define GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION \ - "grpc.service_config_disable_resolution" -/** LB policy name. */ -#define GRPC_ARG_LB_POLICY_NAME "grpc.lb_policy_name" -/** The grpc_socket_mutator instance that set the socket options. A pointer. */ -#define GRPC_ARG_SOCKET_MUTATOR "grpc.socket_mutator" -/** The grpc_socket_factory instance to create and bind sockets. A pointer. */ -#define GRPC_ARG_SOCKET_FACTORY "grpc.socket_factory" -/** If non-zero, Cronet transport will coalesce packets to fewer frames - * when possible. */ -#define GRPC_ARG_USE_CRONET_PACKET_COALESCING \ - "grpc.use_cronet_packet_coalescing" -/** Channel arg (integer) setting how large a slice to try and read from the - wire each time recvmsg (or equivalent) is called **/ -#define GRPC_ARG_TCP_READ_CHUNK_SIZE "grpc.experimental.tcp_read_chunk_size" -/** Note this is not a "channel arg" key. This is the default slice size to use - * when trying to read from the wire if the GRPC_ARG_TCP_READ_CHUNK_SIZE - * channel arg is unspecified. */ -#define GRPC_TCP_DEFAULT_READ_SLICE_SIZE 8192 -#define GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE \ - "grpc.experimental.tcp_min_read_chunk_size" -#define GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE \ - "grpc.experimental.tcp_max_read_chunk_size" -/* Timeout in milliseconds to use for calls to the grpclb load balancer. - If 0 or unset, the balancer calls will have no deadline. */ -#define GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS "grpc.grpclb_timeout_ms" -/** If non-zero, grpc server's cronet compression workaround will be enabled */ -#define GRPC_ARG_WORKAROUND_CRONET_COMPRESSION \ - "grpc.workaround.cronet_compression" -/** String defining the optimization target for a channel. - Can be: "latency" - attempt to minimize latency at the cost of throughput - "blend" - try to balance latency and throughput - "throughput" - attempt to maximize throughput at the expense of - latency - Defaults to "blend". In the current implementation "blend" is equivalent to - "latency". */ -#define GRPC_ARG_OPTIMIZATION_TARGET "grpc.optimization_target" -/** \} */ - -/** Result of a grpc call. If the caller satisfies the prerequisites of a - particular operation, the grpc_call_error returned will be GRPC_CALL_OK. - Receiving any other value listed here is an indication of a bug in the - caller. */ -typedef enum grpc_call_error { - /** everything went ok */ - GRPC_CALL_OK = 0, - /** something failed, we don't know what */ - GRPC_CALL_ERROR, - /** this method is not available on the server */ - GRPC_CALL_ERROR_NOT_ON_SERVER, - /** this method is not available on the client */ - GRPC_CALL_ERROR_NOT_ON_CLIENT, - /** this method must be called before server_accept */ - GRPC_CALL_ERROR_ALREADY_ACCEPTED, - /** this method must be called before invoke */ - GRPC_CALL_ERROR_ALREADY_INVOKED, - /** this method must be called after invoke */ - GRPC_CALL_ERROR_NOT_INVOKED, - /** this call is already finished - (writes_done or write_status has already been called) */ - GRPC_CALL_ERROR_ALREADY_FINISHED, - /** there is already an outstanding read/write operation on the call */ - GRPC_CALL_ERROR_TOO_MANY_OPERATIONS, - /** the flags value was illegal for this call */ - GRPC_CALL_ERROR_INVALID_FLAGS, - /** invalid metadata was passed to this call */ - GRPC_CALL_ERROR_INVALID_METADATA, - /** invalid message was passed to this call */ - GRPC_CALL_ERROR_INVALID_MESSAGE, - /** completion queue for notification has not been registered - * with the server */ - GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE, - /** this batch of operations leads to more operations than allowed */ - GRPC_CALL_ERROR_BATCH_TOO_BIG, - /** payload type requested is not the type registered */ - GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH, - /** completion queue has been shutdown */ - GRPC_CALL_ERROR_COMPLETION_QUEUE_SHUTDOWN -} grpc_call_error; - -/** Default send/receive message size limits in bytes. -1 for unlimited. */ -/** TODO(roth) Make this match the default receive limit after next release */ -#define GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH -1 -#define GRPC_DEFAULT_MAX_RECV_MESSAGE_LENGTH (4 * 1024 * 1024) - -/** Write Flags: */ -/** Hint that the write may be buffered and need not go out on the wire - immediately. GRPC is free to buffer the message until the next non-buffered - write, or until writes_done, but it need not buffer completely or at all. */ -#define GRPC_WRITE_BUFFER_HINT (0x00000001u) -/** Force compression to be disabled for a particular write - (start_write/add_metadata). Illegal on invoke/accept. */ -#define GRPC_WRITE_NO_COMPRESS (0x00000002u) -/** Mask of all valid flags. */ -#define GRPC_WRITE_USED_MASK (GRPC_WRITE_BUFFER_HINT | GRPC_WRITE_NO_COMPRESS) - -/** Initial metadata flags */ -/** Signal that the call is idempotent */ -#define GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST (0x00000010u) -/** Signal that the call should not return UNAVAILABLE before it has started */ -#define GRPC_INITIAL_METADATA_WAIT_FOR_READY (0x00000020u) -/** Signal that the call is cacheable. GRPC is free to use GET verb */ -#define GRPC_INITIAL_METADATA_CACHEABLE_REQUEST (0x00000040u) -/** Signal that GRPC_INITIAL_METADATA_WAIT_FOR_READY was explicitly set - by the calling application. */ -#define GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET (0x00000080u) -/** Signal that the initial metadata should be corked */ -#define GRPC_INITIAL_METADATA_CORKED (0x00000100u) - -/** Mask of all valid flags */ -#define GRPC_INITIAL_METADATA_USED_MASK \ - (GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST | \ - GRPC_INITIAL_METADATA_WAIT_FOR_READY | \ - GRPC_INITIAL_METADATA_CACHEABLE_REQUEST | \ - GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET | \ - GRPC_INITIAL_METADATA_CORKED) - -/** A single metadata element */ -typedef struct grpc_metadata { - /** the key, value values are expected to line up with grpc_mdelem: if - changing them, update metadata.h at the same time. */ - grpc_slice key; - grpc_slice value; - - uint32_t flags; - - /** The following fields are reserved for grpc internal use. - There is no need to initialize them, and they will be set to garbage - during calls to grpc. */ - struct /* internal */ { - void *obfuscated[4]; - } internal_data; -} grpc_metadata; - -/** The type of completion (for grpc_event) */ -typedef enum grpc_completion_type { - /** Shutting down */ - GRPC_QUEUE_SHUTDOWN, - /** No event before timeout */ - GRPC_QUEUE_TIMEOUT, - /** Operation completion */ - GRPC_OP_COMPLETE -} grpc_completion_type; - -/** The result of an operation. - - Returned by a completion queue when the operation started with tag. */ -typedef struct grpc_event { - /** The type of the completion. */ - grpc_completion_type type; - /** If the grpc_completion_type is GRPC_OP_COMPLETE, this field indicates - whether the operation was successful or not; 0 in case of failure and - non-zero in case of success. - If grpc_completion_type is GRPC_QUEUE_SHUTDOWN or GRPC_QUEUE_TIMEOUT, this - field is guaranteed to be 0 */ - int success; - /** The tag passed to grpc_call_start_batch etc to start this operation. - Only GRPC_OP_COMPLETE has a tag. */ - void *tag; -} grpc_event; - -typedef struct { - size_t count; - size_t capacity; - grpc_metadata *metadata; -} grpc_metadata_array; - -typedef struct { - grpc_slice method; - grpc_slice host; - gpr_timespec deadline; - uint32_t flags; - void *reserved; -} grpc_call_details; - -typedef enum { - /** Send initial metadata: one and only one instance MUST be sent for each - call, unless the call was cancelled - in which case this can be skipped. - This op completes after all bytes of metadata have been accepted by - outgoing flow control. */ - GRPC_OP_SEND_INITIAL_METADATA = 0, - /** Send a message: 0 or more of these operations can occur for each call. - This op completes after all bytes for the message have been accepted by - outgoing flow control. */ - GRPC_OP_SEND_MESSAGE, - /** Send a close from the client: one and only one instance MUST be sent from - the client, unless the call was cancelled - in which case this can be - skipped. This op completes after all bytes for the call - (including the close) have passed outgoing flow control. */ - GRPC_OP_SEND_CLOSE_FROM_CLIENT, - /** Send status from the server: one and only one instance MUST be sent from - the server unless the call was cancelled - in which case this can be - skipped. This op completes after all bytes for the call - (including the status) have passed outgoing flow control. */ - GRPC_OP_SEND_STATUS_FROM_SERVER, - /** Receive initial metadata: one and only one MUST be made on the client, - must not be made on the server. - This op completes after all initial metadata has been read from the - peer. */ - GRPC_OP_RECV_INITIAL_METADATA, - /** Receive a message: 0 or more of these operations can occur for each call. - This op completes after all bytes of the received message have been - read, or after a half-close has been received on this call. */ - GRPC_OP_RECV_MESSAGE, - /** Receive status on the client: one and only one must be made on the client. - This operation always succeeds, meaning ops paired with this operation - will also appear to succeed, even though they may not have. In that case - the status will indicate some failure. - This op completes after all activity on the call has completed. */ - GRPC_OP_RECV_STATUS_ON_CLIENT, - /** Receive close on the server: one and only one must be made on the - server. This op completes after the close has been received by the - server. This operation always succeeds, meaning ops paired with - this operation will also appear to succeed, even though they may not - have. */ - GRPC_OP_RECV_CLOSE_ON_SERVER -} grpc_op_type; - -struct grpc_byte_buffer; - -/** Operation data: one field for each op type (except SEND_CLOSE_FROM_CLIENT - which has no arguments) */ -typedef struct grpc_op { - /** Operation type, as defined by grpc_op_type */ - grpc_op_type op; - /** Write flags bitset for grpc_begin_messages */ - uint32_t flags; - /** Reserved for future usage */ - void *reserved; - union grpc_op_data { - /** Reserved for future usage */ - struct /* internal */ { - void *reserved[8]; - } reserved; - struct grpc_op_send_initial_metadata { - size_t count; - grpc_metadata *metadata; - /** If \a is_set, \a compression_level will be used for the call. - * Otherwise, \a compression_level won't be considered */ - struct grpc_op_send_initial_metadata_maybe_compression_level { - uint8_t is_set; - grpc_compression_level level; - } maybe_compression_level; - } send_initial_metadata; - struct grpc_op_send_message { - struct grpc_byte_buffer *send_message; - } send_message; - struct grpc_op_send_status_from_server { - size_t trailing_metadata_count; - grpc_metadata *trailing_metadata; - grpc_status_code status; - /** optional: set to NULL if no details need sending, non-NULL if they do - * pointer will not be retained past the start_batch call - */ - grpc_slice *status_details; - } send_status_from_server; - /** ownership of the array is with the caller, but ownership of the elements - stays with the call object (ie key, value members are owned by the call - object, recv_initial_metadata->array is owned by the caller). - After the operation completes, call grpc_metadata_array_destroy on this - value, or reuse it in a future op. */ - struct grpc_op_recv_initial_metadata { - grpc_metadata_array *recv_initial_metadata; - } recv_initial_metadata; - /** ownership of the byte buffer is moved to the caller; the caller must - call grpc_byte_buffer_destroy on this value, or reuse it in a future op. - */ - struct grpc_op_recv_message { - struct grpc_byte_buffer **recv_message; - } recv_message; - struct grpc_op_recv_status_on_client { - /** ownership of the array is with the caller, but ownership of the - elements stays with the call object (ie key, value members are owned - by the call object, trailing_metadata->array is owned by the caller). - After the operation completes, call grpc_metadata_array_destroy on - this value, or reuse it in a future op. */ - grpc_metadata_array *trailing_metadata; - grpc_status_code *status; - grpc_slice *status_details; - } recv_status_on_client; - struct grpc_op_recv_close_on_server { - /** out argument, set to 1 if the call failed in any way (seen as a - cancellation on the server), or 0 if the call succeeded */ - int *cancelled; - } recv_close_on_server; - } data; -} grpc_op; - -/** Information requested from the channel. */ -typedef struct { - /** If non-NULL, will be set to point to a string indicating the LB - * policy name. Caller takes ownership. */ - char **lb_policy_name; - /** If non-NULL, will be set to point to a string containing the - * service config used by the channel in JSON form. */ - char **service_config_json; -} grpc_channel_info; - -typedef struct grpc_resource_quota grpc_resource_quota; - -/** Completion queues internally MAY maintain a set of file descriptors in a - structure called 'pollset'. This enum specifies if a completion queue has an - associated pollset and any restrictions on the type of file descriptors that - can be present in the pollset. - - I/O progress can only be made when grpc_completion_queue_next() or - grpc_completion_queue_pluck() are called on the completion queue (unless the - grpc_cq_polling_type is GRPC_CQ_NON_POLLING) and hence it is very important - to actively call these APIs */ -typedef enum { - /** The completion queue will have an associated pollset and there is no - restriction on the type of file descriptors the pollset may contain */ - GRPC_CQ_DEFAULT_POLLING, - - /** Similar to GRPC_CQ_DEFAULT_POLLING except that the completion queues will - not contain any 'listening file descriptors' (i.e file descriptors used to - listen to incoming channels) */ - GRPC_CQ_NON_LISTENING, - - /** The completion queue will not have an associated pollset. Note that - grpc_completion_queue_next() or grpc_completion_queue_pluck() MUST still - be called to pop events from the completion queue; it is not required to - call them actively to make I/O progress */ - GRPC_CQ_NON_POLLING -} grpc_cq_polling_type; - -/** Specifies the type of APIs to use to pop events from the completion queue */ -typedef enum { - /** Events are popped out by calling grpc_completion_queue_next() API ONLY */ - GRPC_CQ_NEXT, - - /** Events are popped out by calling grpc_completion_queue_pluck() API ONLY*/ - GRPC_CQ_PLUCK -} grpc_cq_completion_type; - -#define GRPC_CQ_CURRENT_VERSION 1 -typedef struct grpc_completion_queue_attributes { - /** The version number of this structure. More fields might be added to this - structure in future. */ - int version; /** Set to GRPC_CQ_CURRENT_VERSION */ - - grpc_cq_completion_type cq_completion_type; - - grpc_cq_polling_type cq_polling_type; -} grpc_completion_queue_attributes; - -/** The completion queue factory structure is opaque to the callers of grpc */ -typedef struct grpc_completion_queue_factory grpc_completion_queue_factory; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_GRPC_TYPES_H */ diff --git a/winx64/include/grpc/impl/codegen/port_platform.h b/winx64/include/grpc/impl/codegen/port_platform.h deleted file mode 100644 index 42f323cb..00000000 --- a/winx64/include/grpc/impl/codegen/port_platform.h +++ /dev/null @@ -1,414 +0,0 @@ -/* - * - * 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_PORT_PLATFORM_H -#define GRPC_IMPL_CODEGEN_PORT_PLATFORM_H - -/* - * Define GPR_BACKWARDS_COMPATIBILITY_MODE to try harder to be ABI - * compatible with older platforms (currently only on Linux) - * Causes: - * - some libc calls to be gotten via dlsym - * - some syscalls to be made directly - */ - -/* Get windows.h included everywhere (we need it) */ -#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32) -#ifndef WIN32_LEAN_AND_MEAN -#define GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED -#define WIN32_LEAN_AND_MEAN -#endif /* WIN32_LEAN_AND_MEAN */ - -#ifndef NOMINMAX -#define GRPC_NOMINMX_WAS_NOT_DEFINED -#define NOMINMAX -#endif /* NOMINMAX */ - -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x600 -/*#error \ - "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows - Vista)" - */ -#else /* !defined(_WIN32_WINNT) */ -#if (_WIN32_WINNT < 0x0600) -#error \ - "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)" -#endif /* _WIN32_WINNT < 0x0600 */ -#endif /* defined(_WIN32_WINNT) */ - -#include - -#ifdef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED -#undef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED -#undef WIN32_LEAN_AND_MEAN -#endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */ - -#ifdef GRPC_NOMINMAX_WAS_NOT_DEFINED -#undef GRPC_NOMINMAX_WAS_NOT_DEFINED -#undef NOMINMAX -#endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */ -#endif /* defined(_WIN64) || defined(WIN64) || defined(_WIN32) || \ - defined(WIN32) */ - -/* Override this file with one for your platform if you need to redefine - things. */ - -#if !defined(GPR_NO_AUTODETECT_PLATFORM) -#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32) -#if defined(_WIN64) || defined(WIN64) -#define GPR_ARCH_64 1 -#else -#define GPR_ARCH_32 1 -#endif -#define GPR_PLATFORM_STRING "windows" -#define GPR_WINDOWS 1 -#define GPR_WINDOWS_SUBPROCESS 1 -#define GPR_WINDOWS_ENV -#ifdef __MSYS__ -#define GPR_GETPID_IN_UNISTD_H 1 -#define GPR_MSYS_TMPFILE -#define GPR_POSIX_LOG -#define GPR_POSIX_STRING -#define GPR_POSIX_TIME -#else -#define GPR_GETPID_IN_PROCESS_H 1 -#define GPR_WINDOWS_TMPFILE -#define GPR_WINDOWS_LOG -#define GPR_WINDOWS_CRASH_HANDLER 1 -#define GPR_WINDOWS_STRING -#define GPR_WINDOWS_TIME -#endif -#ifdef __GNUC__ -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#else -#define GPR_WINDOWS_ATOMIC 1 -#define GPR_MSVC_TLS 1 -#endif -#elif defined(GPR_MANYLINUX1) -// TODO(atash): manylinux1 is just another __linux__ but with ancient -// libraries; it should be integrated with the `__linux__` definitions below. -#define GPR_PLATFORM_STRING "manylinux" -#define GPR_POSIX_CRASH_HANDLER 1 -#define GPR_CPU_POSIX 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#define GPR_LINUX 1 -#define GPR_LINUX_LOG 1 -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#define GPR_LINUX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#elif defined(ANDROID) || defined(__ANDROID__) -#define GPR_PLATFORM_STRING "android" -#define GPR_ANDROID 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#define GPR_CPU_POSIX 1 -#define GPR_GCC_SYNC 1 -#define GPR_GCC_TLS 1 -#define GPR_POSIX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_ANDROID_LOG 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#elif defined(__linux__) -#define GPR_PLATFORM_STRING "linux" -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif -#ifndef _DEFAULT_SOURCE -#define _DEFAULT_SOURCE -#endif -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#include -#define GPR_CPU_LINUX 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#define GPR_LINUX 1 -#define GPR_LINUX_LOG -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#define GPR_LINUX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#ifdef __GLIBC__ -#define GPR_POSIX_CRASH_HANDLER 1 -#else /* musl libc */ -#define GPR_MUSL_LIBC_COMPAT 1 -#endif -#elif defined(__APPLE__) -#include -#include -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif -#if TARGET_OS_IPHONE -#define GPR_PLATFORM_STRING "ios" -#define GPR_CPU_IPHONE 1 -#define GPR_PTHREAD_TLS 1 -#else /* TARGET_OS_IPHONE */ -#define GPR_PLATFORM_STRING "osx" -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 -#define GPR_CPU_IPHONE 1 -#define GPR_PTHREAD_TLS 1 -#else /* __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 */ -#define GPR_CPU_POSIX 1 -#define GPR_GCC_TLS 1 -#endif -#else /* __MAC_OS_X_VERSION_MIN_REQUIRED */ -#define GPR_CPU_POSIX 1 -#define GPR_GCC_TLS 1 -#endif -#define GPR_POSIX_CRASH_HANDLER 1 -#endif -#define GPR_APPLE 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_POSIX_LOG 1 -#define GPR_POSIX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#elif defined(__FreeBSD__) -#define GPR_PLATFORM_STRING "freebsd" -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif -#define GPR_FREEBSD 1 -#define GPR_CPU_POSIX 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#define GPR_POSIX_LOG 1 -#define GPR_POSIX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#define GPR_SUPPORT_CHANNELS_FROM_FD 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#elif defined(__native_client__) -#define GPR_PLATFORM_STRING "nacl" -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif -#ifndef _DEFAULT_SOURCE -#define _DEFAULT_SOURCE -#endif -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#define GPR_NACL 1 -#define GPR_CPU_POSIX 1 -#define GPR_GCC_ATOMIC 1 -#define GPR_GCC_TLS 1 -#define GPR_POSIX_LOG 1 -#define GPR_POSIX_ENV 1 -#define GPR_POSIX_TMPFILE 1 -#define GPR_POSIX_STRING 1 -#define GPR_POSIX_SUBPROCESS 1 -#define GPR_POSIX_SYNC 1 -#define GPR_POSIX_TIME 1 -#define GPR_GETPID_IN_UNISTD_H 1 -#ifdef _LP64 -#define GPR_ARCH_64 1 -#else /* _LP64 */ -#define GPR_ARCH_32 1 -#endif /* _LP64 */ -#else -#error "Could not auto-detect platform" -#endif -#endif /* GPR_NO_AUTODETECT_PLATFORM */ - -#if defined(__has_include) -#if __has_include() -#define GRPC_HAS_CXX11_ATOMIC -#endif /* __has_include() */ -#endif /* defined(__has_include) */ - -#ifndef GPR_PLATFORM_STRING -#warning "GPR_PLATFORM_STRING not auto-detected" -#define GPR_PLATFORM_STRING "unknown" -#endif - -#ifdef GPR_GCOV -#undef GPR_FORBID_UNREACHABLE_CODE -#define GPR_FORBID_UNREACHABLE_CODE 1 -#endif - -#ifdef _MSC_VER -#ifdef _PYTHON_MSVC -// The Python 3.5 Windows runtime is missing InetNtop -#define GPR_WIN_INET_NTOP -#endif // _PYTHON_MSVC -#if _MSC_VER < 1700 -typedef __int8 int8_t; -typedef __int16 int16_t; -typedef __int32 int32_t; -typedef __int64 int64_t; -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int64 uint64_t; -#else -#include -#endif /* _MSC_VER < 1700 */ -#else -#include -#endif /* _MSC_VER */ - -/* Cache line alignment */ -#ifndef GPR_CACHELINE_SIZE_LOG -#if defined(__i386__) || defined(__x86_64__) -#define GPR_CACHELINE_SIZE_LOG 6 -#endif -#ifndef GPR_CACHELINE_SIZE_LOG -/* A reasonable default guess. Note that overestimates tend to waste more - space, while underestimates tend to waste more time. */ -#define GPR_CACHELINE_SIZE_LOG 6 -#endif /* GPR_CACHELINE_SIZE_LOG */ -#endif /* GPR_CACHELINE_SIZE_LOG */ - -#define GPR_CACHELINE_SIZE (1 << GPR_CACHELINE_SIZE_LOG) - -/* scrub GCC_ATOMIC if it's not available on this compiler */ -#if defined(GPR_GCC_ATOMIC) && !defined(__ATOMIC_RELAXED) -#undef GPR_GCC_ATOMIC -#define GPR_GCC_SYNC 1 -#endif - -/* Validate platform combinations */ -#if defined(GPR_GCC_ATOMIC) + defined(GPR_GCC_SYNC) + \ - defined(GPR_WINDOWS_ATOMIC) != \ - 1 -#error Must define exactly one of GPR_GCC_ATOMIC, GPR_GCC_SYNC, GPR_WINDOWS_ATOMIC -#endif - -#if defined(GPR_ARCH_32) + defined(GPR_ARCH_64) != 1 -#error Must define exactly one of GPR_ARCH_32, GPR_ARCH_64 -#endif - -#if defined(GPR_CPU_LINUX) + defined(GPR_CPU_POSIX) + defined(GPR_WINDOWS) + \ - defined(GPR_CPU_IPHONE) + defined(GPR_CPU_CUSTOM) != \ - 1 -#error Must define exactly one of GPR_CPU_LINUX, GPR_CPU_POSIX, GPR_WINDOWS, GPR_CPU_IPHONE, GPR_CPU_CUSTOM -#endif - -#if defined(GPR_MSVC_TLS) + defined(GPR_GCC_TLS) + defined(GPR_PTHREAD_TLS) + \ - defined(GPR_CUSTOM_TLS) != \ - 1 -#error Must define exactly one of GPR_MSVC_TLS, GPR_GCC_TLS, GPR_PTHREAD_TLS, GPR_CUSTOM_TLS -#endif - -/* maximum alignment needed for any type on this platform, rounded up to a - power of two */ -#define GPR_MAX_ALIGNMENT 16 - -#ifndef GRPC_ARES -#ifdef GPR_WINDOWS -#define GRPC_ARES 0 -#else -#define GRPC_ARES 1 -#endif -#endif - -#ifndef GRPC_MUST_USE_RESULT -#if defined(__GNUC__) && !defined(__MINGW32__) -#define GRPC_MUST_USE_RESULT __attribute__((warn_unused_result)) -#define GPR_ALIGN_STRUCT(n) __attribute__((aligned(n))) -#else -#define GRPC_MUST_USE_RESULT -#define GPR_ALIGN_STRUCT(n) -#endif -#endif - -#ifndef GPR_PRINT_FORMAT_CHECK -#ifdef __GNUC__ -#define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS) \ - __attribute__((format(printf, FORMAT_STR, ARGS))) -#else -#define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS) -#endif -#endif /* GPR_PRINT_FORMAT_CHECK */ - -#if GPR_FORBID_UNREACHABLE_CODE -#define GPR_UNREACHABLE_CODE(STATEMENT) -#else -#define GPR_UNREACHABLE_CODE(STATEMENT) \ - do { \ - gpr_log(GPR_ERROR, "Should never reach here."); \ - abort(); \ - STATEMENT; \ - } while (0) -#endif /* GPR_FORBID_UNREACHABLE_CODE */ - -#ifndef GPRAPI -#define GPRAPI -#endif - -#ifndef GRPCAPI -#define GRPCAPI GPRAPI -#endif - -#ifndef CENSUSAPI -#define CENSUSAPI GRPCAPI -#endif - -#endif /* GRPC_IMPL_CODEGEN_PORT_PLATFORM_H */ diff --git a/winx64/include/grpc/impl/codegen/propagation_bits.h b/winx64/include/grpc/impl/codegen/propagation_bits.h deleted file mode 100644 index 824bdbd8..00000000 --- a/winx64/include/grpc/impl/codegen/propagation_bits.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H -#define GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Propagation bits: this can be bitwise or-ed to form propagation_mask for - * grpc_call */ -/** Propagate deadline */ -#define GRPC_PROPAGATE_DEADLINE ((uint32_t)1) -/** Propagate census context */ -#define GRPC_PROPAGATE_CENSUS_STATS_CONTEXT ((uint32_t)2) -#define GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT ((uint32_t)4) -/** Propagate cancellation */ -#define GRPC_PROPAGATE_CANCELLATION ((uint32_t)8) - -/** Default propagation mask: clients of the core API are encouraged to encode - deltas from this in their implementations... ie write: - GRPC_PROPAGATE_DEFAULTS & ~GRPC_PROPAGATE_DEADLINE to disable deadline - propagation. Doing so gives flexibility in the future to define new - propagation types that are default inherited or not. */ -#define GRPC_PROPAGATE_DEFAULTS \ - ((uint32_t)(( \ - 0xffff | GRPC_PROPAGATE_DEADLINE | GRPC_PROPAGATE_CENSUS_STATS_CONTEXT | \ - GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT | GRPC_PROPAGATE_CANCELLATION))) - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H */ diff --git a/winx64/include/grpc/impl/codegen/slice.h b/winx64/include/grpc/impl/codegen/slice.h deleted file mode 100644 index a04c683a..00000000 --- a/winx64/include/grpc/impl/codegen/slice.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * - * 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_SLICE_H -#define GRPC_IMPL_CODEGEN_SLICE_H - -#include - -#include - -#include -#include - -typedef struct grpc_slice grpc_slice; - -/** Slice API - - A slice represents a contiguous reference counted array of bytes. - It is cheap to take references to a slice, and it is cheap to create a - slice pointing to a subset of another slice. - - The data-structure for slices is exposed here to allow non-gpr code to - build slices from whatever data they have available. - - When defining interfaces that handle slices, care should be taken to define - reference ownership semantics (who should call unref?) and mutability - constraints (is the callee allowed to modify the slice?) */ - -typedef struct grpc_slice_refcount_vtable { - void (*ref)(void *); - void (*unref)(grpc_exec_ctx *exec_ctx, void *); - int (*eq)(grpc_slice a, grpc_slice b); - uint32_t (*hash)(grpc_slice slice); -} grpc_slice_refcount_vtable; - -/** Reference count container for grpc_slice. Contains function pointers to - increment and decrement reference counts. Implementations should cleanup - when the reference count drops to zero. - Typically client code should not touch this, and use grpc_slice_malloc, - grpc_slice_new, or grpc_slice_new_with_len instead. */ -typedef struct grpc_slice_refcount { - const grpc_slice_refcount_vtable *vtable; - /** If a subset of this slice is taken, use this pointer for the refcount. - Typically points back to the refcount itself, however iterning - implementations can use this to avoid a verification step on each hash - or equality check */ - struct grpc_slice_refcount *sub_refcount; -} grpc_slice_refcount; - -#define GRPC_SLICE_INLINED_SIZE (sizeof(size_t) + sizeof(uint8_t *) - 1) - -/** A grpc_slice s, if initialized, represents the byte range - s.bytes[0..s.length-1]. - - It can have an associated ref count which has a destruction routine to be run - when the ref count reaches zero (see grpc_slice_new() and grp_slice_unref()). - Multiple grpc_slice values may share a ref count. - - If the slice does not have a refcount, it represents an inlined small piece - of data that is copied by value. */ -struct grpc_slice { - struct grpc_slice_refcount *refcount; - union grpc_slice_data { - struct grpc_slice_refcounted { - uint8_t *bytes; - size_t length; - } refcounted; - struct grpc_slice_inlined { - uint8_t length; - uint8_t bytes[GRPC_SLICE_INLINED_SIZE]; - } inlined; - } data; -}; - -#define GRPC_SLICE_BUFFER_INLINE_ELEMENTS 8 - -/** Represents an expandable array of slices, to be interpreted as a - single item. */ -typedef struct { - /** This is for internal use only. External users (i.e any code outside grpc - * core) MUST NOT use this field */ - grpc_slice *base_slices; - - /** slices in the array (Points to the first valid grpc_slice in the array) */ - grpc_slice *slices; - /** the number of slices in the array */ - size_t count; - /** the number of slices allocated in the array. External users (i.e any code - * outside grpc core) MUST NOT use this field */ - size_t capacity; - /** the combined length of all slices in the array */ - size_t length; - /** inlined elements to avoid allocations */ - grpc_slice inlined[GRPC_SLICE_BUFFER_INLINE_ELEMENTS]; -} grpc_slice_buffer; - -#define GRPC_SLICE_START_PTR(slice) \ - ((slice).refcount ? (slice).data.refcounted.bytes \ - : (slice).data.inlined.bytes) -#define GRPC_SLICE_LENGTH(slice) \ - ((slice).refcount ? (slice).data.refcounted.length \ - : (slice).data.inlined.length) -#define GRPC_SLICE_SET_LENGTH(slice, newlen) \ - ((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \ - : ((slice).data.inlined.length = (uint8_t)(newlen))) -#define GRPC_SLICE_END_PTR(slice) \ - GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice) -#define GRPC_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0) - -#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS - -/* Duplicate GPR_* definitions */ -#define GPR_SLICE_START_PTR(slice) \ - ((slice).refcount ? (slice).data.refcounted.bytes \ - : (slice).data.inlined.bytes) -#define GPR_SLICE_LENGTH(slice) \ - ((slice).refcount ? (slice).data.refcounted.length \ - : (slice).data.inlined.length) -#define GPR_SLICE_SET_LENGTH(slice, newlen) \ - ((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \ - : ((slice).data.inlined.length = (uint8_t)(newlen))) -#define GPR_SLICE_END_PTR(slice) \ - GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice) -#define GPR_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0) - -#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */ - -#endif /* GRPC_IMPL_CODEGEN_SLICE_H */ diff --git a/winx64/include/grpc/impl/codegen/status.h b/winx64/include/grpc/impl/codegen/status.h deleted file mode 100644 index 9bc3dc95..00000000 --- a/winx64/include/grpc/impl/codegen/status.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * - * 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_STATUS_H -#define GRPC_IMPL_CODEGEN_STATUS_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - /** Not an error; returned on success */ - GRPC_STATUS_OK = 0, - - /** The operation was cancelled (typically by the caller). */ - GRPC_STATUS_CANCELLED = 1, - - /** Unknown error. An example of where this error may be returned is - if a Status value received from another address space belongs to - an error-space that is not known in this address space. Also - errors raised by APIs that do not return enough error information - may be converted to this error. */ - GRPC_STATUS_UNKNOWN = 2, - - /** Client specified an invalid argument. Note that this differs - from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments - that are problematic regardless of the state of the system - (e.g., a malformed file name). */ - GRPC_STATUS_INVALID_ARGUMENT = 3, - - /** Deadline expired before operation could complete. For operations - that change the state of the system, this error may be returned - even if the operation has completed successfully. For example, a - successful response from a server could have been delayed long - enough for the deadline to expire. */ - GRPC_STATUS_DEADLINE_EXCEEDED = 4, - - /** Some requested entity (e.g., file or directory) was not found. */ - GRPC_STATUS_NOT_FOUND = 5, - - /** Some entity that we attempted to create (e.g., file or directory) - already exists. */ - GRPC_STATUS_ALREADY_EXISTS = 6, - - /** The caller does not have permission to execute the specified - operation. PERMISSION_DENIED must not be used for rejections - caused by exhausting some resource (use RESOURCE_EXHAUSTED - instead for those errors). PERMISSION_DENIED must not be - used if the caller can not be identified (use UNAUTHENTICATED - instead for those errors). */ - GRPC_STATUS_PERMISSION_DENIED = 7, - - /** The request does not have valid authentication credentials for the - operation. */ - GRPC_STATUS_UNAUTHENTICATED = 16, - - /** Some resource has been exhausted, perhaps a per-user quota, or - perhaps the entire file system is out of space. */ - GRPC_STATUS_RESOURCE_EXHAUSTED = 8, - - /** Operation was rejected because the system is not in a state - required for the operation's execution. For example, directory - to be deleted may be non-empty, an rmdir operation is applied to - a non-directory, etc. - - A litmus test that may help a service implementor in deciding - between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE: - (a) Use UNAVAILABLE if the client can retry just the failing call. - (b) Use ABORTED if the client should retry at a higher-level - (e.g., restarting a read-modify-write sequence). - (c) Use FAILED_PRECONDITION if the client should not retry until - the system state has been explicitly fixed. E.g., if an "rmdir" - fails because the directory is non-empty, FAILED_PRECONDITION - should be returned since the client should not retry unless - they have first fixed up the directory by deleting files from it. - (d) Use FAILED_PRECONDITION if the client performs conditional - REST Get/Update/Delete on a resource and the resource on the - server does not match the condition. E.g., conflicting - read-modify-write on the same resource. */ - GRPC_STATUS_FAILED_PRECONDITION = 9, - - /** The operation was aborted, typically due to a concurrency issue - like sequencer check failures, transaction aborts, etc. - - See litmus test above for deciding between FAILED_PRECONDITION, - ABORTED, and UNAVAILABLE. */ - GRPC_STATUS_ABORTED = 10, - - /** Operation was attempted past the valid range. E.g., seeking or - reading past end of file. - - Unlike INVALID_ARGUMENT, this error indicates a problem that may - be fixed if the system state changes. For example, a 32-bit file - system will generate INVALID_ARGUMENT if asked to read at an - offset that is not in the range [0,2^32-1], but it will generate - OUT_OF_RANGE if asked to read from an offset past the current - file size. - - There is a fair bit of overlap between FAILED_PRECONDITION and - OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific - error) when it applies so that callers who are iterating through - a space can easily look for an OUT_OF_RANGE error to detect when - they are done. */ - GRPC_STATUS_OUT_OF_RANGE = 11, - - /** Operation is not implemented or not supported/enabled in this service. */ - GRPC_STATUS_UNIMPLEMENTED = 12, - - /** Internal errors. Means some invariants expected by underlying - system has been broken. If you see one of these errors, - something is very broken. */ - GRPC_STATUS_INTERNAL = 13, - - /** The service is currently unavailable. This is a most likely a - transient condition and may be corrected by retrying with - a backoff. - - WARNING: Although data MIGHT not have been transmitted when this - status occurs, there is NOT A GUARANTEE that the server has not seen - anything. So in general it is unsafe to retry on this status code - if the call is non-idempotent. - - See litmus test above for deciding between FAILED_PRECONDITION, - ABORTED, and UNAVAILABLE. */ - GRPC_STATUS_UNAVAILABLE = 14, - - /** Unrecoverable data loss or corruption. */ - GRPC_STATUS_DATA_LOSS = 15, - - /** Force users to include a default branch: */ - GRPC_STATUS__DO_NOT_USE = -1 -} grpc_status_code; - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_STATUS_H */ diff --git a/winx64/include/grpc/impl/codegen/sync.h b/winx64/include/grpc/impl/codegen/sync.h deleted file mode 100644 index de4e99be..00000000 --- a/winx64/include/grpc/impl/codegen/sync.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * - * 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. - * - */ - -#ifndef GRPC_IMPL_CODEGEN_SYNC_H -#define GRPC_IMPL_CODEGEN_SYNC_H -/** Synchronization primitives for GPR. - - The type gpr_mu provides a non-reentrant mutex (lock). - - The type gpr_cv provides a condition variable. - - The type gpr_once provides for one-time initialization. - - The type gpr_event provides one-time-setting, reading, and - waiting of a void*, with memory barriers. - - The type gpr_refcount provides an object reference counter, - with memory barriers suitable to control - object lifetimes. - - The type gpr_stats_counter provides an atomic statistics counter. It - provides no memory barriers. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Platform-specific type declarations of gpr_mu and gpr_cv. */ -#include -#include - -#if defined(GPR_POSIX_SYNC) -#include -#elif defined(GPR_WINDOWS) -#include -#elif !defined(GPR_CUSTOM_SYNC) -#error Unable to determine platform for sync -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_IMPL_CODEGEN_SYNC_H */ diff --git a/winx64/include/grpc/impl/codegen/sync_generic.h b/winx64/include/grpc/impl/codegen/sync_generic.h deleted file mode 100644 index e1eea542..00000000 --- a/winx64/include/grpc/impl/codegen/sync_generic.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * - * 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_SYNC_GENERIC_H -#define GRPC_IMPL_CODEGEN_SYNC_GENERIC_H -/* Generic type defintions for gpr_sync. */ - -#include - -/* gpr_event */ -typedef struct { gpr_atm state; } gpr_event; - -#define GPR_EVENT_INIT \ - { 0 } - -/* gpr_refcount */ -typedef struct { gpr_atm count; } gpr_refcount; - -/* gpr_stats_counter */ -typedef struct { gpr_atm value; } gpr_stats_counter; - -#define GPR_STATS_INIT \ - { 0 } - -#endif /* GRPC_IMPL_CODEGEN_SYNC_GENERIC_H */ diff --git a/winx64/include/grpc/impl/codegen/sync_posix.h b/winx64/include/grpc/impl/codegen/sync_posix.h deleted file mode 100644 index 6a3aed92..00000000 --- a/winx64/include/grpc/impl/codegen/sync_posix.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * 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_SYNC_POSIX_H -#define GRPC_IMPL_CODEGEN_SYNC_POSIX_H - -#include - -#include - -typedef pthread_mutex_t gpr_mu; -typedef pthread_cond_t gpr_cv; -typedef pthread_once_t gpr_once; - -#define GPR_ONCE_INIT PTHREAD_ONCE_INIT - -#endif /* GRPC_IMPL_CODEGEN_SYNC_POSIX_H */ diff --git a/winx64/include/grpc/impl/codegen/sync_windows.h b/winx64/include/grpc/impl/codegen/sync_windows.h deleted file mode 100644 index 39b12760..00000000 --- a/winx64/include/grpc/impl/codegen/sync_windows.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * - * 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_SYNC_WINDOWS_H -#define GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H - -#include - -typedef struct { - CRITICAL_SECTION cs; /* Not an SRWLock until Vista is unsupported */ - int locked; -} gpr_mu; - -typedef CONDITION_VARIABLE gpr_cv; - -typedef INIT_ONCE gpr_once; -#define GPR_ONCE_INIT INIT_ONCE_STATIC_INIT - -#endif /* GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H */ diff --git a/winx64/include/grpc/load_reporting.h b/winx64/include/grpc/load_reporting.h deleted file mode 100644 index 55f50ea8..00000000 --- a/winx64/include/grpc/load_reporting.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * - * 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_LOAD_REPORTING_H -#define GRPC_LOAD_REPORTING_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Metadata key for the gRPC LB load balancer token. - * - * The value corresponding to this key is an opaque token that is given to the - * frontend as part of each pick; the frontend sends this token to the backend - * in each request it sends when using that pick. The token is used by the - * backend to verify the request and to allow the backend to report load to the - * gRPC LB system. */ -#define GRPC_LB_TOKEN_MD_KEY "lb-token" - -/** Metadata key for gRPC LB cost reporting. - * - * The value corresponding to this key is an opaque binary blob reported by the - * backend as part of its trailing metadata containing cost information for the - * call. */ -#define GRPC_LB_COST_MD_KEY "lb-cost-bin" - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_LOAD_REPORTING_H */ diff --git a/winx64/include/grpc/slice.h b/winx64/include/grpc/slice.h deleted file mode 100644 index 9d2a9fbc..00000000 --- a/winx64/include/grpc/slice.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * - * 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_SLICE_H -#define GRPC_SLICE_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Increment the refcount of s. Requires slice is initialized. - Returns s. */ -GPRAPI grpc_slice grpc_slice_ref(grpc_slice s); - -/** Decrement the ref count of s. If the ref count of s reaches zero, all - slices sharing the ref count are destroyed, and considered no longer - initialized. If s is ultimately derived from a call to grpc_slice_new(start, - len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is - ultimately derived from a call to grpc_slice_new_with_len(start, len, dest) - where dest!=NULL , then (*dest)(start, len). Requires s initialized. */ -GPRAPI void grpc_slice_unref(grpc_slice s); - -/** Copy slice - create a new slice that contains the same data as s */ -GPRAPI grpc_slice grpc_slice_copy(grpc_slice s); - -/** Create a slice pointing at some data. Calls malloc to allocate a refcount - for the object, and arranges that destroy will be called with the pointer - passed in at destruction. */ -GPRAPI grpc_slice grpc_slice_new(void *p, size_t len, void (*destroy)(void *)); - -/** Equivalent to grpc_slice_new, but with a separate pointer that is - passed to the destroy function. This function can be useful when - the data is part of a larger structure that must be destroyed when - the data is no longer needed. */ -GPRAPI grpc_slice grpc_slice_new_with_user_data(void *p, size_t len, - void (*destroy)(void *), - void *user_data); - -/** Equivalent to grpc_slice_new, but with a two argument destroy function that - also takes the slice length. */ -GPRAPI grpc_slice grpc_slice_new_with_len(void *p, size_t len, - void (*destroy)(void *, size_t)); - -/** Equivalent to grpc_slice_new(malloc(len), len, free), but saves one malloc() - call. - Aborts if malloc() fails. */ -GPRAPI grpc_slice grpc_slice_malloc(size_t length); -GPRAPI grpc_slice grpc_slice_malloc_large(size_t length); - -#define GRPC_SLICE_MALLOC(len) \ - ((len) <= GRPC_SLICE_INLINED_SIZE \ - ? (grpc_slice){.refcount = NULL, \ - .data.inlined = {.length = (uint8_t)(len)}} \ - : grpc_slice_malloc_large((len))) - -/** Intern a slice: - - The return value for two invocations of this function with the same sequence - of bytes is a slice which points to the same memory. */ -GPRAPI grpc_slice grpc_slice_intern(grpc_slice slice); - -/** Create a slice by copying a string. - Does not preserve null terminators. - Equivalent to: - size_t len = strlen(source); - grpc_slice slice = grpc_slice_malloc(len); - memcpy(slice->data, source, len); */ -GPRAPI grpc_slice grpc_slice_from_copied_string(const char *source); - -/** Create a slice by copying a buffer. - Equivalent to: - grpc_slice slice = grpc_slice_malloc(len); - memcpy(slice->data, source, len); */ -GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char *source, size_t len); - -/** Create a slice pointing to constant memory */ -GPRAPI grpc_slice grpc_slice_from_static_string(const char *source); - -/** Create a slice pointing to constant memory */ -GPRAPI grpc_slice grpc_slice_from_static_buffer(const void *source, size_t len); - -/** Return a result slice derived from s, which shares a ref count with \a s, - where result.data==s.data+begin, and result.length==end-begin. The ref count - of \a s is increased by one. Do not assign result back to \a s. - Requires s initialized, begin <= end, begin <= s.length, and - end <= source->length. */ -GPRAPI grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end); - -/** The same as grpc_slice_sub, but without altering the ref count */ -GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end); - -/** Splits s into two: modifies s to be s[0:split], and returns a new slice, - sharing a refcount with s, that contains s[split:s.length]. - Requires s intialized, split <= s.length */ -GPRAPI grpc_slice grpc_slice_split_tail(grpc_slice *s, size_t split); - -typedef enum { - GRPC_SLICE_REF_TAIL = 1, - GRPC_SLICE_REF_HEAD = 2, - GRPC_SLICE_REF_BOTH = 1 + 2 -} grpc_slice_ref_whom; - -/** The same as grpc_slice_split_tail, but with an option to skip altering - * refcounts (grpc_slice_split_tail_maybe_ref(..., true) is equivalent to - * grpc_slice_split_tail(...)) */ -GPRAPI grpc_slice grpc_slice_split_tail_maybe_ref(grpc_slice *s, size_t split, - grpc_slice_ref_whom ref_whom); - -/** Splits s into two: modifies s to be s[split:s.length], and returns a new - slice, sharing a refcount with s, that contains s[0:split]. - Requires s intialized, split <= s.length */ -GPRAPI grpc_slice grpc_slice_split_head(grpc_slice *s, size_t split); - -GPRAPI grpc_slice grpc_empty_slice(void); - -GPRAPI uint32_t grpc_slice_default_hash_impl(grpc_slice s); -GPRAPI int grpc_slice_default_eq_impl(grpc_slice a, grpc_slice b); - -GPRAPI int grpc_slice_eq(grpc_slice a, grpc_slice b); - -/** Returns <0 if a < b, ==0 if a == b, >0 if a > b - The order is arbitrary, and is not guaranteed to be stable across different - versions of the API. */ -GPRAPI int grpc_slice_cmp(grpc_slice a, grpc_slice b); -GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char *b); -GPRAPI int grpc_slice_buf_cmp(grpc_slice a, const void *b, size_t blen); - -/** return non-zero if the first blen bytes of a are equal to b */ -GPRAPI int grpc_slice_buf_start_eq(grpc_slice a, const void *b, size_t blen); - -/** return the index of the last instance of \a c in \a s, or -1 if not found */ -GPRAPI int grpc_slice_rchr(grpc_slice s, char c); -GPRAPI int grpc_slice_chr(grpc_slice s, char c); - -/** return the index of the first occurance of \a needle in \a haystack, or -1 - if it's not found */ -GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle); - -GPRAPI uint32_t grpc_slice_hash(grpc_slice s); - -/** Do two slices point at the same memory, with the same length - If a or b is inlined, actually compares data */ -GPRAPI int grpc_slice_is_equivalent(grpc_slice a, grpc_slice b); - -/** Return a slice pointing to newly allocated memory that has the same contents - * as \a s */ -GPRAPI grpc_slice grpc_slice_dup(grpc_slice a); - -/** Return a copy of slice as a C string. Offers no protection against embedded - NULL's. Returned string must be freed with gpr_free. */ -GPRAPI char *grpc_slice_to_c_string(grpc_slice s); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SLICE_H */ diff --git a/winx64/include/grpc/slice_buffer.h b/winx64/include/grpc/slice_buffer.h deleted file mode 100644 index de4b86f7..00000000 --- a/winx64/include/grpc/slice_buffer.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * - * 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_SLICE_BUFFER_H -#define GRPC_SLICE_BUFFER_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** initialize a slice buffer */ -GPRAPI void grpc_slice_buffer_init(grpc_slice_buffer *sb); -/** destroy a slice buffer - unrefs any held elements */ -GPRAPI void grpc_slice_buffer_destroy(grpc_slice_buffer *sb); -/** Add an element to a slice buffer - takes ownership of the slice. - This function is allowed to concatenate the passed in slice to the end of - some other slice if desired by the slice buffer. */ -GPRAPI void grpc_slice_buffer_add(grpc_slice_buffer *sb, grpc_slice slice); -/** add an element to a slice buffer - takes ownership of the slice and returns - the index of the slice. - Guarantees that the slice will not be concatenated at the end of another - slice (i.e. the data for this slice will begin at the first byte of the - slice at the returned index in sb->slices) - The implementation MAY decide to concatenate data at the end of a small - slice added in this fashion. */ -GPRAPI size_t grpc_slice_buffer_add_indexed(grpc_slice_buffer *sb, - grpc_slice slice); -GPRAPI void grpc_slice_buffer_addn(grpc_slice_buffer *sb, grpc_slice *slices, - size_t n); -/** add a very small (less than 8 bytes) amount of data to the end of a slice - buffer: returns a pointer into which to add the data */ -GPRAPI uint8_t *grpc_slice_buffer_tiny_add(grpc_slice_buffer *sb, size_t len); -/** pop the last buffer, but don't unref it */ -GPRAPI void grpc_slice_buffer_pop(grpc_slice_buffer *sb); -/** clear a slice buffer, unref all elements */ -GPRAPI void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer *sb); -/** swap the contents of two slice buffers */ -GPRAPI void grpc_slice_buffer_swap(grpc_slice_buffer *a, grpc_slice_buffer *b); -/** move all of the elements of src into dst */ -GPRAPI void grpc_slice_buffer_move_into(grpc_slice_buffer *src, - grpc_slice_buffer *dst); -/** remove n bytes from the end of a slice buffer */ -GPRAPI void grpc_slice_buffer_trim_end(grpc_slice_buffer *src, size_t n, - grpc_slice_buffer *garbage); -/** move the first n bytes of src into dst */ -GPRAPI void grpc_slice_buffer_move_first(grpc_slice_buffer *src, size_t n, - grpc_slice_buffer *dst); -/** move the first n bytes of src into dst without adding references */ -GPRAPI void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer *src, - size_t n, - grpc_slice_buffer *dst); -/** move the first n bytes of src into dst (copying them) */ -GPRAPI void grpc_slice_buffer_move_first_into_buffer(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *src, - size_t n, void *dst); -/** take the first slice in the slice buffer */ -GPRAPI grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer *src); -/** undo the above with (a possibly different) \a slice */ -GPRAPI void grpc_slice_buffer_undo_take_first(grpc_slice_buffer *src, - grpc_slice slice); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SLICE_BUFFER_H */ diff --git a/winx64/include/grpc/status.h b/winx64/include/grpc/status.h deleted file mode 100644 index 9d8f50bc..00000000 --- a/winx64/include/grpc/status.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_STATUS_H -#define GRPC_STATUS_H - -#include - -#endif /* GRPC_STATUS_H */ diff --git a/winx64/include/grpc/support/alloc.h b/winx64/include/grpc/support/alloc.h deleted file mode 100644 index 4b59e137..00000000 --- a/winx64/include/grpc/support/alloc.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * - * 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_SUPPORT_ALLOC_H -#define GRPC_SUPPORT_ALLOC_H - -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct gpr_allocation_functions { - void *(*malloc_fn)(size_t size); - void *(*zalloc_fn)(size_t size); /** if NULL, uses malloc_fn then memset */ - void *(*realloc_fn)(void *ptr, size_t size); - void (*free_fn)(void *ptr); -} gpr_allocation_functions; - -/** malloc. - * If size==0, always returns NULL. Otherwise this function never returns NULL. - * The pointer returned is suitably aligned for any kind of variable it could - * contain. - */ -GPRAPI void *gpr_malloc(size_t size); -/** like malloc, but zero all bytes before returning them */ -GPRAPI void *gpr_zalloc(size_t size); -/** free */ -GPRAPI void gpr_free(void *ptr); -/** realloc, never returns NULL */ -GPRAPI void *gpr_realloc(void *p, size_t size); -/** aligned malloc, never returns NULL, will align to 1 << alignment_log */ -GPRAPI void *gpr_malloc_aligned(size_t size, size_t alignment_log); -/** free memory allocated by gpr_malloc_aligned */ -GPRAPI void gpr_free_aligned(void *ptr); - -/** Request the family of allocation functions in \a functions be used. NOTE - * that this request will be honored in a *best effort* basis and that no - * guarantees are made about the default functions (eg, malloc) being called. - * The functions.free_fn implementation must be a no-op for NULL input. */ -GPRAPI void gpr_set_allocation_functions(gpr_allocation_functions functions); - -/** Return the family of allocation functions currently in effect. */ -GPRAPI gpr_allocation_functions gpr_get_allocation_functions(); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_ALLOC_H */ diff --git a/winx64/include/grpc/support/atm.h b/winx64/include/grpc/support/atm.h deleted file mode 100644 index b3afa520..00000000 --- a/winx64/include/grpc/support/atm.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_ATM_H -#define GRPC_SUPPORT_ATM_H - -#include - -#endif /* GRPC_SUPPORT_ATM_H */ diff --git a/winx64/include/grpc/support/atm_gcc_atomic.h b/winx64/include/grpc/support/atm_gcc_atomic.h deleted file mode 100644 index e7b5ec40..00000000 --- a/winx64/include/grpc/support/atm_gcc_atomic.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_ATM_GCC_ATOMIC_H -#define GRPC_SUPPORT_ATM_GCC_ATOMIC_H - -#include - -#endif /* GRPC_SUPPORT_ATM_GCC_ATOMIC_H */ diff --git a/winx64/include/grpc/support/atm_gcc_sync.h b/winx64/include/grpc/support/atm_gcc_sync.h deleted file mode 100644 index 72848977..00000000 --- a/winx64/include/grpc/support/atm_gcc_sync.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_ATM_GCC_SYNC_H -#define GRPC_SUPPORT_ATM_GCC_SYNC_H - -#include - -#endif /* GRPC_SUPPORT_ATM_GCC_SYNC_H */ diff --git a/winx64/include/grpc/support/atm_windows.h b/winx64/include/grpc/support/atm_windows.h deleted file mode 100644 index 554c59a8..00000000 --- a/winx64/include/grpc/support/atm_windows.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_ATM_WINDOWS_H -#define GRPC_SUPPORT_ATM_WINDOWS_H - -#include - -#endif /* GRPC_SUPPORT_ATM_WINDOWS_H */ diff --git a/winx64/include/grpc/support/avl.h b/winx64/include/grpc/support/avl.h deleted file mode 100644 index d53ff5d9..00000000 --- a/winx64/include/grpc/support/avl.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * - * 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_SUPPORT_AVL_H -#define GRPC_SUPPORT_AVL_H - -#include - -/** internal node of an AVL tree */ -typedef struct gpr_avl_node { - gpr_refcount refs; - void *key; - void *value; - struct gpr_avl_node *left; - struct gpr_avl_node *right; - long height; -} gpr_avl_node; - -/** vtable for the AVL tree - * The optional user_data is propagated from the top level gpr_avl_XXX API. - * From the same API call, multiple vtable functions may be called multiple - * times. - */ -typedef struct gpr_avl_vtable { - /** destroy a key */ - void (*destroy_key)(void *key, void *user_data); - /** copy a key, returning new value */ - void *(*copy_key)(void *key, void *user_data); - /** compare key1, key2; return <0 if key1 < key2, - >0 if key1 > key2, 0 if key1 == key2 */ - long (*compare_keys)(void *key1, void *key2, void *user_data); - /** destroy a value */ - void (*destroy_value)(void *value, void *user_data); - /** copy a value */ - void *(*copy_value)(void *value, void *user_data); -} gpr_avl_vtable; - -/** "pointer" to an AVL tree - this is a reference - counted object - use gpr_avl_ref to add a reference, - gpr_avl_unref when done with a reference */ -typedef struct gpr_avl { - const gpr_avl_vtable *vtable; - gpr_avl_node *root; -} gpr_avl; - -/** Create an immutable AVL tree. */ -GPRAPI gpr_avl gpr_avl_create(const gpr_avl_vtable *vtable); -/** Add a reference to an existing tree - returns - the tree as a convenience. The optional user_data will be passed to vtable - functions. */ -GPRAPI gpr_avl gpr_avl_ref(gpr_avl avl, void *user_data); -/** Remove a reference to a tree - destroying it if there - are no references left. The optional user_data will be passed to vtable - functions. */ -GPRAPI void gpr_avl_unref(gpr_avl avl, void *user_data); -/** Return a new tree with (key, value) added to avl. - implicitly unrefs avl to allow easy chaining. - if key exists in avl, the new tree's key entry updated - (i.e. a duplicate is not created). The optional user_data will be passed to - vtable functions. */ -GPRAPI gpr_avl gpr_avl_add(gpr_avl avl, void *key, void *value, - void *user_data); -/** Return a new tree with key deleted - implicitly unrefs avl to allow easy chaining. The optional user_data will be - passed to vtable functions. */ -GPRAPI gpr_avl gpr_avl_remove(gpr_avl avl, void *key, void *user_data); -/** Lookup key, and return the associated value. - Does not mutate avl. - Returns NULL if key is not found. The optional user_data will be passed to - vtable functions.*/ -GPRAPI void *gpr_avl_get(gpr_avl avl, void *key, void *user_data); -/** Return 1 if avl contains key, 0 otherwise; if it has the key, sets *value to - its value. THe optional user_data will be passed to vtable functions. */ -GPRAPI int gpr_avl_maybe_get(gpr_avl avl, void *key, void **value, - void *user_data); -/** Return 1 if avl is empty, 0 otherwise */ -GPRAPI int gpr_avl_is_empty(gpr_avl avl); - -#endif /* GRPC_SUPPORT_AVL_H */ diff --git a/winx64/include/grpc/support/cmdline.h b/winx64/include/grpc/support/cmdline.h deleted file mode 100644 index 9f46491b..00000000 --- a/winx64/include/grpc/support/cmdline.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * - * 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_SUPPORT_CMDLINE_H -#define GRPC_SUPPORT_CMDLINE_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Simple command line parser. - - Supports flags that can be specified as -foo, --foo, --no-foo, -no-foo, etc - And integers, strings that can be specified as -foo=4, -foo blah, etc - - No support for short command line options (but we may get that in the - future.) - - Usage (for a program with a single flag argument 'foo'): - - int main(int argc, char **argv) { - gpr_cmdline *cl; - int verbose = 0; - - cl = gpr_cmdline_create("My cool tool"); - gpr_cmdline_add_int(cl, "verbose", "Produce verbose output?", &verbose); - gpr_cmdline_parse(cl, argc, argv); - gpr_cmdline_destroy(cl); - - if (verbose) { - gpr_log(GPR_INFO, "Goodbye cruel world!"); - } - - return 0; - } */ - -typedef struct gpr_cmdline gpr_cmdline; - -/** Construct a command line parser: takes a short description of the tool - doing the parsing */ -GPRAPI gpr_cmdline *gpr_cmdline_create(const char *description); -/** Add an integer parameter, with a name (used on the command line) and some - helpful text (used in the command usage) */ -GPRAPI void gpr_cmdline_add_int(gpr_cmdline *cl, const char *name, - const char *help, int *value); -/** The same, for a boolean flag */ -GPRAPI void gpr_cmdline_add_flag(gpr_cmdline *cl, const char *name, - const char *help, int *value); -/** And for a string */ -GPRAPI void gpr_cmdline_add_string(gpr_cmdline *cl, const char *name, - const char *help, char **value); -/** Set a callback for non-named arguments */ -GPRAPI void gpr_cmdline_on_extra_arg( - gpr_cmdline *cl, const char *name, const char *help, - void (*on_extra_arg)(void *user_data, const char *arg), void *user_data); -/** Enable surviving failure: default behavior is to exit the process */ -GPRAPI void gpr_cmdline_set_survive_failure(gpr_cmdline *cl); -/** Parse the command line; returns 1 on success, on failure either dies - (by default) or returns 0 if gpr_cmdline_set_survive_failure() has been - called */ -GPRAPI int gpr_cmdline_parse(gpr_cmdline *cl, int argc, char **argv); -/** Destroy the parser */ -GPRAPI void gpr_cmdline_destroy(gpr_cmdline *cl); -/** Get a string describing usage */ -GPRAPI char *gpr_cmdline_usage_string(gpr_cmdline *cl, const char *argv0); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_CMDLINE_H */ diff --git a/winx64/include/grpc/support/cpu.h b/winx64/include/grpc/support/cpu.h deleted file mode 100644 index f0e898e8..00000000 --- a/winx64/include/grpc/support/cpu.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - * 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_SUPPORT_CPU_H -#define GRPC_SUPPORT_CPU_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Interface providing CPU information for currently running system */ - -/** Return the number of CPU cores on the current system. Will return 0 if - the information is not available. */ -GPRAPI unsigned gpr_cpu_num_cores(void); - -/** Return the CPU on which the current thread is executing; N.B. This should - be considered advisory only - it is possible that the thread is switched - to a different CPU at any time. Returns a value in range - [0, gpr_cpu_num_cores() - 1] */ -GPRAPI unsigned gpr_cpu_current_cpu(void); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif /* GRPC_SUPPORT_CPU_H */ diff --git a/winx64/include/grpc/support/histogram.h b/winx64/include/grpc/support/histogram.h deleted file mode 100644 index 8489daa2..00000000 --- a/winx64/include/grpc/support/histogram.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - * 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_SUPPORT_HISTOGRAM_H -#define GRPC_SUPPORT_HISTOGRAM_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct gpr_histogram gpr_histogram; - -GPRAPI gpr_histogram *gpr_histogram_create(double resolution, - double max_bucket_start); -GPRAPI void gpr_histogram_destroy(gpr_histogram *h); -GPRAPI void gpr_histogram_add(gpr_histogram *h, double x); - -/** The following merges the second histogram into the first. It only works - if they have the same buckets and resolution. Returns 0 on failure, 1 - on success */ -GPRAPI int gpr_histogram_merge(gpr_histogram *dst, const gpr_histogram *src); - -GPRAPI double gpr_histogram_percentile(gpr_histogram *histogram, - double percentile); -GPRAPI double gpr_histogram_mean(gpr_histogram *histogram); -GPRAPI double gpr_histogram_stddev(gpr_histogram *histogram); -GPRAPI double gpr_histogram_variance(gpr_histogram *histogram); -GPRAPI double gpr_histogram_maximum(gpr_histogram *histogram); -GPRAPI double gpr_histogram_minimum(gpr_histogram *histogram); -GPRAPI double gpr_histogram_count(gpr_histogram *histogram); -GPRAPI double gpr_histogram_sum(gpr_histogram *histogram); -GPRAPI double gpr_histogram_sum_of_squares(gpr_histogram *histogram); - -GPRAPI const uint32_t *gpr_histogram_get_contents(gpr_histogram *histogram, - size_t *count); -GPRAPI void gpr_histogram_merge_contents(gpr_histogram *histogram, - const uint32_t *data, - size_t data_count, double min_seen, - double max_seen, double sum, - double sum_of_squares, double count); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_HISTOGRAM_H */ diff --git a/winx64/include/grpc/support/host_port.h b/winx64/include/grpc/support/host_port.h deleted file mode 100644 index 41592dfe..00000000 --- a/winx64/include/grpc/support/host_port.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * 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_SUPPORT_HOST_PORT_H -#define GRPC_SUPPORT_HOST_PORT_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Given a host and port, creates a newly-allocated string of the form - "host:port" or "[ho:st]:port", depending on whether the host contains colons - like an IPv6 literal. If the host is already bracketed, then additional - brackets will not be added. - - Usage is similar to gpr_asprintf: returns the number of bytes written - (excluding the final '\0'), and *out points to a string which must later be - destroyed using gpr_free(). - - In the unlikely event of an error, returns -1 and sets *out to NULL. */ -GPRAPI int gpr_join_host_port(char **out, const char *host, int port); - -/** Given a name in the form "host:port" or "[ho:st]:port", split into hostname - and port number, into newly allocated strings, which must later be - destroyed using gpr_free(). - Return 1 on success, 0 on failure. Guarantees *host and *port == NULL on - failure. */ -GPRAPI int gpr_split_host_port(const char *name, char **host, char **port); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_HOST_PORT_H */ diff --git a/winx64/include/grpc/support/log.h b/winx64/include/grpc/support/log.h deleted file mode 100644 index a22fb6a6..00000000 --- a/winx64/include/grpc/support/log.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * - * 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_SUPPORT_LOG_H -#define GRPC_SUPPORT_LOG_H - -#include -#include -#include /* for abort() */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** GPR log API. - - Usage (within grpc): - - int argument1 = 3; - char* argument2 = "hello"; - gpr_log(GPR_DEBUG, "format string %d", argument1); - gpr_log(GPR_INFO, "hello world"); - gpr_log(GPR_ERROR, "%d %s!!", argument1, argument2); */ - -/** The severity of a log message - use the #defines below when calling into - gpr_log to additionally supply file and line data */ -typedef enum gpr_log_severity { - GPR_LOG_SEVERITY_DEBUG, - GPR_LOG_SEVERITY_INFO, - GPR_LOG_SEVERITY_ERROR -} gpr_log_severity; - -#define GPR_LOG_VERBOSITY_UNSET -1 - -/** Returns a string representation of the log severity */ -GPRAPI const char *gpr_log_severity_string(gpr_log_severity severity); - -/** Macros to build log contexts at various severity levels */ -#define GPR_DEBUG __FILE__, __LINE__, GPR_LOG_SEVERITY_DEBUG -#define GPR_INFO __FILE__, __LINE__, GPR_LOG_SEVERITY_INFO -#define GPR_ERROR __FILE__, __LINE__, GPR_LOG_SEVERITY_ERROR - -/** Log a message. It's advised to use GPR_xxx above to generate the context - * for each message */ -GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, - const char *format, ...) GPR_PRINT_FORMAT_CHECK(4, 5); - -GPRAPI void gpr_log_message(const char *file, int line, - gpr_log_severity severity, const char *message); - -/** Set global log verbosity */ -GPRAPI void gpr_set_log_verbosity(gpr_log_severity min_severity_to_print); - -GPRAPI void gpr_log_verbosity_init(); - -/** Log overrides: applications can use this API to intercept logging calls - and use their own implementations */ - -typedef struct { - const char *file; - int line; - gpr_log_severity severity; - const char *message; -} gpr_log_func_args; - -typedef void (*gpr_log_func)(gpr_log_func_args *args); -GPRAPI void gpr_set_log_function(gpr_log_func func); - -/** abort() the process if x is zero, having written a line to the log. - - Intended for internal invariants. If the error can be recovered from, - without the possibility of corruption, or might best be reflected via - an exception in a higher-level language, consider returning error code. */ -#define GPR_ASSERT(x) \ - do { \ - if (!(x)) { \ - gpr_log(GPR_ERROR, "assertion failed: %s", #x); \ - abort(); \ - } \ - } while (0) - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_LOG_H */ diff --git a/winx64/include/grpc/support/log_windows.h b/winx64/include/grpc/support/log_windows.h deleted file mode 100644 index b530fd50..00000000 --- a/winx64/include/grpc/support/log_windows.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * - * 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_SUPPORT_LOG_WINDOWS_H -#define GRPC_SUPPORT_LOG_WINDOWS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Returns a string allocated with gpr_malloc that contains a UTF-8 - * formatted error message, corresponding to the error messageid. - * Use in conjunction with GetLastError() et al. - */ -GPRAPI char *gpr_format_message(int messageid); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_LOG_WINDOWS_H */ diff --git a/winx64/include/grpc/support/port_platform.h b/winx64/include/grpc/support/port_platform.h deleted file mode 100644 index 26025dcd..00000000 --- a/winx64/include/grpc/support/port_platform.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_PORT_PLATFORM_H -#define GRPC_SUPPORT_PORT_PLATFORM_H - -#include - -#endif /* GRPC_SUPPORT_PORT_PLATFORM_H */ diff --git a/winx64/include/grpc/support/string_util.h b/winx64/include/grpc/support/string_util.h deleted file mode 100644 index c4fc159d..00000000 --- a/winx64/include/grpc/support/string_util.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * - * 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_SUPPORT_STRING_UTIL_H -#define GRPC_SUPPORT_STRING_UTIL_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** String utility functions */ - -/** Returns a copy of src that can be passed to gpr_free(). - If allocation fails or if src is NULL, returns NULL. */ -GPRAPI char *gpr_strdup(const char *src); - -/** printf to a newly-allocated string. The set of supported formats may vary - between platforms. - - On success, returns the number of bytes printed (excluding the final '\0'), - and *strp points to a string which must later be destroyed with gpr_free(). - - On error, returns -1 and sets *strp to NULL. If the format string is bad, - the result is undefined. */ -GPRAPI int gpr_asprintf(char **strp, const char *format, ...) - GPR_PRINT_FORMAT_CHECK(2, 3); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_STRING_UTIL_H */ diff --git a/winx64/include/grpc/support/subprocess.h b/winx64/include/grpc/support/subprocess.h deleted file mode 100644 index c06e6296..00000000 --- a/winx64/include/grpc/support/subprocess.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - * 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_SUPPORT_SUBPROCESS_H -#define GRPC_SUPPORT_SUBPROCESS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct gpr_subprocess gpr_subprocess; - -/** .exe on windows, empty on unices */ -GPRAPI const char *gpr_subprocess_binary_extension(); - -GPRAPI gpr_subprocess *gpr_subprocess_create(int argc, const char **argv); -/** if subprocess has not been joined, kill it */ -GPRAPI void gpr_subprocess_destroy(gpr_subprocess *p); -/** returns exit status; can be called at most once */ -GPRAPI int gpr_subprocess_join(gpr_subprocess *p); -GPRAPI void gpr_subprocess_interrupt(gpr_subprocess *p); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif /* GRPC_SUPPORT_SUBPROCESS_H */ diff --git a/winx64/include/grpc/support/sync.h b/winx64/include/grpc/support/sync.h deleted file mode 100644 index fe8a59a5..00000000 --- a/winx64/include/grpc/support/sync.h +++ /dev/null @@ -1,280 +0,0 @@ -/* - * - * 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_SUPPORT_SYNC_H -#define GRPC_SUPPORT_SYNC_H - -#include /* for gpr_timespec */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** --- Mutex interface --- - - At most one thread may hold an exclusive lock on a mutex at any given time. - Actions taken by a thread that holds a mutex exclusively happen after - actions taken by all previous holders of the mutex. Variables of type - gpr_mu are uninitialized when first declared. */ - -/** Initialize *mu. Requires: *mu uninitialized. */ -GPRAPI void gpr_mu_init(gpr_mu *mu); - -/** Cause *mu no longer to be initialized, freeing any memory in use. Requires: - *mu initialized; no other concurrent operation on *mu. */ -GPRAPI void gpr_mu_destroy(gpr_mu *mu); - -/** Wait until no thread has a lock on *mu, cause the calling thread to own an - exclusive lock on *mu, then return. May block indefinitely or crash if the - calling thread has a lock on *mu. Requires: *mu initialized. */ -GPRAPI void gpr_mu_lock(gpr_mu *mu); - -/** Release an exclusive lock on *mu held by the calling thread. Requires: *mu - initialized; the calling thread holds an exclusive lock on *mu. */ -GPRAPI void gpr_mu_unlock(gpr_mu *mu); - -/** Without blocking, attempt to acquire an exclusive lock on *mu for the - calling thread, then return non-zero iff success. Fail, if any thread holds - the lock; succeeds with high probability if no thread holds the lock. - Requires: *mu initialized. */ -GPRAPI int gpr_mu_trylock(gpr_mu *mu); - -/** --- Condition variable interface --- - - A while-loop should be used with gpr_cv_wait() when waiting for conditions - to become true. See the example below. Variables of type gpr_cv are - uninitialized when first declared. */ - -/** Initialize *cv. Requires: *cv uninitialized. */ -GPRAPI void gpr_cv_init(gpr_cv *cv); - -/** Cause *cv no longer to be initialized, freeing any memory in use. Requires: - *cv initialized; no other concurrent operation on *cv.*/ -GPRAPI void gpr_cv_destroy(gpr_cv *cv); - -/** Atomically release *mu and wait on *cv. When the calling thread is woken - from *cv or the deadline abs_deadline is exceeded, execute gpr_mu_lock(mu) - and return whether the deadline was exceeded. Use - abs_deadline==gpr_inf_future for no deadline. abs_deadline can be either - an absolute deadline, or a GPR_TIMESPAN. May return even when not - woken explicitly. Requires: *mu and *cv initialized; the calling thread - holds an exclusive lock on *mu. */ -GPRAPI int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline); - -/** If any threads are waiting on *cv, wake at least one. - Clients may treat this as an optimization of gpr_cv_broadcast() - for use in the case where waking more than one waiter is not useful. - Requires: *cv initialized. */ -GPRAPI void gpr_cv_signal(gpr_cv *cv); - -/** Wake all threads waiting on *cv. Requires: *cv initialized. */ -GPRAPI void gpr_cv_broadcast(gpr_cv *cv); - -/** --- One-time initialization --- - - gpr_once must be declared with static storage class, and initialized with - GPR_ONCE_INIT. e.g., - static gpr_once once_var = GPR_ONCE_INIT; */ - -/** Ensure that (*init_routine)() has been called exactly once (for the - specified gpr_once instance) and then return. - If multiple threads call gpr_once() on the same gpr_once instance, one of - them will call (*init_routine)(), and the others will block until that call - finishes.*/ -GPRAPI void gpr_once_init(gpr_once *once, void (*init_routine)(void)); - -/** --- One-time event notification --- - - These operations act on a gpr_event, which should be initialized with - gpr_ev_init(), or with GPR_EVENT_INIT if static, e.g., - static gpr_event event_var = GPR_EVENT_INIT; - It requires no destruction. */ - -/** Initialize *ev. */ -GPRAPI void gpr_event_init(gpr_event *ev); - -/** Set *ev so that gpr_event_get() and gpr_event_wait() will return value. - Requires: *ev initialized; value != NULL; no prior or concurrent calls to - gpr_event_set(ev, ...) since initialization. */ -GPRAPI void gpr_event_set(gpr_event *ev, void *value); - -/** Return the value set by gpr_event_set(ev, ...), or NULL if no such call has - completed. If the result is non-NULL, all operations that occurred prior to - the gpr_event_set(ev, ...) set will be visible after this call returns. - Requires: *ev initialized. This operation is faster than acquiring a mutex - on most platforms. */ -GPRAPI void *gpr_event_get(gpr_event *ev); - -/** Wait until *ev is set by gpr_event_set(ev, ...), or abs_deadline is - exceeded, then return gpr_event_get(ev). Requires: *ev initialized. Use - abs_deadline==gpr_inf_future for no deadline. When the event has been - signalled before the call, this operation is faster than acquiring a mutex - on most platforms. */ -GPRAPI void *gpr_event_wait(gpr_event *ev, gpr_timespec abs_deadline); - -/** --- Reference counting --- - - These calls act on the type gpr_refcount. It requires no destruction. */ - -/** Initialize *r to value n. */ -GPRAPI void gpr_ref_init(gpr_refcount *r, int n); - -/** Increment the reference count *r. Requires *r initialized. */ -GPRAPI void gpr_ref(gpr_refcount *r); - -/** Increment the reference count *r. Requires *r initialized. - Crashes if refcount is zero */ -GPRAPI void gpr_ref_non_zero(gpr_refcount *r); - -/** Increment the reference count *r by n. Requires *r initialized, n > 0. */ -GPRAPI void gpr_refn(gpr_refcount *r, int n); - -/** Decrement the reference count *r and return non-zero iff it has reached - zero. . Requires *r initialized. */ -GPRAPI int gpr_unref(gpr_refcount *r); - -/** Return non-zero iff the reference count of *r is one, and thus is owned - by exactly one object. */ -GPRAPI int gpr_ref_is_unique(gpr_refcount *r); - -/** --- Stats counters --- - - These calls act on the integral type gpr_stats_counter. It requires no - destruction. Static instances may be initialized with - gpr_stats_counter c = GPR_STATS_INIT; - Beware: These operations do not imply memory barriers. Do not use them to - synchronize other events. */ - -/** Initialize *c to the value n. */ -GPRAPI void gpr_stats_init(gpr_stats_counter *c, intptr_t n); - -/** *c += inc. Requires: *c initialized. */ -GPRAPI void gpr_stats_inc(gpr_stats_counter *c, intptr_t inc); - -/** Return *c. Requires: *c initialized. */ -GPRAPI intptr_t gpr_stats_read(const gpr_stats_counter *c); - -/** ==================Example use of interface=================== - A producer-consumer queue of up to N integers, - illustrating the use of the calls in this interface. */ -#if 0 - -#define N 4 - - typedef struct queue { - gpr_cv non_empty; /* Signalled when length becomes non-zero. */ - gpr_cv non_full; /* Signalled when length becomes non-N. */ - gpr_mu mu; /* Protects all fields below. - (That is, except during initialization or - destruction, the fields below should be accessed - only by a thread that holds mu.) */ - int head; /* Index of head of queue 0..N-1. */ - int length; /* Number of valid elements in queue 0..N. */ - int elem[N]; /* elem[head .. head+length-1] are queue elements. */ - } queue; - - /* Initialize *q. */ - void queue_init(queue *q) { - gpr_mu_init(&q->mu); - gpr_cv_init(&q->non_empty); - gpr_cv_init(&q->non_full); - q->head = 0; - q->length = 0; - } - - /* Free storage associated with *q. */ - void queue_destroy(queue *q) { - gpr_mu_destroy(&q->mu); - gpr_cv_destroy(&q->non_empty); - gpr_cv_destroy(&q->non_full); - } - - /* Wait until there is room in *q, then append x to *q. */ - void queue_append(queue *q, int x) { - gpr_mu_lock(&q->mu); - /* To wait for a predicate without a deadline, loop on the negation of the - predicate, and use gpr_cv_wait(..., gpr_inf_future) inside the loop - to release the lock, wait, and reacquire on each iteration. Code that - makes the condition true should use gpr_cv_broadcast() on the - corresponding condition variable. The predicate must be on state - protected by the lock. */ - while (q->length == N) { - gpr_cv_wait(&q->non_full, &q->mu, gpr_inf_future); - } - if (q->length == 0) { /* Wake threads blocked in queue_remove(). */ - /* It's normal to use gpr_cv_broadcast() or gpr_signal() while - holding the lock. */ - gpr_cv_broadcast(&q->non_empty); - } - q->elem[(q->head + q->length) % N] = x; - q->length++; - gpr_mu_unlock(&q->mu); - } - - /* If it can be done without blocking, append x to *q and return non-zero. - Otherwise return 0. */ - int queue_try_append(queue *q, int x) { - int result = 0; - if (gpr_mu_trylock(&q->mu)) { - if (q->length != N) { - if (q->length == 0) { /* Wake threads blocked in queue_remove(). */ - gpr_cv_broadcast(&q->non_empty); - } - q->elem[(q->head + q->length) % N] = x; - q->length++; - result = 1; - } - gpr_mu_unlock(&q->mu); - } - return result; - } - - /* Wait until the *q is non-empty or deadline abs_deadline passes. If the - queue is non-empty, remove its head entry, place it in *head, and return - non-zero. Otherwise return 0. */ - int queue_remove(queue *q, int *head, gpr_timespec abs_deadline) { - int result = 0; - gpr_mu_lock(&q->mu); - /* To wait for a predicate with a deadline, loop on the negation of the - predicate or until gpr_cv_wait() returns true. Code that makes - the condition true should use gpr_cv_broadcast() on the corresponding - condition variable. The predicate must be on state protected by the - lock. */ - while (q->length == 0 && - !gpr_cv_wait(&q->non_empty, &q->mu, abs_deadline)) { - } - if (q->length != 0) { /* Queue is non-empty. */ - result = 1; - if (q->length == N) { /* Wake threads blocked in queue_append(). */ - gpr_cv_broadcast(&q->non_full); - } - *head = q->elem[q->head]; - q->head = (q->head + 1) % N; - q->length--; - } /* else deadline exceeded */ - gpr_mu_unlock(&q->mu); - return result; - } -#endif /* 0 */ - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_SYNC_H */ diff --git a/winx64/include/grpc/support/sync_generic.h b/winx64/include/grpc/support/sync_generic.h deleted file mode 100644 index 970b7a5d..00000000 --- a/winx64/include/grpc/support/sync_generic.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_SYNC_GENERIC_H -#define GRPC_SUPPORT_SYNC_GENERIC_H - -#include - -#endif /* GRPC_SUPPORT_SYNC_GENERIC_H */ diff --git a/winx64/include/grpc/support/sync_posix.h b/winx64/include/grpc/support/sync_posix.h deleted file mode 100644 index 482a6004..00000000 --- a/winx64/include/grpc/support/sync_posix.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_SYNC_POSIX_H -#define GRPC_SUPPORT_SYNC_POSIX_H - -#include - -#endif /* GRPC_SUPPORT_SYNC_POSIX_H */ diff --git a/winx64/include/grpc/support/sync_windows.h b/winx64/include/grpc/support/sync_windows.h deleted file mode 100644 index 90ce8b77..00000000 --- a/winx64/include/grpc/support/sync_windows.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * 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_SUPPORT_SYNC_WINDOWS_H -#define GRPC_SUPPORT_SYNC_WINDOWS_H - -#include - -#endif /* GRPC_SUPPORT_SYNC_WINDOWS_H */ diff --git a/winx64/include/grpc/support/thd.h b/winx64/include/grpc/support/thd.h deleted file mode 100644 index 25bd8f12..00000000 --- a/winx64/include/grpc/support/thd.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * - * 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_SUPPORT_THD_H -#define GRPC_SUPPORT_THD_H -/** Thread interface for GPR. - - Types - gpr_thd_id a thread identifier. - (Currently no calls take a thread identifier. - It exists for future extensibility.) - gpr_thd_options options used when creating a thread - */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef uintptr_t gpr_thd_id; - -/** Thread creation options. */ -typedef struct { - int flags; /** Opaque field. Get and set with accessors below. */ -} gpr_thd_options; - -/** Create a new thread running (*thd_body)(arg) and place its thread identifier - in *t, and return true. If there are insufficient resources, return false. - If options==NULL, default options are used. - The thread is immediately runnable, and exits when (*thd_body)() returns. */ -GPRAPI int gpr_thd_new(gpr_thd_id *t, void (*thd_body)(void *arg), void *arg, - const gpr_thd_options *options); - -/** Return a gpr_thd_options struct with all fields set to defaults. */ -GPRAPI gpr_thd_options gpr_thd_options_default(void); - -/** Set the thread to become detached on startup - this is the default. */ -GPRAPI void gpr_thd_options_set_detached(gpr_thd_options *options); - -/** Set the thread to become joinable - mutually exclusive with detached. */ -GPRAPI void gpr_thd_options_set_joinable(gpr_thd_options *options); - -/** Returns non-zero if the option detached is set. */ -GPRAPI int gpr_thd_options_is_detached(const gpr_thd_options *options); - -/** Returns non-zero if the option joinable is set. */ -GPRAPI int gpr_thd_options_is_joinable(const gpr_thd_options *options); - -/** Returns the identifier of the current thread. */ -GPRAPI gpr_thd_id gpr_thd_currentid(void); - -/** Blocks until the specified thread properly terminates. - Calling this on a detached thread has unpredictable results. */ -GPRAPI void gpr_thd_join(gpr_thd_id t); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_THD_H */ diff --git a/winx64/include/grpc/support/time.h b/winx64/include/grpc/support/time.h deleted file mode 100644 index 62d354aa..00000000 --- a/winx64/include/grpc/support/time.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * - * 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_SUPPORT_TIME_H -#define GRPC_SUPPORT_TIME_H - -#include - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Time constants. */ -GPRAPI gpr_timespec -gpr_time_0(gpr_clock_type type); /** The zero time interval. */ -GPRAPI gpr_timespec gpr_inf_future(gpr_clock_type type); /** The far future */ -GPRAPI gpr_timespec gpr_inf_past(gpr_clock_type type); /** The far past. */ - -#define GPR_MS_PER_SEC 1000 -#define GPR_US_PER_SEC 1000000 -#define GPR_NS_PER_SEC 1000000000 -#define GPR_NS_PER_MS 1000000 -#define GPR_NS_PER_US 1000 -#define GPR_US_PER_MS 1000 - -/** initialize time subsystem */ -GPRAPI void gpr_time_init(void); - -/** Return the current time measured from the given clocks epoch. */ -GPRAPI gpr_timespec gpr_now(gpr_clock_type clock); - -/** Convert a timespec from one clock to another */ -GPRAPI gpr_timespec gpr_convert_clock_type(gpr_timespec t, - gpr_clock_type target_clock); - -/** Return -ve, 0, or +ve according to whether a < b, a == b, or a > b - respectively. */ -GPRAPI int gpr_time_cmp(gpr_timespec a, gpr_timespec b); - -GPRAPI gpr_timespec gpr_time_max(gpr_timespec a, gpr_timespec b); -GPRAPI gpr_timespec gpr_time_min(gpr_timespec a, gpr_timespec b); - -/** Add and subtract times. Calculations saturate at infinities. */ -GPRAPI gpr_timespec gpr_time_add(gpr_timespec a, gpr_timespec b); -GPRAPI gpr_timespec gpr_time_sub(gpr_timespec a, gpr_timespec b); - -/** Return a timespec representing a given number of time units. INT64_MIN is - interpreted as gpr_inf_past, and INT64_MAX as gpr_inf_future. */ -GPRAPI gpr_timespec gpr_time_from_micros(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_nanos(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_millis(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_seconds(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_minutes(int64_t x, gpr_clock_type clock_type); -GPRAPI gpr_timespec gpr_time_from_hours(int64_t x, gpr_clock_type clock_type); - -GPRAPI int32_t gpr_time_to_millis(gpr_timespec timespec); - -/** Return 1 if two times are equal or within threshold of each other, - 0 otherwise */ -GPRAPI int gpr_time_similar(gpr_timespec a, gpr_timespec b, - gpr_timespec threshold); - -/** Sleep until at least 'until' - an absolute timeout */ -GPRAPI void gpr_sleep_until(gpr_timespec until); - -GPRAPI double gpr_timespec_to_micros(gpr_timespec t); - -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_TIME_H */ diff --git a/winx64/include/grpc/support/tls.h b/winx64/include/grpc/support/tls.h deleted file mode 100644 index 8519a835..00000000 --- a/winx64/include/grpc/support/tls.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * 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_SUPPORT_TLS_H -#define GRPC_SUPPORT_TLS_H - -#include - -/** Thread local storage. - - A minimal wrapper that should be implementable across many compilers, - and implementable efficiently across most modern compilers. - - Thread locals have type intptr_t. - - Declaring a thread local variable 'foo': - GPR_TLS_DECL(foo); - Thread locals always have static scope. - - Initializing a thread local (must be done at library initialization - time): - gpr_tls_init(&foo); - - Destroying a thread local: - gpr_tls_destroy(&foo); - - Setting a thread local (returns new_value): - gpr_tls_set(&foo, new_value); - - Accessing a thread local: - current_value = gpr_tls_get(&foo); - - ALL functions here may be implemented as macros. */ - -#ifdef GPR_GCC_TLS -#include -#endif - -#ifdef GPR_MSVC_TLS -#include -#endif - -#ifdef GPR_PTHREAD_TLS -#include -#endif - -#endif /* GRPC_SUPPORT_TLS_H */ diff --git a/winx64/include/grpc/support/tls_gcc.h b/winx64/include/grpc/support/tls_gcc.h deleted file mode 100644 index e6d8c014..00000000 --- a/winx64/include/grpc/support/tls_gcc.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * - * 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_SUPPORT_TLS_GCC_H -#define GRPC_SUPPORT_TLS_GCC_H - -#include - -#include - -/** Thread local storage based on gcc compiler primitives. - #include tls.h to use this - and see that file for documentation */ - -#ifndef NDEBUG - -struct gpr_gcc_thread_local { - intptr_t value; - bool *inited; -}; - -#define GPR_TLS_DECL(name) \ - static bool name##_inited = false; \ - static __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)} - -#define gpr_tls_init(tls) \ - do { \ - GPR_ASSERT(*((tls)->inited) == false); \ - *((tls)->inited) = true; \ - } while (0) - -/** It is allowed to call gpr_tls_init after gpr_tls_destroy is called. */ -#define gpr_tls_destroy(tls) \ - do { \ - GPR_ASSERT(*((tls)->inited)); \ - *((tls)->inited) = false; \ - } while (0) - -#define gpr_tls_set(tls, new_value) \ - do { \ - GPR_ASSERT(*((tls)->inited)); \ - (tls)->value = (new_value); \ - } while (0) - -#define gpr_tls_get(tls) \ - ({ \ - GPR_ASSERT(*((tls)->inited)); \ - (tls)->value; \ - }) - -#else /* NDEBUG */ - -struct gpr_gcc_thread_local { - intptr_t value; -}; - -#define GPR_TLS_DECL(name) \ - static __thread struct gpr_gcc_thread_local name = {0} - -#define gpr_tls_init(tls) \ - do { \ - } while (0) -#define gpr_tls_destroy(tls) \ - do { \ - } while (0) -#define gpr_tls_set(tls, new_value) (((tls)->value) = (new_value)) -#define gpr_tls_get(tls) ((tls)->value) - -#endif /* NDEBUG */ - -#endif /* GRPC_SUPPORT_TLS_GCC_H */ diff --git a/winx64/include/grpc/support/tls_msvc.h b/winx64/include/grpc/support/tls_msvc.h deleted file mode 100644 index e5f2205f..00000000 --- a/winx64/include/grpc/support/tls_msvc.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * - * 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_SUPPORT_TLS_MSVC_H -#define GRPC_SUPPORT_TLS_MSVC_H - -/** Thread local storage based on ms visual c compiler primitives. - #include tls.h to use this - and see that file for documentation */ - -struct gpr_msvc_thread_local { - intptr_t value; -}; - -#define GPR_TLS_DECL(name) \ - static __declspec(thread) struct gpr_msvc_thread_local name = {0} - -#define gpr_tls_init(tls) \ - do { \ - } while (0) -#define gpr_tls_destroy(tls) \ - do { \ - } while (0) -#define gpr_tls_set(tls, new_value) (((tls)->value) = (new_value)) -#define gpr_tls_get(tls) ((tls)->value) - -#endif /* GRPC_SUPPORT_TLS_MSVC_H */ diff --git a/winx64/include/grpc/support/tls_pthread.h b/winx64/include/grpc/support/tls_pthread.h deleted file mode 100644 index a68b4556..00000000 --- a/winx64/include/grpc/support/tls_pthread.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * - * 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_SUPPORT_TLS_PTHREAD_H -#define GRPC_SUPPORT_TLS_PTHREAD_H - -#include /* for GPR_ASSERT */ -#include - -/** Thread local storage based on pthread library calls. - #include tls.h to use this - and see that file for documentation */ - -struct gpr_pthread_thread_local { - pthread_key_t key; -}; - -#define GPR_TLS_DECL(name) static struct gpr_pthread_thread_local name = {0} - -#define gpr_tls_init(tls) GPR_ASSERT(0 == pthread_key_create(&(tls)->key, NULL)) -#define gpr_tls_destroy(tls) pthread_key_delete((tls)->key) -#define gpr_tls_get(tls) ((intptr_t)pthread_getspecific((tls)->key)) -#ifdef __cplusplus -extern "C" { -#endif -intptr_t gpr_tls_set(struct gpr_pthread_thread_local *tls, intptr_t value); -#ifdef __cplusplus -} -#endif - -#endif /* GRPC_SUPPORT_TLS_PTHREAD_H */ diff --git a/winx64/include/grpc/support/useful.h b/winx64/include/grpc/support/useful.h deleted file mode 100644 index bd66d3bb..00000000 --- a/winx64/include/grpc/support/useful.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * 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_SUPPORT_USEFUL_H -#define GRPC_SUPPORT_USEFUL_H - -/** useful macros that don't belong anywhere else */ - -#define GPR_MIN(a, b) ((a) < (b) ? (a) : (b)) -#define GPR_MAX(a, b) ((a) > (b) ? (a) : (b)) -#define GPR_CLAMP(a, min, max) ((a) < (min) ? (min) : (a) > (max) ? (max) : (a)) -/** rotl, rotr assume x is unsigned */ -#define GPR_ROTL(x, n) (((x) << (n)) | ((x) >> (sizeof(x) * 8 - (n)))) -#define GPR_ROTR(x, n) (((x) >> (n)) | ((x) << (sizeof(x) * 8 - (n)))) - -#define GPR_ARRAY_SIZE(array) (sizeof(array) / sizeof(*(array))) - -#define GPR_SWAP(type, a, b) \ - do { \ - type x = a; \ - a = b; \ - b = x; \ - } while (0) - -/** Set the \a n-th bit of \a i (a mutable pointer). */ -#define GPR_BITSET(i, n) ((*(i)) |= (1u << (n))) - -/** Clear the \a n-th bit of \a i (a mutable pointer). */ -#define GPR_BITCLEAR(i, n) ((*(i)) &= ~(1u << (n))) - -/** Get the \a n-th bit of \a i */ -#define GPR_BITGET(i, n) (((i) & (1u << (n))) != 0) - -#define GPR_INTERNAL_HEXDIGIT_BITCOUNT(x) \ - ((x) - (((x) >> 1) & 0x77777777) - (((x) >> 2) & 0x33333333) - \ - (((x) >> 3) & 0x11111111)) - -/** Returns number of bits set in bitset \a i */ -#define GPR_BITCOUNT(i) \ - (((GPR_INTERNAL_HEXDIGIT_BITCOUNT(i) + \ - (GPR_INTERNAL_HEXDIGIT_BITCOUNT(i) >> 4)) & \ - 0x0f0f0f0f) % \ - 255) - -#define GPR_ICMP(a, b) ((a) < (b) ? -1 : ((a) > (b) ? 1 : 0)) - -#define GPR_HASH_POINTER(x, range) \ - ((((size_t)x) >> 4) ^ (((size_t)x) >> 9) ^ (((size_t)x) >> 14)) % (range) - -#endif /* GRPC_SUPPORT_USEFUL_H */ diff --git a/winx64/include/grpc/support/workaround_list.h b/winx64/include/grpc/support/workaround_list.h deleted file mode 100644 index e28dfa14..00000000 --- a/winx64/include/grpc/support/workaround_list.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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_SUPPORT_WORKAROUND_LIST_H -#define GRPC_SUPPORT_WORKAROUND_LIST_H - -/* The list of IDs of server workarounds currently maintained by gRPC. For - * explanation and detailed descriptions of workarounds, see - * /doc/workarounds.md - */ -typedef enum { - GRPC_WORKAROUND_ID_CRONET_COMPRESSION = 0, - GRPC_MAX_WORKAROUND_ID -} grpc_workaround_list; - -#endif /* GRPC_SUPPORT_WORKAROUND_LIST_H */ diff --git a/winx64/lib/google/grpc/cares.lib b/winx64/lib/google/grpc/cares.lib deleted file mode 100644 index 9d75ec2f..00000000 Binary files a/winx64/lib/google/grpc/cares.lib and /dev/null differ diff --git a/winx64/lib/google/grpc/crypto.lib b/winx64/lib/google/grpc/crypto.lib deleted file mode 100644 index 659df633..00000000 Binary files a/winx64/lib/google/grpc/crypto.lib and /dev/null differ diff --git a/winx64/lib/google/grpc/gpr.lib b/winx64/lib/google/grpc/gpr.lib deleted file mode 100644 index 3a2487d2..00000000 Binary files a/winx64/lib/google/grpc/gpr.lib and /dev/null differ diff --git a/winx64/lib/google/grpc/grpc++.lib b/winx64/lib/google/grpc/grpc++.lib deleted file mode 100644 index 3e29b163..00000000 Binary files a/winx64/lib/google/grpc/grpc++.lib and /dev/null differ diff --git a/winx64/lib/google/grpc/grpc.lib b/winx64/lib/google/grpc/grpc.lib deleted file mode 100644 index a7755a98..00000000 Binary files a/winx64/lib/google/grpc/grpc.lib and /dev/null differ diff --git a/winx64/lib/google/grpc/protobuf.lib b/winx64/lib/google/grpc/protobuf.lib deleted file mode 100644 index 44012d01..00000000 Binary files a/winx64/lib/google/grpc/protobuf.lib and /dev/null differ diff --git a/winx64/lib/google/grpc/ssl.lib b/winx64/lib/google/grpc/ssl.lib deleted file mode 100644 index 80884331..00000000 Binary files a/winx64/lib/google/grpc/ssl.lib and /dev/null differ diff --git a/winx64/lib/google/grpc/zlib.dll b/winx64/lib/google/grpc/zlib.dll deleted file mode 100644 index 67d5d000..00000000 Binary files a/winx64/lib/google/grpc/zlib.dll and /dev/null differ diff --git a/winx64/lib/google/grpc/zlib.lib b/winx64/lib/google/grpc/zlib.lib deleted file mode 100644 index a9d0b5ae..00000000 Binary files a/winx64/lib/google/grpc/zlib.lib and /dev/null differ