bool CallControlManagerImpl::setProperty(ConfigPropertyKeysEnum::ConfigPropertyKeys key, std::string& value) { unsigned long strtoul_result; char *strtoul_end; CSFLogInfoS(logTag, "setProperty(" << value << " )"); if (key == ConfigPropertyKeysEnum::eLocalVoipPort) { errno = 0; strtoul_result = strtoul(value.c_str(), &strtoul_end, 10); if (errno || value.c_str() == strtoul_end || strtoul_result > USHRT_MAX) { return false; } CCAPI_Config_set_local_voip_port((int) strtoul_result); } else if (key == ConfigPropertyKeysEnum::eRemoteVoipPort) { errno = 0; strtoul_result = strtoul(value.c_str(), &strtoul_end, 10); if (errno || value.c_str() == strtoul_end || strtoul_result > USHRT_MAX) { return false; } CCAPI_Config_set_remote_voip_port((int) strtoul_result); } else if (key == ConfigPropertyKeysEnum::eTransport) { if (value == "tcp") CCAPI_Config_set_transport_udp(false); else CCAPI_Config_set_transport_udp(true); } return true; }
bool CallControlManagerImpl::registerUser( const std::string& deviceName, const std::string& user, const std::string& password, const std::string& domain ) { setConnectionState(ConnectionStatusEnum::eRegistering); CSFLogInfoS(logTag, "registerUser(" << user << ", " << domain << " )"); if(phone != NULL) { setConnectionState(ConnectionStatusEnum::eReady); CSFLogError(logTag, "registerUser() failed - already connected!"); return false; } softPhone = CC_SIPCCServicePtr(new CC_SIPCCService()); phone = softPhone; phone->init(user, password, domain, deviceName); softPhone->setLoggingMask(sipccLoggingMask); phone->addCCObserver(this); phone->setP2PMode(false); bool bStarted = phone->startService(); if (!bStarted) { setConnectionState(ConnectionStatusEnum::eFailed); } else { setConnectionState(ConnectionStatusEnum::eReady); } return bStarted; }
bool CallControlManagerImpl::startP2PMode(const std::string& user) { setConnectionState(ConnectionStatusEnum::eRegistering); CSFLogInfoS(logTag, "startP2PMode(" << user << " )"); if(phone != NULL) { setConnectionState(ConnectionStatusEnum::eReady); CSFLogError(logTag, "startP2PMode() failed - already started in p2p mode!"); return false; } softPhone = CC_SIPCCServicePtr(new CC_SIPCCService()); phone = softPhone; phone->init(user, "", "127.0.0.1", "sipdevice"); softPhone->setLoggingMask(sipccLoggingMask); phone->addCCObserver(this); phone->setP2PMode(true); bool bStarted = phone->startService(); if (!bStarted) { setConnectionState(ConnectionStatusEnum::eFailed); } else { setConnectionState(ConnectionStatusEnum::eReady); } return bStarted; }
CallControlManagerImpl::CallControlManagerImpl() : multiClusterMode(false), sipccLoggingMask(0), authenticationStatus(AuthenticationStatusEnum::eNotAuthenticated), connectionState(ConnectionStatusEnum::eIdle) { CSFLogInfoS(logTag, "CallControlManagerImpl()"); }
bool CallControlManagerImpl::destroy() { CSFLogInfoS(logTag, "destroy()"); bool retval = disconnect(); if(retval == false) { return retval; } return retval; }
// Local IP Address void CallControlManagerImpl::setLocalIpAddressAndGateway(const std::string& localIpAddress, const std::string& defaultGW) { CSFLogInfoS(logTag, "setLocalIpAddressAndGateway(" << localIpAddress << ", " << defaultGW << ")"); this->localIpAddress = localIpAddress; this->defaultGW = defaultGW; if(softPhone != NULL) { softPhone->setLocalAddressAndGateway(this->localIpAddress, this->defaultGW); } }
bool CallControlManagerImpl::disconnect() { CSFLogInfoS(logTag, "disconnect()"); if(phone == NULL) return true; connectionState = ConnectionStatusEnum::eIdle; phone->removeCCObserver(this); phone->stop(); phone->destroy(); phone.reset(); softPhone.reset(); return true; }
bool CallControlManagerImpl::startSDPMode() { CSFLogInfoS(logTag, "startSDPMode"); if(phone != NULL) { CSFLogError(logTag, "%s failed - already started in SDP mode!",__FUNCTION__); return false; } softPhone = CC_SIPCCServicePtr(new CC_SIPCCService()); phone = softPhone; phone->init("JSEP", "", "127.0.0.1", "sipdevice"); softPhone->setLoggingMask(sipccLoggingMask); phone->addCCObserver(this); phone->setSDPMode(true); return phone->startService(); }
std::string CallControlManagerImpl::getProperty(ConfigPropertyKeysEnum::ConfigPropertyKeys key) { std::string retValue = "NONESET"; char tmpString[11]; CSFLogInfoS(logTag, "getProperty()"); if (key == ConfigPropertyKeysEnum::eLocalVoipPort) { csf_sprintf(tmpString, sizeof(tmpString), "%u", CCAPI_Config_get_local_voip_port()); retValue = tmpString; } else if (key == ConfigPropertyKeysEnum::eRemoteVoipPort) { csf_sprintf(tmpString, sizeof(tmpString), "%u", CCAPI_Config_get_remote_voip_port()); retValue = tmpString; } else if (key == ConfigPropertyKeysEnum::eVersion) { const char* version = CCAPI_Config_get_version(); retValue = version; } return retValue; }
bool CallControlManagerImpl::registerUser( const std::string& deviceName, const std::string& user, const std::string& password, const std::string& domain ) { setConnectionState(ConnectionStatusEnum::eRegistering); CSFLogInfoS(logTag, "registerUser(" << user << ", " << domain << " )"); if(phone != NULL) { setConnectionState(ConnectionStatusEnum::eReady); CSFLogErrorS(logTag, "registerUser() failed - already connected!"); return false; } // Check preconditions. if(localIpAddress.empty() || localIpAddress == "127.0.0.1") { setConnectionState(ConnectionStatusEnum::eFailed); CSFLogErrorS(logTag, "registerUser() failed - No local IP address set!"); return false; } softPhone = CC_SIPCCServicePtr(new CC_SIPCCService()); phone = softPhone; phone->init(user, password, domain, deviceName); softPhone->setLoggingMask(sipccLoggingMask); softPhone->setLocalAddressAndGateway(localIpAddress, defaultGW); phone->addCCObserver(this); bool bStarted = phone->startService(); if (!bStarted) { setConnectionState(ConnectionStatusEnum::eFailed); } else { setConnectionState(ConnectionStatusEnum::eReady); } return bStarted; }
void CallControlManagerImpl::setMultiClusterMode(bool allowMultipleClusters) { CSFLogInfoS(logTag, "setMultiClusterMode(" << allowMultipleClusters << ")"); multiClusterMode = allowMultipleClusters; }
void CallControlManagerImpl::setSecureCachePath(const std::string &secureCachePath) { CSFLogInfoS(logTag, "setSecureCachePath(" << secureCachePath << ")"); this->secureCachePath = secureCachePath; }
void CallControlManagerImpl::setSIPCCLoggingMask(const cc_int32_t mask) { CSFLogInfoS(logTag, "setSIPCCLoggingMask(" << mask << ")"); sipccLoggingMask = mask; }
CallControlManagerImpl::~CallControlManagerImpl() { CSFLogInfoS(logTag, "~CallControlManagerImpl()"); destroy(); }
void CallControlManagerImpl::setAuthenticationString(const std::string &authString) { CSFLogInfoS(logTag, "setAuthenticationString()"); this->authString = authString; }