15
15
#include <nanomsg/pubsub.h>
16
16
17
17
ccx_share_service_ctx ccx_share_ctx ;
18
+ #ifndef DISABLE_RUST
19
+ extern void ccxr_sub_entry_msg_cleanup_c (CcxSubEntryMessage * msg );
20
+ extern void ccxr_sub_entry_msg_print_c (const CcxSubEntryMessage * msg );
21
+ extern void ccxr_sub_entries_cleanup_c (ccx_sub_entries * entries );
22
+ extern void ccxr_sub_entries_print_c (const ccx_sub_entries * entries );
23
+ extern ccx_share_status ccxr_share_start_c (const char * stream_name );
24
+ extern ccx_share_status ccxr_share_stop_c (void );
25
+ extern ccx_share_status _ccxr_share_send_c (const CcxSubEntryMessage * msg );
26
+ extern ccx_share_status ccxr_share_send_c (const struct cc_subtitle * sub );
27
+ extern ccx_share_status ccxr_share_stream_done_c (const char * stream_name );
28
+ extern ccx_share_status _ccxr_share_sub_to_entries_c (const struct cc_subtitle * sub , ccx_sub_entries * entries );
29
+
30
+ #endif
18
31
19
32
void ccx_sub_entry_msg_cleanup (CcxSubEntryMessage * msg )
20
33
{
34
+ #ifndef DISABLE_RUST
35
+ return ccxr_sub_entry_msg_cleanup_c (msg );
36
+ #else
37
+
21
38
for (int i = 0 ; i < msg -> n_lines ; i ++ )
22
39
{
23
40
free (msg -> lines [i ]);
24
41
}
25
42
free (msg -> lines );
26
43
free (msg -> stream_name );
44
+ #endif
27
45
}
28
46
29
47
void ccx_sub_entry_msg_print (CcxSubEntryMessage * msg )
30
48
{
49
+ #ifndef DISABLE_RUST
50
+ return ccxr_sub_entry_msg_print_c (msg );
51
+ #else
31
52
if (!msg )
32
53
{
33
54
dbg_print (CCX_DMT_SHARE , "[share] print(!msg)\n" );
@@ -55,6 +76,7 @@ void ccx_sub_entry_msg_print(CcxSubEntryMessage *msg)
55
76
}
56
77
dbg_print (CCX_DMT_SHARE , "[share] %s\n" , msg -> lines [i ]);
57
78
}
79
+ #endif
58
80
}
59
81
60
82
void ccx_sub_entries_init (ccx_sub_entries * entries )
@@ -65,26 +87,37 @@ void ccx_sub_entries_init(ccx_sub_entries *entries)
65
87
66
88
void ccx_sub_entries_cleanup (ccx_sub_entries * entries )
67
89
{
90
+ #ifndef DISABLE_RUST
91
+ return ccxr_sub_entries_cleanup_c (entries );
92
+ #else
68
93
for (int i = 0 ; i < entries -> count ; i ++ )
69
94
{
70
95
ccx_sub_entry_msg_cleanup (entries -> messages + i );
71
96
}
72
97
free (entries -> messages );
73
98
entries -> messages = NULL ;
74
99
entries -> count = 0 ;
100
+ #endif
75
101
}
76
102
77
103
void ccx_sub_entries_print (ccx_sub_entries * entries )
78
104
{
105
+ #ifndef DISABLE_RUST
106
+ return ccxr_sub_entries_print_c (entries );
107
+ #else
79
108
dbg_print (CCX_DMT_SHARE , "[share] ccx_sub_entries_print (%u entries)\n" , entries -> count );
80
109
for (int i = 0 ; i < entries -> count ; i ++ )
81
110
{
82
111
ccx_sub_entry_msg_print (entries -> messages + i );
83
112
}
113
+ #endif
84
114
}
85
115
86
116
ccx_share_status ccx_share_start (const char * stream_name ) // TODO add stream
87
117
{
118
+ #ifndef DISABLE_RUST
119
+ return ccxr_share_start_c (stream_name );
120
+ #else
88
121
dbg_print (CCX_DMT_SHARE , "[share] ccx_share_start: starting service\n" );
89
122
// TODO for multiple files we have to move creation to ccx_share_init
90
123
ccx_share_ctx .nn_sock = nn_socket (AF_SP , NN_PUB );
@@ -121,18 +154,26 @@ ccx_share_status ccx_share_start(const char *stream_name) // TODO add stream
121
154
122
155
sleep (1 ); // We have to sleep a while, because it takes some time for subscribers to subscribe
123
156
return CCX_SHARE_OK ;
157
+ #endif
124
158
}
125
159
126
160
ccx_share_status ccx_share_stop ()
127
161
{
162
+ #ifndef DISABLE_RUST
163
+ return ccxr_share_stop_c ();
164
+ #else
128
165
dbg_print (CCX_DMT_SHARE , "[share] ccx_share_stop: stopping service\n" );
129
166
nn_shutdown (ccx_share_ctx .nn_sock , ccx_share_ctx .nn_binder );
130
167
free (ccx_share_ctx .stream_name );
131
168
return CCX_SHARE_OK ;
169
+ #endif
132
170
}
133
171
134
172
ccx_share_status ccx_share_send (struct cc_subtitle * sub )
135
173
{
174
+ #ifndef DISABLE_RUST
175
+ return ccxr_share_send_c (sub );
176
+ #else
136
177
dbg_print (CCX_DMT_SHARE , "[share] ccx_share_send: sending\n" );
137
178
ccx_sub_entries entries ;
138
179
ccx_sub_entries_init (& entries );
@@ -154,10 +195,14 @@ ccx_share_status ccx_share_send(struct cc_subtitle *sub)
154
195
ccx_sub_entries_cleanup (& entries );
155
196
156
197
return CCX_SHARE_OK ;
198
+ #endif
157
199
}
158
200
159
201
ccx_share_status _ccx_share_send (CcxSubEntryMessage * msg )
160
202
{
203
+ #ifndef DISABLE_RUST
204
+ return _ccxr_share_send_c (msg );
205
+ #else
161
206
dbg_print (CCX_DMT_SHARE , "[share] _ccx_share_send\n" );
162
207
size_t len = ccx_sub_entry_message__get_packed_size (msg );
163
208
void * buf = malloc (len );
@@ -175,10 +220,14 @@ ccx_share_status _ccx_share_send(CcxSubEntryMessage *msg)
175
220
free (buf );
176
221
dbg_print (CCX_DMT_SHARE , "[share] _ccx_share_send: sent\n" );
177
222
return CCX_SHARE_OK ;
223
+ #endif
178
224
}
179
225
180
226
ccx_share_status ccx_share_stream_done (char * stream_name )
181
227
{
228
+ #ifndef DISABLE_RUST
229
+ return ccxr_share_stream_done_c (stream_name );
230
+ #else
182
231
CcxSubEntryMessage msg = CCX_SUB_ENTRY_MESSAGE__INIT ;
183
232
msg .eos = 1 ;
184
233
msg .stream_name = strdup (stream_name );
@@ -197,10 +246,14 @@ ccx_share_status ccx_share_stream_done(char *stream_name)
197
246
ccx_sub_entry_msg_cleanup (& msg );
198
247
199
248
return CCX_SHARE_OK ;
249
+ #endif
200
250
}
201
251
202
252
ccx_share_status _ccx_share_sub_to_entries (struct cc_subtitle * sub , ccx_sub_entries * entries )
203
253
{
254
+ #ifndef DISABLE_RUST
255
+ return _ccxr_share_sub_to_entries_c (sub , entries );
256
+ #else
204
257
dbg_print (CCX_DMT_SHARE , "\n[share] _ccx_share_sub_to_entry\n" );
205
258
if (sub -> type == CC_608 )
206
259
{
@@ -295,6 +348,7 @@ ccx_share_status _ccx_share_sub_to_entries(struct cc_subtitle *sub, ccx_sub_entr
295
348
dbg_print (CCX_DMT_SHARE , "[share] done\n" );
296
349
297
350
return CCX_SHARE_OK ;
351
+ #endif
298
352
}
299
353
300
354
ccx_share_status ccx_share_launch_translator (char * langs , char * auth )
0 commit comments