[mythtv] MythSocket class

Isaac Richards ijr at case.edu
Wed Apr 5 16:55:02 UTC 2006


On Wednesday 05 April 2006 10:55, Jim Westfall wrote:
> Isaac Richards <ijr at case.edu> wrote [04.05.06]:
> > On Tuesday 04 April 2006 21:08, Jim Westfall wrote:
> > > Hi
> > >
> > > I took a stab at making a MythSocket class that was talked about
> > > briefly last week.  Attached is what I have thus far.
> > >
> > > mythsocket.diff - main patch that adds MythSocket into libmyth without
> > > converting anything else.  Its based on QSocketDevice and adds
> > > readyRead, connectionClosed, connected, and connectionFailed callbacks.
> > >  It also has a connectToHost() function like QSocket to background the
> > > connect() process.  I still need to add dns lookup support.
> >
> > I think I'd prefer an object that wasn't a QObject and didn't use a
> > QSocketNotifier.  That's what's causing problems with using QSocket now.
>
> hrm I thought it was strictly a QSocket not being thread safe issue. 
> Multiple calls to any of its functions that adjust its internal buffer can
> result in a crash.

I've seen bunches of crashes due to the QSocketNotifier as well.  However, it 
may be ok if we add qApp->lock/unlock around those (un)registerSocketNotifier 
calls..  I think the crashes were probably from QSocket weirdness (it tends 
to occasionally add multiple notifiers of the same type for the same socket, 
which seems to go horribly wrong).

> How would you go about doing it then?  Have MythSocket create a thread
> and monitor (select()) its own socket?

Something like that, yeah.  Let's try what you have, first, just with some 
additional locking, and adding refcounting to the class, too..

Isaac


More information about the mythtv-dev mailing list