refactoring, stage 1: turned GLiveSupport into a Singleton

This commit is contained in:
fgerlits 2007-08-09 10:44:55 +00:00
parent c7e0c451be
commit 7da892d146
4 changed files with 102 additions and 67 deletions

View file

@ -85,8 +85,15 @@ using namespace LiveSupport::GLiveSupport;
/*------------------------------------------------------------------------------
* The name of the config element for this class
*----------------------------------------------------------------------------*/
const std::string LiveSupport :: GLiveSupport ::
GLiveSupport :: configElementNameStr = "gLiveSupport";
const std::string
LiveSupport :: GLiveSupport :: GLiveSupport :: configElementNameStr
= "gLiveSupport";
/*------------------------------------------------------------------------------
* The singleton instance of GLiveSupport
*----------------------------------------------------------------------------*/
Ptr<LiveSupport::GLiveSupport::GLiveSupport>::Ref
LiveSupport :: GLiveSupport :: GLiveSupport :: singleton;
namespace {
@ -209,6 +216,21 @@ const std::string serialPortDefaultDevice = "/dev/ttyS0";
/* ============================================================= module code */
/*------------------------------------------------------------------------------
* Return the singleton instance to WidgetFactory
*----------------------------------------------------------------------------*/
Ptr<LiveSupport::GLiveSupport::GLiveSupport>::Ref
LiveSupport :: GLiveSupport ::
GLiveSupport :: getInstance(void) throw ()
{
if (!singleton.get()) {
singleton.reset(new LiveSupport::GLiveSupport::GLiveSupport());
}
return singleton;
}
/*------------------------------------------------------------------------------
* Configure the gLiveSupport object
*----------------------------------------------------------------------------*/

View file

@ -155,6 +155,11 @@ class GLiveSupport : public LocalizedConfigurable,
*/
static const std::string configElementNameStr;
/**
* The singleton instance of this object.
*/
static Ptr<GLiveSupport>::Ref singleton;
/**
* The authentication client used by the application.
*/
@ -357,6 +362,18 @@ class GLiveSupport : public LocalizedConfigurable,
*/
bool schedulerAvailable;
/**
* Private constructor.
*/
GLiveSupport(void) throw ()
: outputPlayerIsPaused(false),
cuePlayerIsPaused(false)
{
openedAudioClips.reset(new AudioClipMap());
openedPlaylists.reset(new PlaylistMap());
serialStream.reset(new LibSerial::SerialStream());
}
/**
* Display a message that the authentication server is not available.
* And offer a chance to edit the options to fix it.
@ -444,18 +461,6 @@ class GLiveSupport : public LocalizedConfigurable,
public:
/**
* Constructor.
*/
GLiveSupport(void) throw ()
: outputPlayerIsPaused(false),
cuePlayerIsPaused(false)
{
openedAudioClips.reset(new AudioClipMap());
openedPlaylists.reset(new PlaylistMap());
serialStream.reset(new LibSerial::SerialStream());
}
/**
* Virtual destructor.
*/
@ -490,6 +495,14 @@ class GLiveSupport : public LocalizedConfigurable,
return configElementNameStr;
}
/**
* Returns the singleton instance of this object.
*
* @return the singleton instance of this object.
*/
static Ptr<GLiveSupport>::Ref
getInstance() throw ();
/**
* Configure the scheduler daemon based on the XML element
* supplied.

View file

@ -113,7 +113,7 @@ GLiveSupportTest :: setUp(void) throw (CPPUNIT_NS::Exception)
{
Gtk::Main kit(0, 0);
gLiveSupport.reset(new GLiveSupport());
gLiveSupport = GLiveSupport::getInstance();
uid_t uid = getuid();
struct passwd * pwd = getpwuid(uid);

View file

@ -28,7 +28,7 @@
------------------------------------------------------------------------------*/
/** @file
* This file contains the main entry point to the Scheduler daemon.
* This file contains the main entry point to the Studio client.
*/
/* ============================================================ include files */
@ -155,7 +155,7 @@ int main ( int argc,
}
Ptr<LiveSupport::GLiveSupport::GLiveSupport>::Ref
gLiveSupport(new LiveSupport::GLiveSupport::GLiveSupport());
gLiveSupport = LiveSupport::GLiveSupport::GLiveSupport::getInstance();
try {
std::auto_ptr<xmlpp::DomParser>