[Live-devel] Set a limit for RTSP Client connections.
Ross Finlayson
finlayson at live555.com
Wed Sep 16 16:50:35 PDT 2009
>When too many clients connect to the server, the CPU can't cope with
>the load, and I start losing frames or get read errors from the pipe
>I read the frames from (it's a realtime application, and I think the
>kernel starts to be unstable when the system CPU time is very high).
More likely: You don't have enough OS buffering on your pipe. You
can probably increase this.
>So, I'd like to set a static limit to the number of users who can
>get the live stream at the same time. Is there a way?
No, not without writing new code.
>If there isn't, couldn't I just create a derived class of the
>RTPsinks I'm using, increase a shared counter everytime their
>CreateNew() method is called and decrease it in the destructor of
>the sink?
A better solution would be make changes just to the RTSP server,
rather than to the (more general) RTP code. I.e., subclass
"RTSPServer" and "RTSPClientSession". Specifically:
- Write a subclass of "RTSPServer" that
- adds a 'client session counter' member variable
- redefines the "createNewClientSession()" member function to
- just return if the counter is already at its limit
- otherwise increment the counter and create a new
object of your "RTSPClientSession" subclass (instead of the original
""RTSPClientSession")
- Write a subclass of "RTSPClientSession" that:
- has its own destructor that decrements the parent server's counter
>Additionally, the increase and decrease counter operations wouldn't
>have to be mutually exclusive because the library works in a
>non-threaded fashion, is it right?
Yes.
--
Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
More information about the live-devel
mailing list