#include <gwenhywfar/types.h>
#include <gwenhywfar/db.h>
#include <gwenhywfar/netlayer.h>
#include <gwenhywfar/inherit.h>
#include <gwenhywfar/list2.h>
#include <time.h>
#include <stdio.h>
Go to the source code of this file.
typedef struct GWEN_IPCMANAGER GWEN_IPCMANAGER |
GWENHYWFAR_API GWEN_TYPE_UINT32 GWEN_IpcManager_AddClient | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_NETLAYER * | nlBase, | |||
GWEN_TYPE_UINT32 | mark | |||
) |
Adds a client to the IPC manager. The connection will not be established until needed.
mgr | pointer to the IPC manager object | |
tr | transport layer to be used (this MUST not be connected or in listening state) | |
userName | if given this name will be used for HTTP authorization | |
passwd | if given this password will be used for HTTP authorization | |
mark | a value assigned to the new connection. This value can be used for functions GWEN_IpcManager_GetNextInRequest and GWEN_IpcManager_SendMultiRequest, it is not otherwise used by the IPC manager |
GWENHYWFAR_API GWEN_TYPE_UINT32 GWEN_IpcManager_AddServer | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_NETLAYER * | nlBase, | |||
GWEN_TYPE_UINT32 | mark | |||
) |
Adds a server to the IPC manager. The IPC manager will immediately enter listen mode on the given transport layer.
mgr | pointer to the IPC manager object | |
tr | transport layer to be used (this MUST not be connected or in listening state) | |
mark | a value assigned to the new connection. This value can be used for functions GWEN_IpcManager_GetNextInRequest and GWEN_IpcManager_SendMultiRequest, it is not otherwise used by the IPC manager |
GWENHYWFAR_API void GWEN_IpcManager_Attach | ( | GWEN_IPCMANAGER * | mgr | ) |
GWENHYWFAR_API int GWEN_IpcManager_Disconnect | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | nid | |||
) |
Starts disconnecting the given client/server.
GWENHYWFAR_API void GWEN_IpcManager_Dump | ( | GWEN_IPCMANAGER * | mgr, | |
FILE * | f, | |||
int | indent | |||
) |
GWENHYWFAR_API void GWEN_IpcManager_free | ( | GWEN_IPCMANAGER * | mgr | ) |
GWENHYWFAR_API const char* GWEN_IpcManager_GetApplicationName | ( | const GWEN_IPCMANAGER * | mgr | ) |
GWENHYWFAR_API GWEN_TYPE_UINT32 GWEN_IpcManager_GetClientForNetLayer | ( | const GWEN_IPCMANAGER * | mgr, | |
const GWEN_NETLAYER * | nl | |||
) |
GWENHYWFAR_API GWEN_DB_NODE* GWEN_IpcManager_GetInRequestData | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | rid | |||
) |
Returns the GWEN_DB of the incoming request with the given id. The IPC manager remains the owner of the DB returned.
The DB returned contains a special group called IPC, which in turn contains some interesting variables:
mgr | pointer to the IPC manager object | |
rid | request id returned by GWEN_IpcManager_GetNextInRequest |
GWENHYWFAR_API GWEN_NETLAYER* GWEN_IpcManager_GetNetLayer | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | nid | |||
) |
Returns a pointer to the connection used by the given node.
GWENHYWFAR_API GWEN_TYPE_UINT32 GWEN_IpcManager_GetNextInRequest | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | mark | |||
) |
Returns the id of the next incoming request with the given mark. This request will then be taken of the list of new requests, so the next call to this function will return another request id (or 0 if there is none left). So you will have to preserve the id returned in order to use it.
mgr | pointer to the IPC manager object | |
mark,0 | matches any (see GWEN_IpcManager_AddServer) |
GWENHYWFAR_API GWEN_DB_NODE* GWEN_IpcManager_GetResponseData | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | rid | |||
) |
Returns the next response to the given outbound request. The data returned is taken off the list of responses, so any call to this function will return the next response (if any). The caller takes over ownership of the data returned.
mgr | pointer to the IPC manager object | |
rid | request id returned by GWEN_IpcManager_SendRequest or GWEN_IpcManager_SendMultiRequest |
GWENHYWFAR_API GWEN_IPCMANAGER* GWEN_IpcManager_new | ( | ) |
GWENHYWFAR_API GWEN_DB_NODE* GWEN_IpcManager_PeekResponseData | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | rid | |||
) |
Returns the next response to the given outbound request. The data returned is not taken off the list of responses, so the next call to this function will return the same response (if any). The caller does NOT take over ownership of the data returned.
mgr | pointer to the IPC manager object | |
rid | request id returned by GWEN_IpcManager_SendRequest or GWEN_IpcManager_SendMultiRequest |
GWENHYWFAR_API int GWEN_IpcManager_RemoveClient | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | nid | |||
) |
Removes a client which was previously added using GWEN_IpcManager_AddClient. This function removes all pending messages and/or requests for/from this client.
GWENHYWFAR_API int GWEN_IpcManager_RemoveRequest | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | rid, | |||
int | outbound | |||
) |
Removes a request.
mgr | pointer to the IPC manager object | |
rid | id of the request to which this is a response (as returned by GWEN_IpcManager_GetNextInRequest, GWEN_IpcManager_SendRequest or GWEN_IpcManager_SendMultiRequest) | |
outbound | if 0 then an incoming request is to be removed, otherwise an outgoing request is to be deleted |
GWENHYWFAR_API GWEN_TYPE_UINT32 GWEN_IpcManager_SendMultiRequest | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | mark, | |||
GWEN_DB_NODE * | req | |||
) |
Sends a request to any connection of the given mark.
mgr | pointer to the IPC manager object | |
mark | mark (as given to GWEN_IpcManager_AddClient or GWEN_IpcManager_AddServer), 0 matches all | |
req | DB containing the request |
GWENHYWFAR_API GWEN_TYPE_UINT32 GWEN_IpcManager_SendRequest | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | nid, | |||
GWEN_DB_NODE * | req | |||
) |
Sends a request via the given connection. It takes over the ownership of the given GWEN_DB in any case.
mgr | pointer to the IPC manager object | |
nid | value returned by GWEN_IpcManager_AddClient or by GWEN_IpcManager_GetInRequestData (in variable "ipc/nodeId"); | |
req | DB containing the request |
GWENHYWFAR_API int GWEN_IpcManager_SendResponse | ( | GWEN_IPCMANAGER * | mgr, | |
GWEN_TYPE_UINT32 | rid, | |||
GWEN_DB_NODE * | rsp | |||
) |
Sends a response to a request received.
mgr | pointer to the IPC manager object | |
rid | id of the request to which this is a response (as returned by GWEN_IpcManager_GetNextInRequest) | |
rsp | DB containing the response |
GWENHYWFAR_API void GWEN_IpcManager_SetApplicationName | ( | GWEN_IPCMANAGER * | mgr, | |
const char * | name | |||
) |
GWENHYWFAR_API int GWEN_IpcManager_Work | ( | GWEN_IPCMANAGER * | mgr | ) |
Lets the IPC manager do its work. You need to call GWEN_Net2_HeartBeat before this function to catch changes in the network connections used.