2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
4 * Copyright (c) 2004 Michael Bushkov <bushman@rsu.ru>
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 #ifndef __NS_CACHED_CLI_H__
32 #define __NS_CACHED_CLI_H__
35 * This file contains API for working with caching daemon
40 CET_WRITE_REQUEST = 1,
41 CET_WRITE_RESPONSE = 2,
43 CET_READ_RESPONSE = 4,
44 CET_TRANSFORM_REQUEST = 5,
45 CET_TRANSFORM_RESPONSE = 6,
46 CET_MP_WRITE_SESSION_REQUEST = 7,
47 CET_MP_WRITE_SESSION_RESPONSE = 8,
48 CET_MP_WRITE_SESSION_WRITE_REQUEST = 9,
49 CET_MP_WRITE_SESSION_WRITE_RESPONSE = 10,
50 CET_MP_WRITE_SESSION_CLOSE_NOTIFICATION = 11,
51 CET_MP_WRITE_SESSION_ABANDON_NOTIFICATION = 12,
52 CET_MP_READ_SESSION_REQUEST = 13,
53 CET_MP_READ_SESSION_RESPONSE = 14,
54 CET_MP_READ_SESSION_READ_REQUEST = 15,
55 CET_MP_READ_SESSION_READ_RESPONSE = 16,
56 CET_MP_READ_SESSION_CLOSE_NOTIFICATION = 17
59 struct cached_connection_params {
61 struct timeval timeout;
64 struct cached_connection_ {
69 int mp_flag; /* shows if the connection is used for
70 * multipart operations */
73 /* simple abstractions for not to write "struct" every time */
74 typedef struct cached_connection_ *cached_connection;
75 typedef struct cached_connection_ *cached_mp_write_session;
76 typedef struct cached_connection_ *cached_mp_read_session;
78 #define INVALID_CACHED_CONNECTION (NULL)
79 #define INVALID_CACHED_MP_WRITE_SESSION (NULL)
80 #define INVALID_CACHED_MP_READ_SESSION (NULL)
84 /* initialization/destruction routines */
85 extern cached_connection __open_cached_connection(
86 struct cached_connection_params const *);
87 extern void __close_cached_connection(cached_connection);
89 /* simple read/write operations */
90 extern int __cached_write(cached_connection, const char *, const char *,
91 size_t, const char *, size_t);
92 extern int __cached_read(cached_connection, const char *, const char *,
93 size_t, char *, size_t *);
95 /* multipart read/write operations */
96 extern cached_mp_write_session __open_cached_mp_write_session(
97 struct cached_connection_params const *, const char *);
98 extern int __cached_mp_write(cached_mp_write_session, const char *, size_t);
99 extern int __abandon_cached_mp_write_session(cached_mp_write_session);
100 extern int __close_cached_mp_write_session(cached_mp_write_session);
102 extern cached_mp_read_session __open_cached_mp_read_session(
103 struct cached_connection_params const *, const char *);
104 extern int __cached_mp_read(cached_mp_read_session, char *, size_t *);
105 extern int __close_cached_mp_read_session(cached_mp_read_session);