add sendmsg function to esl

This commit is contained in:
Anthony Minessale 2011-09-06 14:53:38 -05:00
parent 96ddc51faa
commit 2ae688a33b
4 changed files with 51 additions and 0 deletions

View File

@ -534,6 +534,39 @@ ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, con
} }
ESL_DECLARE(esl_status_t) esl_sendmsg(esl_handle_t *handle, esl_event_t *event, const char *uuid)
{
char cmd_buf[128] = "sendmsg";
char send_buf[1292] = "";
char *txt;
if (!handle || !handle->connected || handle->sock == ESL_SOCK_INVALID) {
return ESL_FAIL;
}
if (uuid) {
snprintf(cmd_buf, sizeof(cmd_buf), "sendmsg %s", uuid);
}
esl_event_serialize(event, &txt, ESL_FALSE);
esl_log(ESL_LOG_DEBUG, "SENDMSG\n%s\n", txt);
if (send(handle->sock, txt, strlen(txt), 0) <= 0) goto fail;
free(txt);
return esl_recv(handle);
fail:
handle->connected = 0;
free(txt);
return ESL_FAIL;
}
ESL_DECLARE(esl_status_t) esl_filter(esl_handle_t *handle, const char *header, const char *value) ESL_DECLARE(esl_status_t) esl_filter(esl_handle_t *handle, const char *header, const char *value)
{ {
char send_buf[1024] = ""; char send_buf[1024] = "";

View File

@ -205,6 +205,15 @@ ESLevent *ESLconnection::sendEvent(ESLevent *send_me)
return new ESLevent("server_disconnected"); return new ESLevent("server_disconnected");
} }
int ESLconnection::sendMSG(ESLevent *send_me, const char *uuid)
{
if (esl_sendmsg(&handle, send_me->event, uuid) == ESL_SUCCESS) {
return 0;
}
return 1;
}
ESLevent *ESLconnection::recvEvent() ESLevent *ESLconnection::recvEvent()
{ {
if (esl_recv_event(&handle, 1, NULL) == ESL_SUCCESS) { if (esl_recv_event(&handle, 1, NULL) == ESL_SUCCESS) {

View File

@ -397,6 +397,14 @@ ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, con
*/ */
ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event); ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event);
/*!
\brief Send an event as a message to be parsed
\param handle Handle to which the event should be sent
\param event Event to be sent
\param uuid a specific uuid if not the default
*/
ESL_DECLARE(esl_status_t) esl_sendmsg(esl_handle_t *handle, esl_event_t *event, const char *uuid);
/*! /*!
\brief Connect a handle to a host/port with a specific password. This will also authenticate against the server \brief Connect a handle to a host/port with a specific password. This will also authenticate against the server
\param handle Handle to connect \param handle Handle to connect

View File

@ -86,6 +86,7 @@ class ESLconnection {
ESLevent *api(const char *cmd, const char *arg = NULL); ESLevent *api(const char *cmd, const char *arg = NULL);
ESLevent *bgapi(const char *cmd, const char *arg = NULL, const char *job_uuid = NULL); ESLevent *bgapi(const char *cmd, const char *arg = NULL, const char *job_uuid = NULL);
ESLevent *sendEvent(ESLevent *send_me); ESLevent *sendEvent(ESLevent *send_me);
int sendMSG(ESLevent *send_me, const char *uuid = NULL);
ESLevent *recvEvent(); ESLevent *recvEvent();
ESLevent *recvEventTimed(int ms); ESLevent *recvEventTimed(int ms);
ESLevent *filter(const char *header, const char *value); ESLevent *filter(const char *header, const char *value);