[asterisk-dev] RTP Bridging optimization
Vadim Lebedev
vadim at mbdsys.com
Mon May 14 00:36:39 MST 2007
Kevin P. Fleming wrote:
>Vadim Lebedev wrote:
>
>
>
>>You're right but only in the case that when you have separtae briding
>>threads for each direction.
>>I was thinkin about situation when there is ONE briging theard for two
>>directions. The you can you the same pipe
>>for both direction.
>>
>>
>
>No, you cannot. How are you going to distinguish packets that belong to
>the A->B direction from the ones that belong to the B->A direction if
>both of them are being written to the 'write' end of the same pipe?
>
>Instead of just proposing this idea without fully understanding how it
>would work (here on the developer mailing list), it would be much better
>if you wrote a small program demonstrating the technique and proving
>that it is possible. Otherwise this is all just speculation and people
>disagreeing about what may or may not work.
>
>Certainly it is not at all possible to create a single pipe and using it
>for both directions of multiple bridges... I don't know how you came to
>the conclusion that could work at all.
>
>
Ok, i'll write a demo program this week....
But the basic approach is trivial:
FD_SET(&readset, source_fd);
FD_SET(&readset, target_fd);
N = 1 + max(source_fd, target_fd);
select(N, &readset, 0, 0, &timeout);
if (FD_ISSET(&readset, source_fd))
{
// copy from source to target
slice(source_fd, mypipe[0], .....);
slice(mypipe[1], target_fd);
}
else if (FD_ISSET(&readset, target_fd))
{
// copy from target to source
slice(target_fd, mypipe[0], .....);
slice(mypipe[1], source_fd);
}
The trick is that the pipe is ALWAYS empty.... And when we push
something to the pipe, we pull the data from it immideately afterwards.
Thanks
Vadim
>_______________________________________________
>--Bandwidth and Colocation provided by Easynews.com --
>
>asterisk-dev mailing list
>To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-dev
>
>
>
>
More information about the asterisk-dev
mailing list