00001 /*************************************************************************** 00002 * Copyright (C) 2005-2007 Stefan Schwarzer, Jens Schneider, * 00003 * Matthias Hardt, Guido Madaus * 00004 * * 00005 * Copyright (C) 2007-2008 BerLinux Solutions GbR * 00006 * Stefan Schwarzer & Guido Madaus * 00007 * * 00008 * Copyright (C) 2009-2013 BerLinux Solutions GmbH * 00009 * * 00010 * Authors: * 00011 * Stefan Schwarzer <stefan.schwarzer@diskohq.org>, * 00012 * Matthias Hardt <matthias.hardt@diskohq.org>, * 00013 * Jens Schneider <jens.schneider@diskohq.org>, * 00014 * Guido Madaus <guido.madaus@diskohq.org>, * 00015 * Patrick Helterhoff <patrick.helterhoff@diskohq.org>, * 00016 * René Bählkow <rene.baehlkow@diskohq.org> * 00017 * * 00018 * This library is free software; you can redistribute it and/or * 00019 * modify it under the terms of the GNU Lesser General Public * 00020 * License version 2.1 as published by the Free Software Foundation. * 00021 * * 00022 * This library is distributed in the hope that it will be useful, * 00023 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00025 * Lesser General Public License for more details. * 00026 * * 00027 * You should have received a copy of the GNU Lesser General Public * 00028 * License along with this library; if not, write to the * 00029 * Free Software Foundation, Inc., * 00030 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * 00031 **************************************************************************/ 00032 00033 #include "mmsbase/mmseventsignup.h" 00034 00035 #include <algorithm> 00036 00037 MMSEventSignup::MMSEventSignup(MMSPluginData data) : plugindataset(true), onSubscription(NULL) { 00038 this->data = data; 00039 } 00040 00041 MMSEventSignup::MMSEventSignup() : plugindataset(false) { 00042 onSubscription = new sigc::signal<void,_IMMSEvent*>; 00043 } 00044 00045 MMSEventSignup::~MMSEventSignup() { 00046 lock(); 00047 this->subscriptions.clear(); 00048 unlock(); 00049 } 00050 00051 IMMSEventSignupManager *MMSEventSignup::getManager() { 00052 return this->manager; 00053 } 00054 00055 void MMSEventSignup::setManager(IMMSEventSignupManager *manager) { 00056 this->manager = manager; 00057 } 00058 00059 void MMSEventSignup::lock() { 00060 this->_lock.lock(); 00061 } 00062 00063 void MMSEventSignup::unlock() { 00064 this->_lock.unlock(); 00065 } 00066 00067 void MMSEventSignup::add(string subscription) { 00068 /* check for doublettes */ 00069 if(find(this->subscriptions.begin(), this->subscriptions.end(), subscription) != this->subscriptions.end()) { 00070 throw MMSEventSignupError(0,"subscription already made"); 00071 } 00072 lock(); 00073 this->subscriptions.push_back(subscription); 00074 unlock(); 00075 } 00076 00077 void MMSEventSignup::executeSignup() { 00078 if (this->manager) { 00079 this->manager->signup(this); 00080 } 00081 } 00082 00083 MMSPluginData MMSEventSignup::getPluginData() { 00084 return this->data; 00085 } 00086 00087 IMMSEventSignupManager *MMSEventSignup::manager = NULL; 00088 00089 vector<string>& MMSEventSignup::getSubScriptions() { 00090 return this->subscriptions; 00091 } 00092 00093 00094 sigc::signal<void,_IMMSEvent*> *MMSEventSignup::getSignal() { 00095 return this->onSubscription; 00096 } 00097 00098 bool MMSEventSignup::isPlugin() { 00099 return this->plugindataset; 00100 } 00101