1 /*
2 Copyright (c) 2010-2020 Roger Light <roger@atchoo.org>
3 
4 All rights reserved. This program and the accompanying materials
5 are made available under the terms of the Eclipse Public License 2.0
6 and Eclipse Distribution License v1.0 which accompany this distribution.
7 
8 The Eclipse Public License is available at
9    https://www.eclipse.org/legal/epl-2.0/
10 and the Eclipse Distribution License is available at
11   http://www.eclipse.org/org/documents/edl-v10.php.
12 
13 SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
14 
15 Contributors:
16    Roger Light - initial implementation and documentation.
17 */
18 
19 #include "config.h"
20 
21 #include "mosquitto.h"
22 #include "mosquitto_internal.h"
23 
24 
mosquitto_connect_callback_set(struct mosquitto * mosq,void (* on_connect)(struct mosquitto *,void *,int))25 void mosquitto_connect_callback_set(struct mosquitto *mosq, void (*on_connect)(struct mosquitto *, void *, int))
26 {
27 	pthread_mutex_lock(&mosq->callback_mutex);
28 	mosq->on_connect = on_connect;
29 	pthread_mutex_unlock(&mosq->callback_mutex);
30 }
31 
mosquitto_connect_with_flags_callback_set(struct mosquitto * mosq,void (* on_connect)(struct mosquitto *,void *,int,int))32 void mosquitto_connect_with_flags_callback_set(struct mosquitto *mosq, void (*on_connect)(struct mosquitto *, void *, int, int))
33 {
34 	pthread_mutex_lock(&mosq->callback_mutex);
35 	mosq->on_connect_with_flags = on_connect;
36 	pthread_mutex_unlock(&mosq->callback_mutex);
37 }
38 
mosquitto_connect_v5_callback_set(struct mosquitto * mosq,void (* on_connect)(struct mosquitto *,void *,int,int,const mosquitto_property *))39 void mosquitto_connect_v5_callback_set(struct mosquitto *mosq, void (*on_connect)(struct mosquitto *, void *, int, int, const mosquitto_property *))
40 {
41 	pthread_mutex_lock(&mosq->callback_mutex);
42 	mosq->on_connect_v5 = on_connect;
43 	pthread_mutex_unlock(&mosq->callback_mutex);
44 }
45 
mosquitto_disconnect_callback_set(struct mosquitto * mosq,void (* on_disconnect)(struct mosquitto *,void *,int))46 void mosquitto_disconnect_callback_set(struct mosquitto *mosq, void (*on_disconnect)(struct mosquitto *, void *, int))
47 {
48 	pthread_mutex_lock(&mosq->callback_mutex);
49 	mosq->on_disconnect = on_disconnect;
50 	pthread_mutex_unlock(&mosq->callback_mutex);
51 }
52 
mosquitto_disconnect_v5_callback_set(struct mosquitto * mosq,void (* on_disconnect)(struct mosquitto *,void *,int,const mosquitto_property *))53 void mosquitto_disconnect_v5_callback_set(struct mosquitto *mosq, void (*on_disconnect)(struct mosquitto *, void *, int, const mosquitto_property *))
54 {
55 	pthread_mutex_lock(&mosq->callback_mutex);
56 	mosq->on_disconnect_v5 = on_disconnect;
57 	pthread_mutex_unlock(&mosq->callback_mutex);
58 }
59 
mosquitto_publish_callback_set(struct mosquitto * mosq,void (* on_publish)(struct mosquitto *,void *,int))60 void mosquitto_publish_callback_set(struct mosquitto *mosq, void (*on_publish)(struct mosquitto *, void *, int))
61 {
62 	pthread_mutex_lock(&mosq->callback_mutex);
63 	mosq->on_publish = on_publish;
64 	pthread_mutex_unlock(&mosq->callback_mutex);
65 }
66 
mosquitto_publish_v5_callback_set(struct mosquitto * mosq,void (* on_publish)(struct mosquitto *,void *,int,int,const mosquitto_property * props))67 void mosquitto_publish_v5_callback_set(struct mosquitto *mosq, void (*on_publish)(struct mosquitto *, void *, int, int, const mosquitto_property *props))
68 {
69 	pthread_mutex_lock(&mosq->callback_mutex);
70 	mosq->on_publish_v5 = on_publish;
71 	pthread_mutex_unlock(&mosq->callback_mutex);
72 }
73 
mosquitto_message_callback_set(struct mosquitto * mosq,void (* on_message)(struct mosquitto *,void *,const struct mosquitto_message *))74 void mosquitto_message_callback_set(struct mosquitto *mosq, void (*on_message)(struct mosquitto *, void *, const struct mosquitto_message *))
75 {
76 	pthread_mutex_lock(&mosq->callback_mutex);
77 	mosq->on_message = on_message;
78 	pthread_mutex_unlock(&mosq->callback_mutex);
79 }
80 
mosquitto_message_v5_callback_set(struct mosquitto * mosq,void (* on_message)(struct mosquitto *,void *,const struct mosquitto_message *,const mosquitto_property * props))81 void mosquitto_message_v5_callback_set(struct mosquitto *mosq, void (*on_message)(struct mosquitto *, void *, const struct mosquitto_message *, const mosquitto_property *props))
82 {
83 	pthread_mutex_lock(&mosq->callback_mutex);
84 	mosq->on_message_v5 = on_message;
85 	pthread_mutex_unlock(&mosq->callback_mutex);
86 }
87 
mosquitto_subscribe_callback_set(struct mosquitto * mosq,void (* on_subscribe)(struct mosquitto *,void *,int,int,const int *))88 void mosquitto_subscribe_callback_set(struct mosquitto *mosq, void (*on_subscribe)(struct mosquitto *, void *, int, int, const int *))
89 {
90 	pthread_mutex_lock(&mosq->callback_mutex);
91 	mosq->on_subscribe = on_subscribe;
92 	pthread_mutex_unlock(&mosq->callback_mutex);
93 }
94 
mosquitto_subscribe_v5_callback_set(struct mosquitto * mosq,void (* on_subscribe)(struct mosquitto *,void *,int,int,const int *,const mosquitto_property * props))95 void mosquitto_subscribe_v5_callback_set(struct mosquitto *mosq, void (*on_subscribe)(struct mosquitto *, void *, int, int, const int *, const mosquitto_property *props))
96 {
97 	pthread_mutex_lock(&mosq->callback_mutex);
98 	mosq->on_subscribe_v5 = on_subscribe;
99 	pthread_mutex_unlock(&mosq->callback_mutex);
100 }
101 
mosquitto_unsubscribe_callback_set(struct mosquitto * mosq,void (* on_unsubscribe)(struct mosquitto *,void *,int))102 void mosquitto_unsubscribe_callback_set(struct mosquitto *mosq, void (*on_unsubscribe)(struct mosquitto *, void *, int))
103 {
104 	pthread_mutex_lock(&mosq->callback_mutex);
105 	mosq->on_unsubscribe = on_unsubscribe;
106 	pthread_mutex_unlock(&mosq->callback_mutex);
107 }
108 
mosquitto_unsubscribe_v5_callback_set(struct mosquitto * mosq,void (* on_unsubscribe)(struct mosquitto *,void *,int,const mosquitto_property * props))109 void mosquitto_unsubscribe_v5_callback_set(struct mosquitto *mosq, void (*on_unsubscribe)(struct mosquitto *, void *, int, const mosquitto_property *props))
110 {
111 	pthread_mutex_lock(&mosq->callback_mutex);
112 	mosq->on_unsubscribe_v5 = on_unsubscribe;
113 	pthread_mutex_unlock(&mosq->callback_mutex);
114 }
115 
mosquitto_log_callback_set(struct mosquitto * mosq,void (* on_log)(struct mosquitto *,void *,int,const char *))116 void mosquitto_log_callback_set(struct mosquitto *mosq, void (*on_log)(struct mosquitto *, void *, int, const char *))
117 {
118 	pthread_mutex_lock(&mosq->log_callback_mutex);
119 	mosq->on_log = on_log;
120 	pthread_mutex_unlock(&mosq->log_callback_mutex);
121 }
122 
123