IBR-DTNSuite  0.8
daemon/src/Component.cpp
Go to the documentation of this file.
00001 /*
00002  * Component.cpp
00003  *
00004  *  Created on: 21.04.2010
00005  *      Author: morgenro
00006  */
00007 
00008 #include "Component.h"
00009 #include <ibrcommon/thread/MutexLock.h>
00010 #include <ibrcommon/Logger.h>
00011 
00012 namespace dtn
00013 {
00014         namespace daemon
00015         {
00016                 Component::~Component()
00017                 {
00018                 }
00019 
00020                 IndependentComponent::IndependentComponent()
00021                 {
00022                 }
00023 
00024                 IndependentComponent::~IndependentComponent()
00025                 {
00026                         join();
00027                 }
00028 
00029                 void IndependentComponent::initialize()
00030                 {
00031                         componentUp();
00032                 }
00033 
00034                 void IndependentComponent::startup()
00035                 {
00036                         try {
00037                                 this->start();
00038                         } catch (const ibrcommon::ThreadException &ex) {
00039                                 IBRCOMMON_LOGGER(error) << "failed to start IndependentComponent\n" << ex.what() << IBRCOMMON_LOGGER_ENDL;
00040                         }
00041                 }
00042 
00043                 void IndependentComponent::terminate()
00044                 {
00045                         componentDown();
00046                         JoinableThread::stop();
00047                 }
00048 
00049                 void IndependentComponent::run()
00050                 {
00051                         componentRun();
00052                 }
00053 
00054                 IntegratedComponent::IntegratedComponent()
00055                 {
00056                 }
00057 
00058                 IntegratedComponent::~IntegratedComponent()
00059                 {
00060                 }
00061 
00062                 void IntegratedComponent::initialize()
00063                 {
00064                         componentUp();
00065                 }
00066 
00067                 void IntegratedComponent::startup()
00068                 {
00069                         // nothing to do
00070                 }
00071 
00072                 void IntegratedComponent::terminate()
00073                 {
00074                         componentDown();
00075                 }
00076         }
00077 }