Eyepea / aiosip

SIP support for AsyncIO (DEPRECATED)
Apache License 2.0
82 stars 41 forks source link

Queues in transaction #42

Closed ovv closed 6 years ago

ovv commented 6 years ago

Lots of stuff moving around.

I believe it's best to use queues in transaction instead of a single future so we can pass the 100-200 status code response. It also allow better proxying of re-transmission. I'm not sure I did it the best way possible but it's a WIP.

At the moment it uses async iterator that are only available on 3.6.

codecov-io commented 6 years ago

Codecov Report

Merging #42 into master will increase coverage by 7.1%. The diff coverage is 72.37%.

Impacted file tree graph

@@            Coverage Diff            @@
##           master      #42     +/-   ##
=========================================
+ Coverage   68.31%   75.42%   +7.1%     
=========================================
  Files          15       15             
  Lines        1190     1298    +108     
  Branches      204      231     +27     
=========================================
+ Hits          813      979    +166     
+ Misses        300      219     -81     
- Partials       77      100     +23
Impacted Files Coverage Δ
aiosip/exceptions.py 100% <100%> (ø) :arrow_up:
aiosip/protocol.py 93.44% <100%> (ø) :arrow_up:
aiosip/application.py 66.66% <100%> (-0.38%) :arrow_down:
aiosip/peers.py 78.45% <50%> (-0.53%) :arrow_down:
aiosip/message.py 74.28% <55.55%> (+1.82%) :arrow_up:
aiosip/transaction.py 65.14% <70.71%> (+26.15%) :arrow_up:
aiosip/dialplan.py 83.33% <75%> (ø) :arrow_up:
aiosip/dialog.py 74.01% <77.52%> (+11.67%) :arrow_up:
aiosip/utils.py 70.96% <0%> (-3.23%) :arrow_down:
... and 3 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 0578d71...22e9d7e. Read the comment docs.

ludovic-gasc commented 6 years ago

Should we drop 3.5 ?

Yes for me.

It might be possible to do the same with aiter and anext ?

To my understanding, Queues will be more flexible for the feed control, but at the same time, aiter and anext might be enough, not sure.

ovv commented 6 years ago

To my understanding, Queues will be more flexible for the feed control, but at the same time, aiter and anext might be enough, not sure.

__aiter__ & __anext__ are for replacing the async iterator for 3.5 if we want to keep support

vodik commented 6 years ago

I only care about 3.6 or newer, works for me.

vodik commented 6 years ago

Another option is to have something like await get_next_message() in a while loop, I suppose.

ovv commented 6 years ago

Another option is to have something like await get_next_message() in a while loop, I suppose.

I propose we drop 3.5 and if someone request it we can always look into adding something like that

ovv commented 6 years ago

This should be ok. If you want to take a look @vodik

It also fix some bugs that I introduced in the previous PR

ovv commented 6 years ago

Feel free to open issues if I broke something with this :)