Motr  M0
rpclib.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_RPCLIB_H__
26 #define __MOTR_RPC_RPCLIB_H__
27 
28 #ifndef __KERNEL__
29 # include <stdio.h> /* FILE */
30 # include "motr/setup.h" /* m0_motr */
31 #endif
32 #include "reqh/reqh.h"
33 #include "cob/cob.h" /* m0_cob_domain */
34 #include "net/net.h" /* m0_net_end_point */
35 #include "net/buffer_pool.h"
36 #include "rpc/rpc.h"
37 
38 struct m0_fop;
39 struct m0_net_xprt;
40 struct m0_net_domain;
41 
42 enum {
48 
53  M0_RPCLIB_UTIL_CONN_TIMEOUT = 20, /* seconds */
54 };
55 
56 #ifndef __KERNEL__
57 
58 struct m0_reqh;
60 
72 
77  char **rsx_argv;
79  int rsx_argc;
80 
81  const char *rsx_log_file_name;
82 
85 
90  FILE *rsx_log_file;
91 };
92 
99 
106 
107 M0_INTERNAL struct m0_rpc_machine *
109 
110 #endif /* !__KERNEL__ */
111 
118  /*
119  * Input parameters.
120  *
121  * They are initialised and filled by a caller of m0_rpc_client_start().
122  */
123 
129 
131  const char *rcx_local_addr;
132 
134  const char *rcx_remote_addr;
135 
137 
138  /* -------------------------------------------------------------
139  * Output parameters.
140  *
141  * They are initialised and filled by m0_rpc_client_start().
142  */
143 
148 
151 
154 
157 
161  struct m0_fid *rcx_fid;
162 };
163 
180 M0_INTERNAL int m0_rpc_client_connect(struct m0_rpc_conn *conn,
181  struct m0_rpc_session *session,
182  struct m0_rpc_machine *rpc_mach,
183  const char *remote_addr,
184  struct m0_fid *svc_fid,
185  uint64_t max_rpcs_in_flight,
186  m0_time_t abs_timeout);
187 
200 M0_INTERNAL int
202  struct m0_rpc_session *session,
203  struct m0_rpc_machine *rpc_mach,
204  const char *remote_addr,
206  uint64_t max_rpcs_in_flight,
207  m0_time_t abs_timeout);
208 
219 
227 
229  void (*printout)(struct m0_rpc_machine *));
230 
253 int m0_rpc_post_sync(struct m0_fop *fop,
254  struct m0_rpc_session *session,
255  const struct m0_rpc_item_ops *ri_ops,
256  m0_time_t deadline);
257 
259  struct m0_rpc_session *session,
260  const struct m0_rpc_item_ops *ri_ops,
261  m0_time_t deadline,
263 
264 #endif /* __MOTR_RPC_RPCLIB_H__ */
int m0_rpc_client_stop(struct m0_rpc_client_ctx *cctx)
Definition: rpclib.c:217
int m0_rpc_client_start(struct m0_rpc_client_ctx *cctx)
Definition: rpclib.c:160
M0_INTERNAL int m0_rpc_client_find_connect(struct m0_rpc_conn *conn, struct m0_rpc_session *session, struct m0_rpc_machine *rpc_mach, const char *remote_addr, enum m0_conf_service_type stype, uint64_t max_rpcs_in_flight, m0_time_t abs_timeout)
Definition: rpclib.c:134
m0_conf_service_type
Definition: schema.h:194
uint64_t m0_time_t
Definition: time.h:37
char ** rsx_argv
Definition: rpclib.h:77
struct m0_net_buffer_pool rcx_buffer_pool
Definition: rpclib.h:150
static struct m0_rpc_client_ctx cctx
Definition: rconfc.c:69
static struct m0_rpc_session session
Definition: formation2.c:38
static const char * remote_addr
Definition: rcv_session.c:38
int m0_rpc_client_stop_stats(struct m0_rpc_client_ctx *cctx, void(*printout)(struct m0_rpc_machine *))
Definition: rpclib.c:223
int m0_rpc_server_start(struct m0_rpc_server_ctx *sctx)
Definition: rpclib.c:50
FILE * rsx_log_file
Definition: rpclib.h:90
static struct m0_rm_incoming_ops ri_ops
Definition: wlock_helper.c:71
int m0_rpc_post_sync(struct m0_fop *fop, struct m0_rpc_session *session, const struct m0_rpc_item_ops *ri_ops, m0_time_t deadline)
Definition: rpclib.c:284
static const struct socktype stype[]
Definition: sock.c:1156
const char * rsx_log_file_name
Definition: rpclib.h:81
M0_INTERNAL struct m0_rpc_machine * m0_rpc_server_ctx_get_rmachine(struct m0_rpc_server_ctx *sctx)
Definition: rpclib.c:96
uint32_t rcx_max_rpc_msg_size
Definition: rpclib.h:156
struct m0_rpc_conn rcx_connection
Definition: rpclib.h:146
struct m0_net_xprt ** rsx_xprts
Definition: rpclib.h:69
static struct m0_rpc_server_ctx sctx
Definition: console.c:88
uint32_t rcx_recv_queue_min_length
Definition: rpclib.h:153
Definition: reqh.h:94
struct m0_rpc_conn conn
Definition: fsync.c:96
struct m0_fid * rcx_fid
Definition: rpclib.h:161
m0_time_t rcx_abs_timeout
Definition: rpclib.h:159
struct m0_net_domain * rcx_net_dom
Definition: rpclib.h:128
static uint32_t timeout
Definition: console.c:52
uint64_t rcx_max_rpcs_in_flight
Definition: rpclib.h:136
Definition: setup.h:354
M0_INTERNAL int m0_rpc_client_connect(struct m0_rpc_conn *conn, struct m0_rpc_session *session, struct m0_rpc_machine *rpc_mach, const char *remote_addr, struct m0_fid *svc_fid, uint64_t max_rpcs_in_flight, m0_time_t abs_timeout)
Definition: rpclib.c:102
int rsx_xprts_nr
Definition: rpclib.h:71
struct m0_rpc_session rcx_session
Definition: rpclib.h:147
Definition: fid.h:38
const char * rcx_remote_addr
Definition: rpclib.h:134
static struct m0_fop * fop
Definition: item.c:57
const char * rcx_local_addr
Definition: rpclib.h:131
struct m0_rpc_machine rcx_rpc_machine
Definition: rpclib.h:145
void m0_rpc_server_stop(struct m0_rpc_server_ctx *sctx)
Definition: rpclib.c:85
struct m0_reqh rcx_reqh
Definition: rpclib.h:144
struct m0_motr rsx_motr_ctx
Definition: rpclib.h:84
Definition: fop.h:79
int m0_rpc_post_with_timeout_sync(struct m0_fop *fop, struct m0_rpc_session *session, const struct m0_rpc_item_ops *ri_ops, m0_time_t deadline, m0_time_t timeout)
Definition: rpclib.c:249