/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2009, Tomasz Sowa * All rights reserved. * */ #ifndef headerfilecmslunotify #define headerfilecmslunotify #include #include #include #include "../templatesnotify/templatesnotify.h" #define WINIX_NOTIFY_ITEM_ADD 1 #define WINIX_NOTIFY_ITEM_EDIT 2 #define WINIX_NOTIFY_ITEM_DELETE 4 #define WINIX_NOTIFY_DIR_ADD 8 class Notify { public: Notify(); ~Notify(); void ReadTemplates(); bool Init(); /* this method addes an item to our special pool the pool is used by a second thread */ void ItemChanged(int notify_code); private: static void * ThreadRoutine(void * arg); bool Lock(); void Unlock(); static void CheckQueue(); static void SendEmail(NotifyMsg & n); static void SendEmail(const std::string & email); static void SendEmail(const std::string & email, const std::string & message); static void SendMessage(FILE * sendmail, const std::string & message); void CreateItemDir(std::string & dir, bool clear = true); void CreateItemLink(std::string & link); pthread_t thread; pthread_mutex_t mutex; NotifyMsg n; /* objects accessed by the second thread */ std::list notify_pool; static Notify * obj; std::string command; TemplatesNotify templates_notify; }; extern Notify notify; #endif