Documentation |
Documentation.Development-Manual-API-BIN-3-3 HistoryHide minor edits - Show changes to markup December 11, 2019, at 07:03 PM
by
- Added lines 1-99:
Documentation -> Development Manual 3.3 -> BIN Interface APIThis page has been visited 486 times. (:title OpenSIPS Development - BIN Interface API:) (:allVersions Development-Manual-API-BIN 3.3:)
(:toc-float Table of Content:) The Binary Internal Interface is an OpenSIPS core interface which offers an efficient way for communication between individual OpenSIPS instances.
For creating and sending a new event, the following methods are to be used : (:source lang=C -link -getcode :) /** * bin_init - begins the construction of a new binary packet (header part): * * +-------------------+------------------------------------------------------+ * | 8-byte HEADER | BODY max 65535 bytes | * +-------------------+------------------------------------------------------+ * | PK_MARKER | CRC | LEN | MOD_NAME | CMD | LEN | FIELD | LEN | FIELD |...| * +-------------------+------------------------------------------------------+ * * @param: { LEN, MOD_NAME } + CMD */ int bin_init(str *mod_name, int cmd_type) /* * copies the given string at the 'cpos' position in the buffer * allows null strings (NULL content or NULL param) * * @return: 0 on success */ int bin_push_str(const str *info) /* * adds a new integer value at the 'cpos' position in the buffer * * @return: 0 on success */ int bin_push_int(int info) /** * bin_send - computes the checksum of the current packet and then * sends the packet over UDP to the @dest destination * * @return: number of bytes sent, or -1 on error */ int bin_send(union sockaddr_union *dest)
(:sourceend:)
(:source lang=C -link -getcode :) /** * bin_register_cb - registers a module handler for specific packets * @mod_name: used to classify the incoming packets * @cb: the handler function, called once for each matched packet * * @return: 0 on success */ int bin_register_cb(char *mod_name, void (*cb)(int))
(:sourceend:)
* pops an str from the current position in the buffer * @info: pointer to store the result * * @return: 0 on success * * Note: The pointer returned in @info str is only valid for the duration of * the callback. Don't forget to copy the info into a safe buffer! */ int bin_pop_str(str *info) /* * pops an integer value from the current position in the buffer * @info: pointer to store the result * * @return: 0 on success */ int bin_pop_int(void *info)
(:sourceend:)
|