/* * Paglo Crawler * Copyright (C) 2006-2008 Paglo Labs Inc. All rights reserved. * www.paglo.com * * This program is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ //--------------------------------------------------------------------------- #ifndef CommunicationThreadH #define CommunicationThreadH //--------------------------------------------------------------------------- #include "Thread.h" #include "EventQueue.h" #ifdef ROGUESCANNER #include "ClassificationServerInterface.h" #else #include "ServerInterface.h" #endif class TCommunicationThread : public TPThread { public: TCommunicationThread(void) { pthread_mutex_init(&FailedCmdsMutex, NULL); BackoffSeconds = 0; } ~TCommunicationThread(void); void EnqueueCmd(TServerCmd *Command); void EnqueuePriorityCmd(TServerCmd *Command); void FlushCmds(void); TEventQueue *GetInputQueue() { return &InputQueue; } int FailedCommandsSize() { return FailedCmds.size(); } int GetBackoffSeconds() { return BackoffSeconds; } protected: void Run(void); private: TEventQueue InputQueue; std::list FailedCmds; pthread_mutex_t FailedCmdsMutex; unsigned long BackoffSeconds; }; extern TCommunicationThread *_CommThread; void FlushCmds(void *Arg); //--------------------------------------------------------------------------- #endif