Motr  M0
rpc_machine.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_MACHINE_H__
26 #define __MOTR_RPC_MACHINE_H__
27 
28 #include "lib/bob.h"
29 #include "lib/tlist.h"
30 #include "lib/thread.h"
31 #include "lib/chan.h"
32 #include "sm/sm.h" /* m0_sm_group */
33 #include "net/net.h" /* m0_net_transfer_mc, m0_net_domain */
34 
41 /* Imports */
42 struct m0_cob_domain;
43 struct m0_rpc_conn;
44 struct m0_rpc_session;
45 struct m0_reqh;
46 struct m0_dtm;
47 
48 enum {
51 };
52 
54 struct m0_rpc_stats {
55  /* Items */
56  uint64_t rs_nr_rcvd_items;
57  uint64_t rs_nr_sent_items;
66 
67  /* Packets */
71 
72  /* Bytes */
73  uint64_t rs_nr_sent_bytes;
74  uint64_t rs_nr_rcvd_bytes;
75 };
76 
86  struct m0_tl rm_chans;
105  struct m0_reqh *rm_reqh;
106  struct m0_dtm *rm_dtm;
112 
118 
124  struct m0_tl rm_watch;
125 
130 
139  uint64_t rm_active_nb;
142  uint64_t rm_magix;
143 
149 
151 
158 };
159 
190 M0_INTERNAL int m0_rpc_machine_init(struct m0_rpc_machine *machine,
191  struct m0_net_domain *net_dom,
192  const char *ep_addr,
193  struct m0_reqh *reqh,
194  struct m0_net_buffer_pool *receive_pool,
195  uint32_t colour,
196  m0_bcount_t msg_size, uint32_t queue_len);
197 
199 
201  struct m0_rpc_stats *stats, bool reset);
202 
203 M0_INTERNAL void
205  uint32_t max_per_source);
206 
207 M0_INTERNAL const char *m0_rpc_machine_ep(const struct m0_rpc_machine *rmach);
208 
209 M0_INTERNAL void m0_rpc_machine_lock(struct m0_rpc_machine *machine);
210 M0_INTERNAL void m0_rpc_machine_unlock(struct m0_rpc_machine *machine);
211 M0_INTERNAL bool
213 M0_INTERNAL bool
215 
217 
229  void *mw_datum;
245  struct m0_rpc_conn *conn);
252  struct m0_rpc_session *session);
261 
263  uint64_t mw_magic;
264 };
265 
273 
281 
283 #endif /* __MOTR_RPC_MACHINE_H__ */
284 
285 /*
286  * Local variables:
287  * c-indentation-style: "K&R"
288  * c-basic-offset: 8
289  * tab-width: 8
290  * fill-column: 80
291  * scroll-step: 1
292  * End:
293  */
struct m0_tlink mw_linkage
Definition: rpc_machine.h:239
struct m0_tl rm_chans
Definition: rpc_machine.h:86
uint64_t rm_magix
Definition: rpc_machine.h:142
struct m0_rpc_machine * mw_mach
Definition: rpc_machine.h:234
void m0_rpc_machine_fini(struct m0_rpc_machine *machine)
Definition: rpc_machine.c:233
struct m0_chan rm_nb_idle
Definition: rpc_machine.h:141
void(* mw_conn_added)(struct m0_rpc_machine_watch *w, struct m0_rpc_conn *conn)
Definition: rpc_machine.h:244
static const char * ep_addr
Definition: rpc_machine.c:35
uint64_t rs_nr_resend_attempts
Definition: rpc_machine.h:63
struct m0_tl rm_outgoing_conns
Definition: rpc_machine.h:95
uint64_t rs_nr_resent_items
Definition: rpc_machine.h:62
uint64_t rs_nr_ha_timedout_items
Definition: rpc_machine.h:64
uint64_t rs_nr_ha_noted_conns
Definition: rpc_machine.h:65
uint64_t m0_bcount_t
Definition: types.h:77
static struct m0_rpc_session session
Definition: formation2.c:38
M0_INTERNAL const char * m0_rpc_machine_ep(const struct m0_rpc_machine *rmach)
Definition: rpc_machine.c:603
struct m0_sm_group rm_sm_grp
Definition: rpc_machine.h:82
struct m0_tl rm_services
Definition: rpc_machine.h:117
uint64_t rs_nr_failed_packets
Definition: rpc_machine.h:70
M0_INTERNAL bool m0_rpc_machine_is_locked(const struct m0_rpc_machine *machine)
Definition: rpc_machine.c:565
void m0_rpc_machine_get_stats(struct m0_rpc_machine *machine, struct m0_rpc_stats *stats, bool reset)
Definition: rpc_machine.c:592
M0_BOB_DECLARE(extern, m0_rpc_machine)
void(* mw_session_added)(struct m0_rpc_machine_watch *w, struct m0_rpc_session *session)
Definition: rpc_machine.h:251
uint64_t rs_nr_failed_items
Definition: rpc_machine.h:58
m0_bcount_t rm_bulk_cutoff
Definition: rpc_machine.h:157
M0_INTERNAL void m0_rpc_machine_unlock(struct m0_rpc_machine *machine)
Definition: rpc_machine.c:558
struct m0_reqh_service * rm_service
Definition: rpc_machine.h:131
uint64_t rs_nr_rcvd_items
Definition: rpc_machine.h:56
struct m0_net_transfer_mc rm_tm
Definition: rpc_machine.h:88
uint64_t rs_nr_rcvd_bytes
Definition: rpc_machine.h:74
struct m0_tl rm_watch
Definition: rpc_machine.h:124
uint64_t rs_nr_sent_items_uniq
Definition: rpc_machine.h:61
Definition: tlist.h:251
uint32_t rm_min_recv_size
Definition: rpc_machine.h:148
M0_INTERNAL int m0_rpc_machine_init(struct m0_rpc_machine *machine, struct m0_net_domain *net_dom, const char *ep_addr, struct m0_reqh *reqh, struct m0_net_buffer_pool *receive_pool, uint32_t colour, m0_bcount_t msg_size, uint32_t queue_len)
Definition: rpc_machine.c:123
uint64_t rs_nr_dropped_items
Definition: rpc_machine.h:59
void m0_rpc_machine_watch_attach(struct m0_rpc_machine_watch *watch)
Definition: rpc_machine.c:979
Definition: reqh.h:94
Definition: chan.h:229
struct m0_rpc_conn conn
Definition: fsync.c:96
void m0_rpc_machine_watch_detach(struct m0_rpc_machine_watch *watch)
Definition: rpc_machine.c:997
struct m0_tl rm_incoming_conns
Definition: rpc_machine.h:94
struct m0_rpc_machine machine
Definition: mdstore.c:58
struct m0_dtm * rm_dtm
Definition: rpc_machine.h:106
struct m0_thread rm_worker
Definition: rpc_machine.h:129
void(* mw_mach_terminated)(struct m0_rpc_machine_watch *w)
Definition: rpc_machine.h:260
M0_INTERNAL bool m0_rpc_machine_is_not_locked(const struct m0_rpc_machine *machine)
Definition: rpc_machine.c:573
struct m0_reqh reqh
Definition: rm_foms.c:48
uint64_t rs_nr_sent_packets
Definition: rpc_machine.h:69
M0_INTERNAL void m0_rpc_machine_lock(struct m0_rpc_machine *machine)
Definition: rpc_machine.c:551
uint64_t rs_nr_sent_bytes
Definition: rpc_machine.h:73
M0_INTERNAL void m0_rpc_machine_drain_item_sources(struct m0_rpc_machine *machine, uint32_t max_per_source)
Definition: rpc_machine.c:404
Definition: beck.c:130
uint64_t rs_nr_timedout_items
Definition: rpc_machine.h:60
Definition: dtm.h:529
uint64_t rm_active_nb
Definition: rpc_machine.h:139
struct m0_tlink rm_rh_linkage
Definition: rpc_machine.h:111
struct m0_rpc_stats rm_stats
Definition: rpc_machine.h:96
uint64_t rs_nr_sent_items
Definition: rpc_machine.h:57
struct m0_mutex_addb2 rm_lock_stats
Definition: rpc_machine.h:150
uint64_t rs_nr_rcvd_packets
Definition: rpc_machine.h:68
struct m0_reqh * rm_reqh
Definition: rpc_machine.h:105