@@ -254,9 +254,9 @@ use rinf::SharedCell;
254254use std::cell::RefCell;
255255use std::sync::Mutex;
256256use 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 '''
275275type ${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)>;
279279pub static ${snakeName .toUpperCase ()}_CHANNEL: ${messageName }Cell =
280280 OnceLock::new();
281281
282282impl ${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;
407409use std::collections::HashMap;
408410use std::sync::Mutex;
409411use std::sync::OnceLock;
410- use tokio::sync::mpsc::channel ;
412+ use tokio::sync::mpsc::unbounded_channel ;
411413
412414type 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