OSDN Git Service

49e24c1b0f3abcbb6e0505dab08e95e1bd4fcbbb
[eos/hostdependARM64MAC64.git] / include / H5FDmirror.h
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group.                                               *
3  * All rights reserved.                                                      *
4  *                                                                           *
5  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
6  * terms governing use, modification, and redistribution, is contained in    *
7  * the COPYING file, which can be found at the root of the source code       *
8  * distribution tree, or in https://www.hdfgroup.org/licenses.               *
9  * If you do not have access to either file, you may request a copy from     *
10  * help@hdfgroup.org.                                                        *
11  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
12
13 /*
14  * Purpose: Public, shared definitions for Mirror VFD & remote Writer.
15  */
16
17 #ifndef H5FDmirror_H
18 #define H5FDmirror_H
19
20 #ifdef H5_HAVE_MIRROR_VFD
21
22 #define H5FD_MIRROR (H5FD_mirror_init())
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 /* ============================================================================
29  * Mirror VFD use and operation.
30  * ============================================================================
31  */
32
33 /* ---------------------------------------------------------------------------
34  * Structure:   H5FD_mirror_fapl_t
35  *
36  * Used to pass configuraiton information to the Mirror VFD.
37  * Populate components as appropriate and pass structure pointer to
38  * `H5Pset_fapl_mirror()`.
39  *
40  * `magic` (uint32_t)
41  *      Semi-unique number to sanity-check pointers to this structure type.
42  *      MUST equal H5FD_MIRROR_FAPL_MAGIC to be considered valid.
43  *
44  * `version` (uint32_t)
45  *      Indicates expected components of the structure.
46  *
47  * `handshake_port (int)
48  *      Port number to expect to reach the "Mirror Server" on the remote host.
49  *
50  * `remote_ip` (char[])
51  *      IP address string of "Mirror Server" remote host.
52  * ---------------------------------------------------------------------------
53  */
54 #define H5FD_MIRROR_FAPL_MAGIC          0xF8DD514C
55 #define H5FD_MIRROR_CURR_FAPL_T_VERSION 1
56 #define H5FD_MIRROR_MAX_IP_LEN          32
57 typedef struct H5FD_mirror_fapl_t {
58     uint32_t magic;
59     uint32_t version;
60     int      handshake_port;
61     char     remote_ip[H5FD_MIRROR_MAX_IP_LEN + 1];
62 } H5FD_mirror_fapl_t;
63
64 H5_DLL hid_t H5FD_mirror_init(void);
65
66 /**
67  * \ingroup FAPL
68  *
69  * \todo Add missing documentation
70  */
71 H5_DLL herr_t H5Pget_fapl_mirror(hid_t fapl_id, H5FD_mirror_fapl_t *fa_out);
72
73 /**
74  * \ingroup FAPL
75  *
76  * \todo Add missing documentation
77  */
78 H5_DLL herr_t H5Pset_fapl_mirror(hid_t fapl_id, H5FD_mirror_fapl_t *fa);
79
80 #ifdef __cplusplus
81 }
82 #endif
83
84 #else /* H5_HAVE_MIRROR_VFD */
85
86 #define H5FD_MIRROR (H5I_INAVLID_HID)
87
88 #endif /* H5_HAVE_MIRROR_VFD */
89
90 #endif /* H5FDmirror_H */