Motr  M0
interface.h
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2016-2020 Seagate Technology LLC and/or its Affiliates
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * For any questions about this software or licensing,
18  * please email opensource@seagate.com or cortx-questions@seagate.com.
19  *
20  */
21 
22 
23 #pragma once
24 
25 #ifndef __MOTR_HA_HALON_INTERFACE_H__
26 #define __MOTR_HA_HALON_INTERFACE_H__
27 
271 #include "lib/types.h" /* bool */
272 
273 struct m0_rpc_machine;
274 struct m0_reqh;
276 struct m0_ha_link;
277 struct m0_ha_msg;
278 struct m0_fid;
279 struct m0_spiel;
280 struct m0_thread;
281 
284 };
285 
312 int m0_halon_interface_init(struct m0_halon_interface **hi_out,
313  const char *build_git_rev_id,
314  const char *build_configure_opts,
315  const char *debug_options,
316  const char *node_uuid);
317 
328 
377  const char *local_rpc_endpoint,
378  const struct m0_fid *process_fid,
379  const struct m0_fid *ha_service_fid,
380  const struct m0_fid *rm_service_fid,
381  void (*entrypoint_request_cb)
382  (struct m0_halon_interface *hi,
383  const struct m0_uint128 *req_id,
384  const char *remote_rpc_endpoint,
385  const struct m0_fid *process_fid,
386  const char *git_rev_id,
387  uint64_t pid,
388  bool first_request),
389  void (*msg_received_cb)
390  (struct m0_halon_interface *hi,
391  struct m0_ha_link *hl,
392  const struct m0_ha_msg *msg,
393  uint64_t tag),
394  void (*msg_is_delivered_cb)
395  (struct m0_halon_interface *hi,
396  struct m0_ha_link *hl,
397  uint64_t tag),
398  void (*msg_is_not_delivered_cb)
399  (struct m0_halon_interface *hi,
400  struct m0_ha_link *hl,
401  uint64_t tag),
402  void (*link_connected_cb)
403  (struct m0_halon_interface *hi,
404  const struct m0_uint128 *req_id,
405  struct m0_ha_link *link),
406  void (*link_reused_cb)
407  (struct m0_halon_interface *hi,
408  const struct m0_uint128 *req_id,
409  struct m0_ha_link *link),
410  void (*link_absent_cb)
411  (struct m0_halon_interface *hi,
412  const struct m0_uint128 *req_id),
413  void (*link_is_disconnecting_cb)
414  (struct m0_halon_interface *hi,
415  struct m0_ha_link *link),
416  void (*link_disconnected_cb)
417  (struct m0_halon_interface *hi,
418  struct m0_ha_link *link));
419 
424 
441  struct m0_halon_interface *hi,
442  const struct m0_uint128 *req_id,
443  int rc,
444  uint32_t confd_nr,
445  const struct m0_fid *confd_fid_data,
446  const char **confd_eps_data,
447  uint32_t confd_quorum,
448  const struct m0_fid *rm_fid,
449  const char *rm_eps);
450 
459  struct m0_ha_link *hl,
460  const struct m0_ha_msg *msg,
461  uint64_t *tag);
462 
473  struct m0_ha_link *hl,
474  const struct m0_ha_msg *msg);
475 
476 
484  struct m0_ha_link *hl);
485 
495 struct m0_rpc_machine *
497 
509 
518 
520  struct m0_thread *thread);
521 M0_INTERNAL void m0_halon_interface_thread_shun(void);
522 
524 #endif /* __MOTR_HA_HALON_INTERFACE_H__ */
525 
526 /*
527  * Local variables:
528  * c-indentation-style: "K&R"
529  * c-basic-offset: 8
530  * tab-width: 8
531  * fill-column: 80
532  * scroll-step: 1
533  * End:
534  */
535 /*
536  * vim: tabstop=8 shiftwidth=8 noexpandtab textwidth=80 nowrap
537  */
void m0_halon_interface_stop(struct m0_halon_interface *hi)
Definition: interface.c:1040
int m0_halon_interface_start(struct m0_halon_interface *hi, const char *local_rpc_endpoint, const struct m0_fid *process_fid, const struct m0_fid *ha_service_fid, const struct m0_fid *rm_service_fid, void(*entrypoint_request_cb)(struct m0_halon_interface *hi, const struct m0_uint128 *req_id, const char *remote_rpc_endpoint, const struct m0_fid *process_fid, const char *git_rev_id, uint64_t pid, bool first_request), void(*msg_received_cb)(struct m0_halon_interface *hi, struct m0_ha_link *hl, const struct m0_ha_msg *msg, uint64_t tag), void(*msg_is_delivered_cb)(struct m0_halon_interface *hi, struct m0_ha_link *hl, uint64_t tag), void(*msg_is_not_delivered_cb)(struct m0_halon_interface *hi, struct m0_ha_link *hl, uint64_t tag), void(*link_connected_cb)(struct m0_halon_interface *hi, const struct m0_uint128 *req_id, struct m0_ha_link *link), void(*link_reused_cb)(struct m0_halon_interface *hi, const struct m0_uint128 *req_id, struct m0_ha_link *link), void(*link_absent_cb)(struct m0_halon_interface *hi, const struct m0_uint128 *req_id), void(*link_is_disconnecting_cb)(struct m0_halon_interface *hi, struct m0_ha_link *link), void(*link_disconnected_cb)(struct m0_halon_interface *hi, struct m0_ha_link *link))
Definition: interface.c:948
int m0_halon_interface_init(struct m0_halon_interface **hi_out, const char *build_git_rev_id, const char *build_configure_opts, const char *debug_options, const char *node_uuid)
Definition: interface.c:583
static uint64_t tag(uint8_t code, uint64_t id)
Definition: addb2.c:1047
void m0_halon_interface_disconnect(struct m0_halon_interface *hi, struct m0_ha_link *hl)
Definition: interface.c:1159
void m0_halon_interface_delivered(struct m0_halon_interface *hi, struct m0_ha_link *hl, const struct m0_ha_msg *msg)
Definition: interface.c:1125
M0_INTERNAL void m0_halon_interface_thread_shun(void)
Definition: interface.c:1250
struct m0_rpc_machine * m0_halon_interface_rpc_machine(struct m0_halon_interface *hi)
Definition: interface.c:1188
static char * node_uuid
Definition: kuuid.c:36
void m0_halon_interface_send(struct m0_halon_interface *hi, struct m0_ha_link *hl, const struct m0_ha_msg *msg, uint64_t *tag)
Definition: interface.c:1099
struct m0_thread thread
Definition: note.c:104
void m0_halon_interface_entrypoint_reply(struct m0_halon_interface *hi, const struct m0_uint128 *req_id, int rc, uint32_t confd_nr, const struct m0_fid *confd_fid_data, const char **confd_eps_data, uint32_t confd_quorum, const struct m0_fid *rm_fid, const char *rm_eps)
Definition: interface.c:1059
struct m0_spiel * m0_halon_interface_spiel(struct m0_halon_interface *hi)
Definition: interface.c:1220
Definition: msg.h:115
Definition: reqh.h:94
M0_INTERNAL int m0_halon_interface_thread_adopt(struct m0_halon_interface *hi, struct m0_thread *thread)
Definition: interface.c:1236
Definition: fid.h:38
struct m0_reqh * m0_halon_interface_reqh(struct m0_halon_interface *hi)
Definition: interface.c:1204
struct m0_halon_interface_internal * hif_internal
Definition: interface.h:283
int32_t rc
Definition: trigger_fop.h:47
static void hi(void)
Definition: nucleus.c:93
static const char * process_fid
Definition: idx_dix.c:73
void m0_halon_interface_fini(struct m0_halon_interface *hi)
Definition: interface.c:627