summaryrefslogtreecommitdiffstats
path: root/xlators/features/changelog/src/changelog-rpc-common.h
blob: 95c850c9400185ca9ac2b73052357d235de63fc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
   Copyright (c) 2015 Red Hat, Inc. <http://www.redhat.com>
   This file is part of GlusterFS.

   This file is licensed to you under your choice of the GNU Lesser
   General Public License, version 3 or any later version (LGPLv3 or
   later), or the GNU General Public License, version 2 (GPLv2), in all
   cases as published by the Free Software Foundation.
*/

#ifndef __CHANGELOG_RPC_COMMON_H
#define __CHANGELOG_RPC_COMMON_H

#include "rpcsvc.h"
#include "rpc-clnt.h"
#include "event.h"
#include "call-stub.h"

#include "changelog-xdr.h"
#include "xdr-generic.h"

#include "changelog.h"

/**
 * Let's keep this non-configurable for now.
 */
#define NR_ROTT_BUFFS  4
#define NR_DISPATCHERS (NR_ROTT_BUFFS - 1)

enum changelog_rpc_procnum {
        CHANGELOG_RPC_PROC_NULL    = 0,
        CHANGELOG_RPC_PROBE_FILTER = 1,
        CHANGELOG_RPC_PROC_MAX     = 2,
};

#define CHANGELOG_RPC_PROGNUM   1885957735
#define CHANGELOG_RPC_PROGVER   1

/**
 * reverse connection: data xfer path
 */
enum changelog_reverse_rpc_procnum {
        CHANGELOG_REV_PROC_NULL  = 0,
        CHANGELOG_REV_PROC_EVENT = 1,
        CHANGELOG_REV_PROC_MAX   = 2,
};

#define CHANGELOG_REV_RPC_PROCNUM   1886350951
#define CHANGELOG_REV_RPC_PROCVER   1

typedef struct changelog_rpc {
        rpcsvc_t        *svc;
        struct rpc_clnt *rpc;
        char             sock[UNIX_PATH_MAX];  /* tied to server */
} changelog_rpc_t;

/* event poller */
void *changelog_rpc_poller (void *);

/* CLIENT API */
struct rpc_clnt *
changelog_rpc_client_init (xlator_t *, void *, char *, rpc_clnt_notify_t);

int
changelog_rpc_sumbit_req (struct rpc_clnt *, void *, call_frame_t *,
                          rpc_clnt_prog_t *, int , struct iovec *, int,
                          struct iobref *, xlator_t *, fop_cbk_fn_t, xdrproc_t);

int
changelog_invoke_rpc (xlator_t *, struct rpc_clnt *,
                      rpc_clnt_prog_t *, int , void *);

/* SERVER API */
int
changelog_rpc_sumbit_reply (rpcsvc_request_t *, void *,
                            struct iovec *, int, struct iobref *, xdrproc_t);
rpcsvc_t *
changelog_rpc_server_init (xlator_t *, char *, void*,
                           rpcsvc_notify_t, struct rpcsvc_program **);
void
changelog_rpc_server_destroy (xlator_t *, rpcsvc_t *, char *,
                              rpcsvc_notify_t, struct rpcsvc_program **);

#endif