@@ -2,7 +2,6 @@ use std::sync::Arc;
22
33use futures_util:: StreamExt ;
44use pyo3:: { Bound , PyAny , PyRef , Python } ;
5- use tokio:: sync:: RwLock ;
65
76use crate :: {
87 exceptions:: rust_err:: { NatsrpyError , NatsrpyResult } ,
@@ -20,7 +19,7 @@ pub struct PushConsumer {
2019 name : String ,
2120 #[ pyo3( get) ]
2221 stream_name : String ,
23- consumer : Arc < RwLock < NatsPushConsumer > > ,
22+ consumer : Arc < NatsPushConsumer > ,
2423}
2524
2625impl PushConsumer {
@@ -30,32 +29,30 @@ impl PushConsumer {
3029 Self {
3130 name : info. name . clone ( ) ,
3231 stream_name : info. stream_name . clone ( ) ,
33- consumer : Arc :: new ( RwLock :: new ( consumer) ) ,
32+ consumer : Arc :: new ( consumer) ,
3433 }
3534 }
3635}
3736
3837#[ pyo3:: pyclass]
3938pub struct MessagesIterator {
40- messages : Option < Arc < RwLock < async_nats:: jetstream:: consumer:: push:: Messages > > > ,
39+ messages : Option < Arc < tokio :: sync :: Mutex < async_nats:: jetstream:: consumer:: push:: Messages > > > ,
4140}
4241
4342impl From < async_nats:: jetstream:: consumer:: push:: Messages > for MessagesIterator {
4443 fn from ( value : async_nats:: jetstream:: consumer:: push:: Messages ) -> Self {
4544 Self {
46- messages : Some ( Arc :: new ( RwLock :: new ( value) ) ) ,
45+ messages : Some ( Arc :: new ( tokio :: sync :: Mutex :: new ( value) ) ) ,
4746 }
4847 }
4948}
5049
5150#[ pyo3:: pymethods]
5251impl PushConsumer {
5352 pub fn messages < ' py > ( & self , py : Python < ' py > ) -> NatsrpyResult < Bound < ' py , PyAny > > {
54- let consumer_guard = self . consumer . clone ( ) ;
53+ let consumer = self . consumer . clone ( ) ;
5554 natsrpy_future ( py, async move {
56- Ok ( MessagesIterator :: from (
57- consumer_guard. read ( ) . await . messages ( ) . await ?,
58- ) )
55+ Ok ( MessagesIterator :: from ( consumer. messages ( ) . await ?) )
5956 } )
6057 }
6158
@@ -87,7 +84,7 @@ impl MessagesIterator {
8784 } ;
8885 #[ allow( clippy:: significant_drop_tightening) ]
8986 natsrpy_future_with_timeout ( py, timeout, async move {
90- let mut messages = messages_guard. write ( ) . await ;
87+ let mut messages = messages_guard. lock ( ) . await ;
9188 let Some ( message) = messages. next ( ) . await else {
9289 return Err ( NatsrpyError :: AsyncStopIteration ) ;
9390 } ;
0 commit comments