Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3c40065

Browse files
authored
Merge pull request cunarist#337 from cunarist/better-channel
Generate cleaner message file code
2 parents a50e831 + ba706f1 commit 3c40065

1 file changed

Lines changed: 29 additions & 27 deletions

File tree

flutter_ffi_plugin/bin/src/message.dart

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,9 @@ use rinf::SharedCell;
254254
use std::cell::RefCell;
255255
use std::sync::Mutex;
256256
use std::sync::OnceLock;
257-
use tokio::sync::mpsc::channel;
258-
use tokio::sync::mpsc::Receiver;
259-
use tokio::sync::mpsc::Sender;
257+
use tokio::sync::mpsc::unbounded_channel;
258+
use tokio::sync::mpsc::UnboundedReceiver;
259+
use tokio::sync::mpsc::UnboundedSender;
260260
''',
261261
atFront: true,
262262
);
@@ -273,17 +273,17 @@ use tokio::sync::mpsc::Sender;
273273
rustPath,
274274
'''
275275
type ${messageName}Cell = SharedCell<(
276-
Option<Sender<DartSignal<${normalizePascal(messageName)}>>>,
277-
Option<Receiver<DartSignal<${normalizePascal(messageName)}>>>,
276+
Option<UnboundedSender<DartSignal<${normalizePascal(messageName)}>>>,
277+
Option<UnboundedReceiver<DartSignal<${normalizePascal(messageName)}>>>,
278278
)>;
279279
pub static ${snakeName.toUpperCase()}_CHANNEL: ${messageName}Cell =
280280
OnceLock::new();
281281
282282
impl ${normalizePascal(messageName)} {
283-
pub fn get_dart_signal_receiver() -> Receiver<DartSignal<Self>> {
283+
pub fn get_dart_signal_receiver() -> UnboundedReceiver<DartSignal<Self>> {
284284
let cell = ${snakeName.toUpperCase()}_CHANNEL
285285
.get_or_init(|| {
286-
let (sender, receiver) = channel(1024);
286+
let (sender, receiver) = unbounded_channel();
287287
Mutex::new(RefCell::new(Some((Some(sender), Some(receiver)))))
288288
})
289289
.lock()
@@ -298,7 +298,7 @@ impl ${normalizePascal(messageName)} {
298298
let is_closed = pair.0.as_ref().unwrap().is_closed();
299299
drop(borrowed);
300300
if is_closed {
301-
let (sender, receiver) = channel(1024);
301+
let (sender, receiver) = unbounded_channel();
302302
cell.replace(Some((Some(sender), Some(receiver))));
303303
}
304304
}
@@ -313,39 +313,41 @@ impl ${normalizePascal(messageName)} {
313313
await insertTextToFile(
314314
dartPath,
315315
'''
316-
void sendSignalToRust() {
317-
sendDartSignal(
318-
${markedMessage.id},
319-
this.writeToBuffer(),
320-
Uint8List(0),
321-
);
316+
extension ${messageName}Extension on $messageName{
317+
void sendSignalToRust() {
318+
sendDartSignal(
319+
${markedMessage.id},
320+
this.writeToBuffer(),
321+
Uint8List(0),
322+
);
323+
}
322324
}
323325
''',
324-
after: "class $messageName extends \$pb.GeneratedMessage {",
325326
);
326327
}
327328
}
328329
if (markType == MarkType.dartSignalBinary) {
329330
await insertTextToFile(
330331
dartPath,
331332
'''
332-
void sendSignalToRust(Uint8List binary) {
333-
sendDartSignal(
334-
${markedMessage.id},
335-
this.writeToBuffer(),
336-
binary,
337-
);
333+
extension {$messageName}Extension on $messageName{
334+
void sendSignalToRust(Uint8List binary) {
335+
sendDartSignal(
336+
${markedMessage.id},
337+
this.writeToBuffer(),
338+
binary,
339+
);
340+
}
338341
}
339342
''',
340-
after: "class $messageName extends \$pb.GeneratedMessage {",
341343
);
342344
}
343345
if (markType == MarkType.rustSignal ||
344346
markType == MarkType.rustSignalBinary) {
345347
await insertTextToFile(
346348
dartPath,
347349
'''
348-
static Stream<RustSignal<$messageName>> rustSignalStream =
350+
static final rustSignalStream =
349351
${camelName}Controller.stream.asBroadcastStream();
350352
''',
351353
after: "class $messageName extends \$pb.GeneratedMessage {",
@@ -407,7 +409,7 @@ use std::cell::RefCell;
407409
use std::collections::HashMap;
408410
use std::sync::Mutex;
409411
use std::sync::OnceLock;
410-
use tokio::sync::mpsc::channel;
412+
use tokio::sync::mpsc::unbounded_channel;
411413
412414
type SignalHandlers =
413415
OnceLock<Mutex<HashMap<i32, Box<dyn Fn(Vec<u8>, Vec<u8>) + Send>>>>;
@@ -452,7 +454,7 @@ hash_map.insert(
452454
};
453455
let cell = ${snakeName.toUpperCase()}_CHANNEL
454456
.get_or_init(|| {
455-
let (sender, receiver) = channel(1024);
457+
let (sender, receiver) = unbounded_channel();
456458
Mutex::new(RefCell::new(Some((Some(sender), Some(receiver)))))
457459
})
458460
.lock()
@@ -467,14 +469,14 @@ hash_map.insert(
467469
let is_closed = pair.0.as_ref().unwrap().is_closed();
468470
drop(borrowed);
469471
if is_closed {
470-
let (sender, receiver) = channel(1024);
472+
let (sender, receiver) = unbounded_channel();
471473
cell.replace(Some((Some(sender), Some(receiver))));
472474
}
473475
}
474476
let borrowed = cell.borrow();
475477
let pair = borrowed.as_ref().unwrap();
476478
let sender = pair.0.as_ref().unwrap();
477-
let _ = sender.try_send(dart_signal);
479+
let _ = sender.send(dart_signal);
478480
}),
479481
);
480482
''';

0 commit comments

Comments
 (0)