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; }