[mythtv] MythSocket class

Isaac Richards ijr at case.edu
Wed Jun 7 03:15:35 UTC 2006


On Tuesday 30 May 2006 12:27 am, Jim Westfall wrote:
> Isaac Richards <ijr at case.edu> wrote [05.29.06]:
> > On Monday 29 May 2006 1:03 pm, Jim Westfall wrote:
> > Hrm.  Don't really like making that explicit like that - have to modify
> > MythContext as well.  I think a check for if the socket is locked or not
> > in the select thread should accomplish mostly the same thing.
> >
> > Or, we could do all reading of available data into a buffer in that
> > select thread.
>
> It should only been needed if the readyRead() callback doesnt fully read
> what it needs to read from the socket.  The backend doesnt do any reading
> from the socket in readyRead(), its just hands it to a worker thread and
> returns.  The socket cant be put back onto the select list until
> ProcessRequest() returns, since multiple read/writeStringLists can occur
> as part of the processing.
>
> I am not sure the normal sock->Lock() will work because
> PlaybackSock::SendReceiveStringList() also does a sock->Lock().
>
> The other issue he is still having is the EncoderLink class since it
> interacts with the socket on its own to get free space and max bitrate on
> the slave backend.  It looks like once the slave backend registers with
> the master, the master takes control of the socket?  If that is the case
> we should be able to disable the socket from being on the select list
> once ANN SlaveBackend is seen.

Ignoring reads when the socket is locked fixes the EncoderLink and other 
classes using the socket case - they all lock the socket before writing to it 
and waiting for a reply.

Found what was causing the slave disconnects, though. =)  Bug in 
connectionClosed function in MainServer.

John, try this patch (newly generated against TOT).  I set up a slave backend 
and banged on things a bit (started/stopped recordings/live-tv, remote 
frontend stuff & local playback as well), and things seem stable here.  No 
speed differences that I can tell, either.

Isaac
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mythsocket5.diff.bz2
Type: application/x-bzip2
Size: 15297 bytes
Desc: not available
Url : http://mythtv.org/pipermail/mythtv-dev/attachments/20060606/1e21c230/attachment.bin 


More information about the mythtv-dev mailing list