kafka: send messages with key via kafka_send_key function and kafka.send_key for...
[sip-router] / src / modules / kafka / kfk.h
1 /*
2  * Copyright (C) 2019 Vicente Hernando (Sonoc https://www.sonoc.io)
3  *
4  * This file is part of Kamailio, a free SIP server.
5  *
6  * Kamailio is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version
10  *
11  * Kamailio is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  */
21
22 /** \file
23  * \brief Kafka :: Apache Kafka functions via librdkafka
24  * \ingroup kfk
25  *
26  * - \ref kfk.c
27  * - Module: \ref kfk
28  */
29
30 #ifndef _KFK_H
31 #define _KFK_H
32
33 /**
34  * \brief Initialize kafka functionality.
35  *
36  * \param brokers brokers to add.
37  * \return 0 on success.
38  */
39 int kfk_init(char *brokers);
40
41 /**
42  * \brief Close kafka related functionality.
43  */
44 void kfk_close();
45
46 /**
47  * \brief Parse general configuration properties for Kafka.
48  */
49 int kfk_conf_parse(char *spec);
50
51 /**
52  * \brief Parse topic properties for Kafka.
53  */
54 int kfk_topic_parse(char *spec);
55
56 /**
57  * \brief send a message to a topic.
58  *
59  * \param topic_name name of the topic
60  * \param message message to send.
61  * \param key to send.
62  *
63  * \return 0 on success.
64  */
65 int kfk_message_send(str *topic_name, str *message, str *key);
66
67 /**
68  * \brief Initialize statistics.
69  *
70  * \return 0 on success.
71  */
72 int kfk_stats_init();
73
74 /**
75  * \brief Close statistics.
76  */
77 void kfk_stats_close();
78
79 /**
80  * \brief Get total statistics.
81  *
82  * \param msg_total return total number of messages by reference.
83  * \param msg_error return total number of errors by reference.
84  *
85  * \return 0 on success.
86  */
87 int kfk_stats_get(uint64_t *msg_total, uint64_t *msg_error);
88
89 /**
90  * \brief Get statistics for a specified topic.
91  *
92  * \param s_topic string with topic name.
93  * \param msg_total return total number of messages by reference.
94  * \param msg_error return total number of errors by reference.
95  *
96  * \return 0 on success.
97  */
98 int kfk_stats_topic_get(str *s_topic, uint64_t *msg_total, uint64_t *msg_error);
99
100 #endif /* KFK_H */