Go to the documentation of this file.
25 #include "absl/base/thread_annotations.h"
26 #include "absl/memory/memory.h"
27 #include "absl/status/statusor.h"
61 class TCPConnectHandshaker :
public Handshaker {
67 HandshakerArgs*
args)
override;
68 const char*
name()
const override {
return "tcp_connect"; }
71 ~TCPConnectHandshaker()
override;
84 HandshakerArgs*
args_ =
nullptr;
114 CleanupArgsForFailureLocked();
125 HandshakerArgs*
args) {
138 "Resolved address in invalid format"));
143 const char* args_to_remove[] = {
150 args->args = channel_args;
168 RefCountedPtr<TCPConnectHandshaker>
self(
169 static_cast<TCPConnectHandshaker*
>(
arg));
178 if (
self->endpoint_to_destroy_ !=
nullptr) {
182 if (!
self->shutdown_) {
183 self->CleanupArgsForFailureLocked();
184 self->shutdown_ =
true;
185 self->FinishLocked(
error);
194 self->args_->endpoint =
self->endpoint_to_destroy_;
195 self->endpoint_to_destroy_ =
nullptr;
196 if (
self->bind_endpoint_to_pollset_) {
198 self->interested_parties_);
204 TCPConnectHandshaker::~TCPConnectHandshaker() {
215 void TCPConnectHandshaker::CleanupArgsForFailureLocked() {
217 args_->read_buffer =
nullptr;
219 args_->args =
nullptr;
234 class TCPConnectHandshakerFactory :
public HandshakerFactory {
238 HandshakeManager* handshake_mgr)
override {
240 MakeRefCounted<TCPConnectHandshaker>(interested_parties));
242 ~TCPConnectHandshakerFactory()
override =
default;
248 builder->handshaker_registry()->RegisterHandshakerFactory(
250 absl::make_unique<TCPConnectHandshakerFactory>());
#define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler)
char * grpc_channel_args_find_string(const grpc_channel_args *args, const char *name)
grpc_closure * on_handshake_done_
grpc_slice_buffer * read_buffer_to_destroy_
grpc_channel_args * grpc_channel_args_copy_and_remove(const grpc_channel_args *src, const char **to_remove, size_t num_to_remove)
struct grpc_pollset_set grpc_pollset_set
grpc_pollset_set * grpc_pollset_set_create()
GPRAPI void gpr_free(void *ptr)
#define ABSL_GUARDED_BY(x)
int64_t grpc_tcp_client_connect(grpc_closure *on_connect, grpc_endpoint **endpoint, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, grpc_core::Timestamp deadline)
bool bind_endpoint_to_pollset_
static absl::StatusOr< URI > Parse(absl::string_view uri_text)
bool grpc_channel_args_find_bool(const grpc_channel_args *args, const char *name, bool default_value)
bool grpc_parse_uri(const grpc_core::URI &uri, grpc_resolved_address *resolved_addr)
void RegisterTCPConnectHandshaker(CoreConfiguration::Builder *builder)
#define ABSL_EXCLUSIVE_LOCKS_REQUIRED(...)
void grpc_pollset_set_destroy(grpc_pollset_set *pollset_set)
void grpc_polling_entity_del_from_pollset_set(grpc_polling_entity *pollent, grpc_pollset_set *pss_dst)
void grpc_channel_args_destroy(grpc_channel_args *a)
grpc_endpoint * endpoint_to_destroy_
void grpc_endpoint_shutdown(grpc_endpoint *ep, grpc_error_handle why)
void grpc_endpoint_destroy(grpc_endpoint *ep)
grpc_resolved_address addr_
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc)
ABSL_MUST_USE_RESULT bool ok() const
#define GPR_ARRAY_SIZE(array)
#define GRPC_ERROR_REF(err)
#define GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS
grpc_polling_entity pollent_
void grpc_endpoint_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset_set)
void grpc_polling_entity_add_to_pollset_set(grpc_polling_entity *pollent, grpc_pollset_set *pss_dst)
#define GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET
#define GRPC_ERROR_UNREF(err)
static void Run(const DebugLocation &location, grpc_closure *closure, grpc_error_handle error)
void grpc_slice_buffer_destroy_internal(grpc_slice_buffer *sb)
grpc_pollset_set * interested_parties_
grpc_polling_entity grpc_polling_entity_create_from_pollset_set(grpc_pollset_set *pollset_set)
PHP_PROTO_OBJECT_FREE_END PHP_PROTO_OBJECT_DTOR_END intern self
internal::RefMatcher< T & > Ref(T &x)
static void on_handshake_done(void *arg, grpc_error_handle error)
#define GRPC_ERROR_IS_NONE(err)
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:25