Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndris Zeila <andris.zeila@zabbix.com>2017-01-02 17:47:42 +0300
committerAndris Zeila <andris.zeila@zabbix.com>2017-01-02 17:47:42 +0300
commit20f014a051c0370a6aa15aabab94401a7eb83561 (patch)
tree961d2df7db2df319ef413e999893bd5dd9e389e1 /include/zbxipcservice.h
parenta9e1055b6706209e9f972e60b40bce6db54be96c (diff)
.......PS. [ZBXNEXT-3386] implemented IPMI based remote command scipts, improved IPC message reading/writing
Diffstat (limited to 'include/zbxipcservice.h')
-rw-r--r--include/zbxipcservice.h26
1 files changed, 15 insertions, 11 deletions
diff --git a/include/zbxipcservice.h b/include/zbxipcservice.h
index ba537386cdd..e9c4c4b9037 100644
--- a/include/zbxipcservice.h
+++ b/include/zbxipcservice.h
@@ -6,21 +6,23 @@
#define ZBX_IPC_SOCKET_BUFFER_SIZE 4096
-#define ZBX_IPC_MESSAGE_CODE 0
-#define ZBX_IPC_MESSAGE_SIZE 1
+#define ZBX_IPC_RECV_IMMEDIATE 0
+#define ZBX_IPC_RECV_WAIT 1
+#define ZBX_IPC_RECV_TIMEOUT 2
typedef struct
{
- /* the message header containing code and data */
- zbx_uint32_t header[2];
+ /* the message code */
+ zbx_uint32_t code;
+
+ /* the data size */
+ zbx_uint32_t size;
+
/* the data */
unsigned char *data;
}
zbx_ipc_message_t;
-#define zbx_ipc_message_code(message) (message)->header[ZBX_IPC_MESSAGE_CODE]
-#define zbx_ipc_message_size(message) (message)->header[ZBX_IPC_MESSAGE_SIZE]
-
/* messaging socket */
typedef struct
{
@@ -53,22 +55,23 @@ typedef struct
/* the clients with messages */
zbx_queue_ptr_t clients_recv;
-
- /* the client to be removed during next recv() call */
- zbx_ipc_client_t *client_remove;
}
zbx_ipc_service_t;
int zbx_ipc_service_init_env(const char *path, char **error);
void zbx_ipc_service_free_env();
int zbx_ipc_service_start(zbx_ipc_service_t *service, const char *service_name, char **error);
-void zbx_ipc_service_recv(zbx_ipc_service_t *service, int timeout, zbx_ipc_client_t **client,
+int zbx_ipc_service_recv(zbx_ipc_service_t *service, int timeout, zbx_ipc_client_t **client,
zbx_ipc_message_t **message);
void zbx_ipc_service_close(zbx_ipc_service_t *service);
int zbx_ipc_client_send(zbx_ipc_client_t *client, zbx_uint32_t code, const unsigned char *data, zbx_uint32_t size);
void zbx_ipc_client_close(zbx_ipc_client_t *client);
+void zbx_ipc_client_addref(zbx_ipc_client_t *client);
+void zbx_ipc_client_release(zbx_ipc_client_t *client);
+int zbx_ipc_client_connected(zbx_ipc_client_t *client);
+
int zbx_ipc_socket_open(zbx_ipc_socket_t *csocket, const char *service_name, int timeout, char **error);
void zbx_ipc_socket_close(zbx_ipc_socket_t *csocket);
int zbx_ipc_socket_write(zbx_ipc_socket_t *csocket, zbx_uint32_t code, const unsigned char *data,
@@ -79,6 +82,7 @@ void zbx_ipc_message_free(zbx_ipc_message_t *message);
void zbx_ipc_message_clean(zbx_ipc_message_t *message);
void zbx_ipc_message_init(zbx_ipc_message_t *message);
void zbx_ipc_message_format(const zbx_ipc_message_t *message, char **data);
+void zbx_ipc_message_copy(zbx_ipc_message_t *dst, const zbx_ipc_message_t *src);
#endif