Changeset 76

Show
Ignore:
Timestamp:
01/12/06 19:20:30 (3 years ago)
Author:
edmanm
Message:

Ta da! Now we can identify when the Tor process mysteriously dies without
having a separate thread polling isRunning().

Location:
trunk/src/control
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/control/torcontrol.cpp

    r75 r76  
    3030TorControl::TorControl() 
    3131{ 
     32  /* Plumb the process signals */ 
     33  QObject::connect(&_torProcess, SIGNAL(started()), 
     34                   this, SLOT(onStarted())); 
     35  QObject::connect(&_torProcess, SIGNAL(finished(int, QProcess::ExitStatus)), 
     36                   this, SLOT(onStopped(int, QProcess::ExitStatus))); 
     37   
     38  /* Plumb the appropriate socket signals */ 
     39  QObject::connect(&_controlConn, SIGNAL(connected()), 
     40                   this, SLOT(onConnected())); 
     41  QObject::connect(&_controlConn, SIGNAL(disconnected()), 
     42                   this, SLOT(onDisconnected())); 
    3243} 
    3344 
     
    4758} 
    4859 
     60/** Emits a signal that the Tor process started */ 
     61void 
     62TorControl::onStarted() 
     63{ 
     64  emit started(); 
     65} 
    4966 
    5067/** Stop the Tor process. */ 
     
    5370{ 
    5471  _torProcess.stop(); 
     72} 
     73 
     74/** Emits a signal that the Tor process stopped */ 
     75void 
     76TorControl::onStopped(int exitCode, QProcess::ExitStatus exitStatus) 
     77{ 
     78  emit stopped(exitCode, exitStatus); 
    5579} 
    5680 
     
    7296} 
    7397 
     98/** Emits a signal that the control socket successfully established a 
     99 * connection to Tor. */ 
     100void 
     101TorControl::onConnected() 
     102{ 
     103  emit connected(); 
     104} 
     105 
    74106/** Disconnect from Tor's control port */ 
    75107void 
     
    77109{ 
    78110  _controlConn.disconnect(); 
     111} 
     112 
     113/** Emits a signal that the control socket disconnected from Tor */ 
     114void 
     115TorControl::onDisconnected() 
     116{ 
     117  emit disconnected(); 
    79118} 
    80119 
  • trunk/src/control/torcontrol.h

    r75 r76  
    3535  Q_OBJECT 
    3636   
    37 private: 
    38   ControlConnection _controlConn; 
    39   TorProcess _torProcess; 
    40  
    4137public: 
    4238  /** Default constructor */ 
     
    7571  /** Ask Tor for its version */ 
    7672  QString getTorVersion(QString *errmsg = 0); 
     73 
     74 
     75signals: 
     76  /** Emitted when the Tor process has started */ 
     77  void started(); 
    7778   
     79  /** Emitted when the Tor process has stopped */ 
     80  void stopped(int exitCode, QProcess::ExitStatus exitStatus); 
     81 
     82  /** Emitted when the controller has connected to Tor */ 
     83  void connected(); 
     84 
     85  /** Emitted when the controller has disconnected from Tor */ 
     86  void disconnected(); 
     87 
     88 
     89private: 
     90  /** Instantiates a socket used to connect to Tor's control port */ 
     91  ControlConnection _controlConn; 
     92  /** Manages and monitors the Tor process */ 
     93  TorProcess _torProcess;   
     94 
     95/* The slots below simply relay signals from the appropriate member objects */ 
     96private slots: 
     97  void onStarted(); 
     98  void onStopped(int exitCode, QProcess::ExitStatus exitStatus); 
     99  void onConnected(); 
     100  void onDisconnected(); 
    78101}; 
    79102