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