Motr  M0
conn_internal.h
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2012-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_RPC_CONN_INT_H__
26 #define __MOTR_RPC_CONN_INT_H__
27 
28 #include "rpc/conn.h"
29 
30 /* Imports */
31 struct m0_rpc_session;
32 struct m0_rpc_item;
33 struct m0_rpc_item_source;
34 
41 enum {
43 };
44 
45 M0_INTERNAL bool m0_rpc_conn_invariant(const struct m0_rpc_conn *conn);
46 M0_INTERNAL int m0_rpc_conn_ha_timer_start(struct m0_rpc_conn *conn);
47 M0_INTERNAL void m0_rpc_conn_ha_timer_stop(struct m0_rpc_conn *conn);
48 
54  void (*cho_ha_timer_cb)(struct m0_sm_timer *timer);
58  void (*cho_ha_notify)(struct m0_rpc_conn *conn, uint8_t state);
59 };
60 
64 };
65 
66 static inline int conn_state(const struct m0_rpc_conn *conn)
67 {
68  return conn->c_sm.sm_state;
69 }
70 
71 static inline void conn_flag_set(struct m0_rpc_conn *conn, uint64_t flag)
72 {
73  conn->c_flags |= flag;
74 }
75 
76 static inline void conn_flag_unset(struct m0_rpc_conn *conn, uint64_t flag)
77 {
78  conn->c_flags &= ~flag;
79 }
80 
81 static inline bool conn_flag_is_set(const struct m0_rpc_conn *conn,
82  uint64_t flag)
83 {
84  return conn->c_flags & flag;
85 }
86 
87 M0_INTERNAL void conn_state_set(struct m0_rpc_conn *conn, int state);
88 
99 M0_INTERNAL struct m0_rpc_session *m0_rpc_session_search(const struct
100  m0_rpc_conn *conn,
101  uint64_t session_id);
102 
109  const struct m0_rpc_conn *conn, uint64_t session_id);
110 
115 M0_INTERNAL struct m0_rpc_session *m0_rpc_session_pop(
116  const struct m0_rpc_conn *conn);
117 
125 M0_INTERNAL struct m0_rpc_session *m0_rpc_conn_session0(const struct m0_rpc_conn
126  *conn);
127 
128 M0_INTERNAL void m0_rpc_conn_fini_locked(struct m0_rpc_conn *conn);
129 
138 M0_INTERNAL int m0_rpc_rcv_conn_init(struct m0_rpc_conn *conn,
139  struct m0_net_end_point *ep,
140  struct m0_rpc_machine *machine,
141  const struct m0_uint128 *uuid);
150 M0_INTERNAL int m0_rpc_rcv_conn_terminate(struct m0_rpc_conn *conn);
151 
157 M0_INTERNAL void m0_rpc_conn_establish_reply_received(struct m0_rpc_item *req);
158 
169 M0_INTERNAL void m0_rpc_conn_terminate_reply_sent(struct m0_rpc_conn *conn);
170 
176 M0_INTERNAL void m0_rpc_conn_terminate_reply_received(struct m0_rpc_item *req);
177 
181 M0_INTERNAL bool m0_rpc_item_is_conn_establish(const struct m0_rpc_item *item);
182 
186 M0_INTERNAL bool m0_rpc_item_is_sess_establish(const struct m0_rpc_item *item);
187 
191 M0_INTERNAL void m0_rpc_fop_conn_establish_ctx_init(struct m0_rpc_item *item,
192  struct m0_net_end_point *ep);
193 
197 M0_INTERNAL bool m0_rpc_conn_is_snd(const struct m0_rpc_conn *conn);
198 
202 M0_INTERNAL bool m0_rpc_conn_is_rcv(const struct m0_rpc_conn *conn);
203 
204 M0_INTERNAL void m0_rpc_conn_add_session(struct m0_rpc_conn *conn,
205  struct m0_rpc_session *session);
206 M0_INTERNAL void m0_rpc_conn_remove_session(struct m0_rpc_session *session);
207 
208 M0_INTERNAL void m0_rpc_conn_cleanup_all_sessions(struct m0_rpc_conn *conn);
209 
211 #endif /* __MOTR_RPC_CONN_INT_H__ */
struct m0_uint128 uuid[1000]
Definition: uuid.c:73
M0_INTERNAL bool m0_rpc_conn_is_rcv(const struct m0_rpc_conn *conn)
Definition: conn.c:288
static struct io_request req
Definition: file.c:100
uint64_t m0_time_t
Definition: time.h:37
M0_EXTERN struct m0_rpc_session * m0_rpc_conn_session0(const struct m0_rpc_conn *conn)
Definition: conn.c:749
M0_INTERNAL void m0_rpc_conn_remove_session(struct m0_rpc_session *session)
Definition: conn.c:736
M0_INTERNAL int m0_rpc_rcv_conn_terminate(struct m0_rpc_conn *conn)
Definition: conn.c:1217
static bool conn_flag_is_set(const struct m0_rpc_conn *conn, uint64_t flag)
Definition: conn_internal.h:81
static struct m0_rpc_session session
Definition: formation2.c:38
static struct m0_rpc_item * item
Definition: item.c:56
M0_INTERNAL void m0_rpc_conn_establish_reply_received(struct m0_rpc_item *item)
Definition: conn.c:926
M0_INTERNAL struct m0_rpc_session * m0_rpc_session_pop(const struct m0_rpc_conn *conn)
Definition: conn.c:790
M0_INTERNAL bool m0_rpc_conn_invariant(const struct m0_rpc_conn *conn)
Definition: conn.c:183
struct m0_sm c_sm
Definition: conn.h:322
Definition: sock.c:754
M0_INTERNAL struct m0_rpc_session * m0_rpc_session_search(const struct m0_rpc_conn *conn, uint64_t session_id)
Definition: conn.c:760
void(* cho_ha_timer_cb)(struct m0_sm_timer *timer)
Definition: conn_internal.h:54
M0_INTERNAL void m0_rpc_conn_add_session(struct m0_rpc_conn *conn, struct m0_rpc_session *session)
Definition: conn.c:722
M0_INTERNAL int m0_rpc_conn_ha_timer_start(struct m0_rpc_conn *conn)
Definition: conn.c:1417
uint64_t c_flags
Definition: conn.h:275
M0_INTERNAL void m0_rpc_fop_conn_establish_ctx_init(struct m0_rpc_item *item, struct m0_net_end_point *ep)
Definition: session_fops.c:209
M0_INTERNAL void m0_rpc_conn_ha_timer_stop(struct m0_rpc_conn *conn)
Definition: conn.c:1438
M0_INTERNAL int m0_rpc_rcv_conn_init(struct m0_rpc_conn *conn, struct m0_net_end_point *ep, struct m0_rpc_machine *machine, const struct m0_uint128 *uuid)
Definition: conn.c:525
#define UINT64_MAX
Definition: types.h:44
M0_INTERNAL bool m0_rpc_item_is_conn_establish(const struct m0_rpc_item *item)
Definition: conn.c:1258
struct m0_rpc_conn conn
Definition: fsync.c:96
struct m0_rpc_machine machine
Definition: mdstore.c:58
M0_INTERNAL void m0_rpc_conn_cleanup_all_sessions(struct m0_rpc_conn *conn)
Definition: conn.c:1174
M0_INTERNAL void m0_rpc_conn_terminate_reply_sent(struct m0_rpc_conn *conn)
Definition: conn.c:1237
M0_INTERNAL void m0_rpc_conn_fini_locked(struct m0_rpc_conn *conn)
Definition: conn.c:659
m0_time_t rchc_ha_interval
Definition: conn_internal.h:63
M0_INTERNAL void conn_state_set(struct m0_rpc_conn *conn, int state)
Definition: conn.c:167
struct m0_rpc_conn_ha_ops rchc_ops
Definition: conn_internal.h:62
void(* cho_ha_notify)(struct m0_rpc_conn *conn, uint8_t state)
Definition: conn_internal.h:58
static bool flag
Definition: nucleus.c:266
M0_INTERNAL void m0_rpc_conn_terminate_reply_received(struct m0_rpc_item *item)
Definition: conn.c:1126
static void conn_flag_set(struct m0_rpc_conn *conn, uint64_t flag)
Definition: conn_internal.h:71
M0_INTERNAL bool m0_rpc_conn_is_snd(const struct m0_rpc_conn *conn)
Definition: conn.c:280
M0_INTERNAL bool m0_rpc_item_is_sess_establish(const struct m0_rpc_item *item)
Definition: conn.c:1264
uint32_t sm_state
Definition: sm.h:307
M0_INTERNAL struct m0_rpc_session * m0_rpc_session_search_and_pop(const struct m0_rpc_conn *conn, uint64_t session_id)
Definition: conn.c:772
static void conn_flag_unset(struct m0_rpc_conn *conn, uint64_t flag)
Definition: conn_internal.h:76
static int conn_state(const struct m0_rpc_conn *conn)
Definition: conn_internal.h:66