void AddressTranslator::insert( const std::string &_address, const service_id_t _service, const instance_id_t _instance, major_version_t _major, minor_version_t _minor) { if (isValidService(_service) && isValidInstance(_instance)) { CommonAPI::Address address(_address); Address someipAddress(_service, _instance, _major, _minor); #ifdef _WIN32 EnterCriticalSection(&critSec); #else std::lock_guard<std::mutex> itsLock(mutex_); #endif auto fw = forwards_.find(address); auto bw = backwards_.find(someipAddress); if (fw == forwards_.end() && bw == backwards_.end()) { forwards_[address] = someipAddress; backwards_[someipAddress] = address; COMMONAPI_DEBUG( "Added address mapping: ", address, " <--> ", someipAddress); } else if(bw != backwards_.end() && bw->second != _address) { COMMONAPI_ERROR("Trying to overwrite existing SomeIP address which is " "already mapped to a CommonAPI address: ", someipAddress, " <--> ", _address); } else if(fw != forwards_.end() && fw->second != someipAddress) { COMMONAPI_ERROR("Trying to overwrite existing CommonAPI address which is " "already mapped to a SomeIP address: ", _address, " <--> ", someipAddress); } #ifdef _WIN32 LeaveCriticalSection(&critSec); #endif } }
unsigned int __stdcall CPing::threadFunc(void *pParam) { CPing *pInstance = reinterpret_cast<CPing *>(pParam); if (isValidInstance(pInstance)) { pInstance->pingThread(); } return 0; }