GRPC Core 0.10.0.0

- Main Page
- Data Structures
- Files

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
resolver.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright 2015, Google Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following disclaimer
14 * in the documentation and/or other materials provided with the
15 * distribution.
16 * * Neither the name of Google Inc. nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 */
33
34 #ifndef GRPC_INTERNAL_CORE_CLIENT_CONFIG_RESOLVER_H
35 #define GRPC_INTERNAL_CORE_CLIENT_CONFIG_RESOLVER_H
36
37 #include "src/core/client_config/client_config.h"
38 #include "src/core/iomgr/iomgr.h"
39 #include "src/core/iomgr/sockaddr.h"
40
41 typedef struct grpc_resolver grpc_resolver;
42 typedef struct grpc_resolver_vtable grpc_resolver_vtable;
43
46 struct grpc_resolver {
47 const grpc_resolver_vtable *vtable;
48 gpr_refcount refs;
49 };
50
51 struct grpc_resolver_vtable {
52 void (*destroy)(grpc_resolver *resolver);
53 void (*shutdown)(grpc_resolver *resolver);
54 void (*channel_saw_error)(grpc_resolver *resolver,
55 struct sockaddr *failing_address,
56 int failing_address_len);
57 void (*next)(grpc_resolver *resolver, grpc_client_config **target_config,
58 grpc_iomgr_closure *on_complete);
59 };
60
61 #ifdef GRPC_RESOLVER_REFCOUNT_DEBUG
62 #define GRPC_RESOLVER_REF(p, r) grpc_resolver_ref((p), __FILE__, __LINE__, (r))
63 #define GRPC_RESOLVER_UNREF(p, r) \
64 grpc_resolver_unref((p), __FILE__, __LINE__, (r))
65 void grpc_resolver_ref(grpc_resolver *policy, const char *file, int line,
66 const char *reason);
67 void grpc_resolver_unref(grpc_resolver *policy, const char *file, int line,
68 const char *reason);
69 #else
70 #define GRPC_RESOLVER_REF(p, r) grpc_resolver_ref((p))
71 #define GRPC_RESOLVER_UNREF(p, r) grpc_resolver_unref((p))
72 void grpc_resolver_ref(grpc_resolver *policy);
73 void grpc_resolver_unref(grpc_resolver *policy);
74 #endif
75
76 void grpc_resolver_init(grpc_resolver *resolver,
77 const grpc_resolver_vtable *vtable);
78
79 void grpc_resolver_shutdown(grpc_resolver *resolver);
80
83 void grpc_resolver_channel_saw_error(grpc_resolver *resolver,
84 struct sockaddr *failing_address,
85 int failing_address_len);
86
93 void grpc_resolver_next(grpc_resolver *resolver,
94 grpc_client_config **target_config,
95 grpc_iomgr_closure *on_complete);
96
97 #endif /* GRPC_INTERNAL_CORE_CONFIG_RESOLVER_H */
client_config.h
grpc_resolver_shutdown
void grpc_resolver_shutdown(grpc_resolver *resolver)
Definition: resolver.c:68
gpr_refcount
Definition: sync_generic.h:49
grpc_resolver_init
void grpc_resolver_init(grpc_resolver *resolver, const grpc_resolver_vtable *vtable)
Definition: resolver.c:36
grpc_resolver_unref
void grpc_resolver_unref(grpc_resolver *policy)
Definition: resolver.c:61
sockaddr.h
grpc_resolver::vtable
const grpc_resolver_vtable * vtable
Definition: resolver.h:47
grpc_resolver_vtable
Definition: resolver.h:51
grpc_resolver
grpc_resolver provides grpc_client_config objects to grpc_channel objects
Definition: resolver.h:46
grpc_client_config
Definition: client_config.c:40
grpc_resolver_vtable::channel_saw_error
void(* channel_saw_error)(grpc_resolver *resolver, struct sockaddr *failing_address, int failing_address_len)
Definition: resolver.h:54
grpc_resolver_next
void grpc_resolver_next(grpc_resolver *resolver, grpc_client_config **target_config, grpc_iomgr_closure *on_complete)
Get the next client config.
Definition: resolver.c:79
grpc_iomgr_closure
A closure over a grpc_iomgr_cb_func.
Definition: iomgr.h:45
grpc_resolver::refs
gpr_refcount refs
Definition: resolver.h:48
grpc_resolver_vtable::shutdown
void(* shutdown)(grpc_resolver *resolver)
Definition: resolver.h:53
grpc_resolver_channel_saw_error
void grpc_resolver_channel_saw_error(grpc_resolver *resolver, struct sockaddr *failing_address, int failing_address_len)
Notification that the channel has seen an error on some address.
Definition: resolver.c:72
grpc_resolver_vtable::destroy
void(* destroy)(grpc_resolver *resolver)
Definition: resolver.h:52
iomgr.h
grpc_resolver_vtable::next
void(* next)(grpc_resolver *resolver, grpc_client_config **target_config, grpc_iomgr_closure *on_complete)
Definition: resolver.h:57
grpc_resolver_ref
void grpc_resolver_ref(grpc_resolver *policy)
Definition: resolver.c:49