Motr  M0
session.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_SESSION_H__
26 #define __MOTR_RPC_SESSION_H__
27 
28 #include "rpc/item.h"
29 
97 #include "lib/list.h"
98 #include "lib/tlist.h"
99 #include "lib/time.h"
100 #include "sm/sm.h" /* m0_sm */
101 #include "rpc/onwire.h"
102 
103 /* Imports */
104 struct m0_rpc_conn;
105 
106 /* Exports */
107 struct m0_rpc_session;
108 
153 };
154 
156 M0_INTERNAL const char *
158 
309  uint64_t s_session_id;
310 
313 
317  struct m0_tlink s_link;
318 
320  uint32_t s_hold_cnt;
321 
325  struct m0_sm s_sm;
326 
328  uint64_t s_magic;
329 
331  uint64_t s_xid;
332 
340 
346 
352 
361 
369 };
370 
382 M0_INTERNAL int m0_rpc_session_init(struct m0_rpc_session *session,
383  struct m0_rpc_conn *conn);
384 
385 M0_INTERNAL void m0_rpc_session_reset(struct m0_rpc_session *session);
386 
396 M0_INTERNAL int m0_rpc_session_establish(struct m0_rpc_session *session,
397  m0_time_t abs_timeout);
398 
413  m0_time_t abs_timeout);
414 
420 M0_INTERNAL int m0_rpc_session_create(struct m0_rpc_session *session,
421  struct m0_rpc_conn *conn,
422  m0_time_t abs_timeout);
423 
434 M0_INTERNAL int m0_rpc_session_terminate(struct m0_rpc_session *session,
435  m0_time_t abs_timeout);
436 
454  m0_time_t abs_timeout);
455 
467 M0_INTERNAL int m0_rpc_session_timedwait(struct m0_rpc_session *session,
468  uint64_t states,
469  const m0_time_t abs_timeout);
470 
475 M0_INTERNAL int m0_rpc_session_validate(struct m0_rpc_session *session);
476 
484 M0_INTERNAL void m0_rpc_session_fini(struct m0_rpc_session *session);
485 
492  m0_time_t abs_timeout);
493 
498 M0_INTERNAL void m0_rpc_session_cancel(struct m0_rpc_session *session);
499 
503 M0_INTERNAL bool m0_rpc_session_is_cancelled(struct m0_rpc_session *session);
504 
509 M0_INTERNAL void m0_rpc_session_quiesce(struct m0_rpc_session *session);
510 
514 M0_INTERNAL m0_bcount_t
516 
518 M0_INTERNAL m0_bcount_t
520 
521 M0_INTERNAL struct m0_rpc_machine *
522 session_machine(const struct m0_rpc_session *s);
523 
524 M0_TL_DESCR_DECLARE(pending_item, M0_EXTERN);
525 M0_TL_DECLARE(pending_item, M0_INTERNAL, struct m0_rpc_item);
526 
529 #endif
530 
531 /*
532  * Local variables:
533  * c-indentation-style: "K&R"
534  * c-basic-offset: 8
535  * tab-width: 8
536  * fill-column: 80
537  * scroll-step: 1
538  * End:
539  */
M0_INTERNAL m0_bcount_t m0_rpc_session_get_max_item_size(const struct m0_rpc_session *session)
Definition: session.c:767
M0_INTERNAL int m0_rpc_session_terminate_sync(struct m0_rpc_session *session, m0_time_t abs_timeout)
Definition: session.c:592
struct m0_tl s_xid_list
Definition: session.h:339
M0_INTERNAL int m0_rpc_session_create(struct m0_rpc_session *session, struct m0_rpc_conn *conn, m0_time_t abs_timeout)
Definition: session.c:352
uint64_t m0_time_t
Definition: time.h:37
int m0_rpc_session_destroy(struct m0_rpc_session *session, m0_time_t abs_timeout)
Definition: session.c:559
m0_rpc_session_state
Definition: session.h:112
M0_INTERNAL void m0_rpc_session_fini(struct m0_rpc_session *session)
Definition: session.c:292
uint64_t m0_bcount_t
Definition: types.h:77
static struct m0_rpc_session session
Definition: formation2.c:38
M0_INTERNAL bool m0_rpc_session_is_cancelled(struct m0_rpc_session *session)
Definition: session.c:875
bool s_cancelled
Definition: session.h:360
uint64_t s_xid
Definition: session.h:331
uint32_t s_hold_cnt
Definition: session.h:320
struct m0_tl s_pending_cache
Definition: session.h:368
M0_INTERNAL m0_bcount_t m0_rpc_session_get_max_item_payload_size(const struct m0_rpc_session *session)
Definition: session.c:775
M0_TL_DESCR_DECLARE(pending_item, M0_EXTERN)
M0_INTERNAL int m0_rpc_session_init(struct m0_rpc_session *session, struct m0_rpc_conn *conn)
Definition: session.c:204
struct m0_tlink s_link
Definition: session.h:317
M0_INTERNAL int m0_rpc_session_terminate(struct m0_rpc_session *session, m0_time_t abs_timeout)
Definition: session.c:622
M0_INTERNAL void m0_rpc_session_cancel(struct m0_rpc_session *session)
Definition: session.c:850
Definition: tlist.h:251
M0_TL_DECLARE(pending_item, M0_INTERNAL, struct m0_rpc_item)
M0_INTERNAL int m0_rpc_session_timedwait(struct m0_rpc_session *session, uint64_t states, const m0_time_t abs_timeout)
Definition: session.c:332
M0_INTERNAL struct m0_rpc_machine * session_machine(const struct m0_rpc_session *s)
Definition: session.c:147
M0_INTERNAL void m0_rpc_session_reset(struct m0_rpc_session *session)
Definition: session.c:260
struct m0_rpc_conn conn
Definition: fsync.c:96
struct m0_sm s_sm
Definition: session.h:325
struct m0_rpc_item_cache s_reply_cache
Definition: session.h:345
M0_INTERNAL int m0_rpc_session_validate(struct m0_rpc_session *session)
Definition: session.c:573
M0_INTERNAL void m0_rpc_session_quiesce(struct m0_rpc_session *session)
Definition: session.c:836
Definition: sm.h:301
M0_INTERNAL int m0_rpc_session_establish(struct m0_rpc_session *session, m0_time_t abs_timeout)
Definition: session.c:390
uint64_t s_magic
Definition: session.h:328
struct m0_rpc_item_cache s_req_cache
Definition: session.h:351
M0_INTERNAL const char * m0_rpc_session_state_to_str(enum m0_rpc_session_state state)
Definition: session.c:892
M0_INTERNAL int m0_rpc_session_establish_sync(struct m0_rpc_session *session, m0_time_t abs_timeout)
Definition: session.c:370
uint64_t s_session_id
Definition: session.h:309
static struct m0_addb2_source * s
Definition: consumer.c:39
static struct m0_sm_state_descr states[C_NR]
Definition: sm.c:512
struct m0_rpc_conn * s_conn
Definition: session.h:312