www.pudn.com > acdx.rar > ACDConfig.cpp


 /*============================================================= 
 
 Function: 
		 
 
 
 Author: Leon Wang  
==============================================================*/ 
// ACDConfig.cpp: implementation of the ACDConfig class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "ACDConfig.h" 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
//##ModelId=424BB647027A 
int ACDConfig::FIRST_FIT = 1; 
//##ModelId=424BB647027B 
int ACDConfig::ROUND_ROBIN = 2; 
//##ModelId=424BB6470288 
int ACDConfig::LONGEST_IDLE= 3; 
 
//##ModelId=424BB6470289 
int ACDConfig::QUEUEING_MODE_REJECT = 1; 
//##ModelId=424BB6470298 
int ACDConfig::QUEUEING_MODE_RINGING = 2; 
//##ModelId=424BB6470299 
int ACDConfig::QUEUEING_MODE_TALKING = 3; 
//##ModelId=424BB64702A7 
int ACDConfig::QUEUEING_MODE_RINGANDTALK = 4; 
 
//##ModelId=424BB64702BA 
ACDConfig*  ACDConfig::instance = 0; 
 
//##ModelId=424BB647024B 
ACDConfig::ACDConfig() 
{ 
	appiniPath = getAppPath();// get acdx.ini path 
} 
 
//##ModelId=424BB647024C 
ACDConfig::~ACDConfig() 
{ 
	if (instance != NULL) { 
		delete instance; 
		instance = NULL; 
			 
	} 
} 
 
//##ModelId=424BB6470249 
ACDConfig* ACDConfig::getInstance() 
{ 
	if (instance == 0 ) { 
		instance = new ACDConfig(); 
	} 
	return instance; 
} 
 
//##ModelId=424BB647023C 
int ACDConfig::getDistributionAlgorithm() 
{ 
    CString algo = getConfigKey("Main","distribution_algorithm", "FIRST_FIT"); 
    if (algo.Compare("ROUND_ROBIN") == 0) 
	{ 
         return ROUND_ROBIN; 
	} 
    if (algo.Compare("LONGEST_IDLE") == 0) 
	{ 
         return LONGEST_IDLE; 
	} 
    else 
	{ 
         return FIRST_FIT; 
	} 
} 
 
 
    /** 
     * return list of queues. 
     * @return list of queues    read ini queues parameter 
     */ 
//##ModelId=424BB6470278 
void ACDConfig::getQueues(queue_list_vt &queues) { 
		char tempChar[MAX_PATH]; 
		GetPrivateProfileString("Main","queues","",tempChar,MAX_PATH,appiniPath); 
		queues.reserve(5); 
		CString q(tempChar); 
		int qPos = q.Find(','); 
		do { 
			if (qPos ==-1) { 
				queues.push_back(q); 
				break; 
			}		 
			queues.push_back(q.Left(qPos));				 
			q = q.Mid(qPos); 
			qPos = q.Find(','); 
		} while(true); 
} 
 
    /** 
     * Read queueing mode selected in config file for this queue. 
     * @param queue queue name 
     * @return constant for mode 
     */ 
//##ModelId=424BB647026B 
int ACDConfig::getQueueingMode(CString queue) { 
        CString mode = getConfigKey("Main",queue + "_queueing_mode", "REJECT"); 
        if (mode=="RINGING") 
            return QUEUEING_MODE_RINGING; 
        else if (mode=="TALKING") 
            return QUEUEING_MODE_TALKING; 
        else if (mode=="RINGANDTALK") 
            return QUEUEING_MODE_RINGANDTALK; 
        else 
            return QUEUEING_MODE_REJECT; 
} 
 
    /** 
     * Get ring timeout for this queue. 
     * @param queue queue name 
     * @return  timeout in seconds 
     */ 
//##ModelId=424BB6470269 
long ACDConfig::getRingTimeout(CString queue) { 
      int timeout = getConfigKey("Main",queue + "_ring_timeout", 60);    // 1 min 
      return timeout; 
} 
 
    /** 
     * Get talk timeout for this queue. 
     * @param queue queue name 
     * @return  timeout in seconds 
     */ 
//##ModelId=424BB647025C 
long ACDConfig::getTalkTimeout(CString queue) { 
      int timeout = getConfigKey("Main",queue + "_talk_timeout", 3600);  // 1 hr 
      return timeout; 
} 
 
    /** 
     * Get priority setting for this queue. 
     * @param queue queue name 
     * @return  priority 
     */ 
//##ModelId=424BB647025A 
int ACDConfig::getPriority(CString queue) { 
      int prio = getConfigKey("Main",queue + "_priority", 0); 
      return prio; 
} 
 
    /** 
     * Get max size for this queue. 
     * @param queue queue name 
     * @return  size 
     */ 
//##ModelId=424BB647024E 
int ACDConfig::getMaxSize(CString queue) { 
      int size = getConfigKey("Main",queue + "_size", -1); 
      return size; 
}