root/src/servers/registrar/mime/RegistrarThreadManager.h
//----------------------------------------------------------------------
//  This software is part of the Haiku distribution and is covered
//  by the MIT License.
//---------------------------------------------------------------------
/*!
        \file RegistrarThreadManager.h
        RegistrarThreadManager interface declaration
*/

#ifndef REGISTRAR_THREAD_MANAGER_H
#define REGISTRAR_THREAD_MANAGER_H

#include <Handler.h>
#include <SupportDefs.h>

#include <list>

class RegistrarThread;

class RegistrarThreadManager : public BHandler {
public:
        RegistrarThreadManager();
        ~RegistrarThreadManager();

        // BHandler virtuals
        virtual void MessageReceived(BMessage* message);

        // Thread management functions
        status_t LaunchThread(RegistrarThread *thread);
        status_t CleanupThreads();
        status_t ShutdownThreads();
        status_t KillThreads();

        uint ThreadCount() const;

        static const int kThreadLimit = 12;
private:

        std::list<RegistrarThread*>::iterator&
                RemoveThread(std::list<RegistrarThread*>::iterator &i);

        std::list<RegistrarThread*> fThreads;
        int32 fThreadCount;
};

#endif  // THREAD_MANAGER_H