void CompatComponent::DumpServiceStatusAttrs(ostream& fp, const Service::Ptr& service, CompatObjectType type)
{
- assert(service->OwnsLock());
+ ASSERT(service->OwnsLock());
String output;
String perfdata;
continue;
}
- assert(!service->GetCurrentChecker().IsEmpty());
+ ASSERT(!service->GetCurrentChecker().IsEmpty());
}
Endpoint::Ptr endpoint;
static void SigHupHandler(int signum)
{
- assert(signum == SIGHUP);
+ ASSERT(signum == SIGHUP);
g_ReloadConfig = true;
}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test\test.vcxproj", "{5163C576-6AA1-4769-8396-9639C45BE124}"
+ ProjectSection(ProjectDependencies) = postProject
+ {BE412865-FEBA-4259-AD41-58950D1F5432} = {BE412865-FEBA-4259-AD41-58950D1F5432}
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
m_Debugging = true;
#endif /* _WIN32 */
- assert(m_Instance == NULL);
+ ASSERT(m_Instance == NULL);
m_Instance = this;
}
*/
void Application::SigIntHandler(int signum)
{
- assert(signum == SIGINT);
+ ASSERT(signum == SIGINT);
struct sigaction sa;
memset(&sa, 0, sizeof(sa));
}
/**
- * Signal handler for SIGABRT. Helps with debugging assert()s.
+ * Signal handler for SIGABRT. Helps with debugging ASSERT()s.
*
* @param signum The signal number.
*/
void Application::SigAbrtHandler(int signum)
{
- assert(signum == SIGABRT);
+ ASSERT(signum == SIGABRT);
#ifndef _WIN32
struct sigaction sa;
*/
void Application::UpdatePidFile(const String& filename)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
if (m_PidFile != NULL)
*/
void Application::ClosePidFile(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
if (m_PidFile != NULL)
~AsyncTask(void)
{
if (!m_Finished)
- assert(!"Contract violation: AsyncTask was destroyed before its completion callback was invoked.");
+ ASSERT(!"Contract violation: AsyncTask was destroyed before its completion callback was invoked.");
else if (!m_ResultRetrieved)
- assert(!"Contract violation: AsyncTask was destroyed before its result was retrieved.");
+ ASSERT(!"Contract violation: AsyncTask was destroyed before its result was retrieved.");
}
*/
void Start(const CompletionCallback& completionCallback = CompletionCallback())
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
m_CompletionCallback = completionCallback;
*/
bool IsFinished(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
return m_Finished;
}
*/
TResult GetResult(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
while (!m_Finished)
*/
void FinishException(const boost::exception_ptr& ex)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
m_Exception = ex;
*/
void FinishResult(const TResult& result)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
m_Result = result;
*/
void FinishInternal(void)
{
- assert(!m_Finished);
+ ASSERT(!m_Finished);
m_Finished = true;
m_CV.notify_all();
void AttributeHolder::Bind(AttributeBase *boundAttribute)
{
- assert(m_OwnsAttribute);
+ ASSERT(m_OwnsAttribute);
boundAttribute->Set(m_Attribute->Get());
m_Attribute = boundAttribute;
m_OwnsAttribute = false;
*/
Value Dictionary::Get(const char *key) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
map<String, Value>::const_iterator it;
return;
}
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
- assert(!m_Sealed);
+ ASSERT(!m_Sealed);
pair<map<String, Value>::iterator, bool> ret;
ret = m_Data.insert(make_pair(key, value));
*/
String Dictionary::Add(const Value& value)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
Dictionary::Iterator it;
*/
Dictionary::Iterator Dictionary::Begin(void)
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
return m_Data.begin();
}
*/
Dictionary::Iterator Dictionary::End(void)
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
return m_Data.end();
}
*/
size_t Dictionary::GetLength(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
return m_Data.size();
*/
bool Dictionary::Contains(const String& key) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
return (m_Data.find(key) != m_Data.end());
*/
void Dictionary::Remove(const String& key)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
Dictionary::Iterator it;
*/
void Dictionary::Remove(Dictionary::Iterator it)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
String key = it->first;
*/
void Dictionary::Seal(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
m_Sealed = true;
*/
bool Dictionary::IsSealed(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
return m_Sealed;
*/
Dictionary::Ptr Dictionary::ShallowClone(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
Dictionary::Ptr clone = boost::make_shared<Dictionary>();
{
ObjectLock olock(this);
- assert(serializedUpdate->IsSealed());
+ ASSERT(serializedUpdate->IsSealed());
Value configTxValue = serializedUpdate->Get("configTx");
Dictionary::Ptr attrs = serializedUpdate->Get("attrs");
- assert(attrs->IsSealed());
+ ASSERT(attrs->IsSealed());
{
ObjectLock alock(attrs);
Dictionary::Ptr attr = it->second;
- assert(attr->IsSealed());
+ ASSERT(attr->IsSealed());
int type = attr->Get("type");
void DynamicObject::RegisterAttribute(const String& name,
AttributeType type, AttributeBase *boundAttribute)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
boost::mutex::scoped_lock lock(m_AttributeMutex);
void DynamicObject::InternalRegisterAttribute(const String& name,
AttributeType type, AttributeBase *boundAttribute)
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
AttributeHolder attr(type, boundAttribute);
*/
void DynamicObject::Set(const String& name, const Value& data)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
boost::mutex::scoped_lock lock(m_AttributeMutex);
*/
void DynamicObject::Touch(const String& name)
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
boost::mutex::scoped_lock lock(m_AttributeMutex);
*/
Value DynamicObject::Get(const String& name) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
boost::mutex::scoped_lock lock(m_AttributeMutex);
void DynamicObject::InternalSetAttribute(const String& name, const Value& data,
double tx, bool allowEditConfig)
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
DynamicObject::AttributeIterator it;
it = m_Attributes.find(name);
*/
Value DynamicObject::InternalGetAttribute(const String& name) const
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
DynamicObject::AttributeConstIterator it;
it = m_Attributes.find(name);
void DynamicObject::Register(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
/* Add this new object to the list of modified objects.
* We're doing this here because we can't construct
void DynamicObject::OnRegistrationCompleted(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
Start();
void DynamicObject::OnUnregistrationCompleted(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
OnUnregistered(GetSelf());
}
void DynamicObject::Start(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
/* Nothing to do here. */
}
void DynamicObject::Unregister(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
DynamicType::Ptr dtype = GetType();
while (NetString::ReadStringFromStream(sfp, &message)) {
Dictionary::Ptr persistentObject = Value::Deserialize(message);
- assert(persistentObject->IsSealed());
+ ASSERT(persistentObject->IsSealed());
String type = persistentObject->Get("type");
String name = persistentObject->Get("name");
void DynamicObject::OnAttributeChanged(const String&)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
}
/*
const DynamicObject::AttributeMap& DynamicObject::GetAttributes(void) const
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
return m_Attributes;
}
DynamicObject::Ptr DynamicType::CreateObject(const Dictionary::Ptr& serializedUpdate)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectFactory factory;
*/
size_t FIFO::Peek(void *buffer, size_t count)
{
- assert(IsConnected());
+ ASSERT(IsConnected());
if (count > m_DataSize)
count = m_DataSize;
*/
void FIFO::Write(const void *buffer, size_t count)
{
- assert(IsConnected());
+ ASSERT(IsConnected());
ResizeBuffer(m_Offset + m_DataSize + count);
memcpy(m_Buffer + m_Offset + m_DataSize, buffer, count);
{
#ifdef _DEBUG
shared_ptr<T> other = dynamic_pointer_cast<T>(m_Object);
- assert(other);
+ ASSERT(other);
#else /* _DEBUG */
shared_ptr<T> other = static_pointer_cast<T>(m_Object);
#endif /* _DEBUG */
void ObjectLock::Lock(void)
{
- assert(!m_Lock.owns_lock() && m_Object != NULL);
- assert(!m_Object->OwnsLock());
+ ASSERT(!m_Lock.owns_lock() && m_Object != NULL);
+ ASSERT(!m_Object->OwnsLock());
m_Lock = Object::MutexType::scoped_lock(m_Object->m_Mutex);
/* Read one byte for every task we take from the pending tasks list. */
char buffer[MaxTasksPerThread];
- assert(want <= sizeof(buffer));
+ ASSERT(want <= sizeof(buffer));
int have = read(taskFd, &buffer, want);
}
while (have > 0) {
- assert(!m_Tasks.empty());
+ ASSERT(!m_Tasks.empty());
Process::Ptr task = m_Tasks.front();
m_Tasks.pop_front();
{
m_Result.ExecutionStart = Utility::GetTime();
- assert(m_FD == -1);
+ ASSERT(m_FD == -1);
int fds[2];
{
ObjectLock olock(this);
- assert(!m_ReadThread.joinable() && !m_WriteThread.joinable());
- assert(GetFD() != INVALID_SOCKET);
+ ASSERT(!m_ReadThread.joinable() && !m_WriteThread.joinable());
+ ASSERT(GetFD() != INVALID_SOCKET);
// TODO: figure out why we're not using "this" here
m_ReadThread = thread(boost::bind(&Socket::ReadThreadProc, static_cast<Socket::Ptr>(GetSelf())));
IMAGEHLP_LINE64 line;
line.SizeOfStruct = sizeof(IMAGEHLP_LINE64);
- (void) SymGetLineFromAddr64(GetCurrentProcess(), dwAddress, &dwDisplacement, &line);
- (void) SymFromAddr(GetCurrentProcess(), dwAddress, &dwDisplacement64, pSymbol);
+ fp << "\t(" << i - ignoreFrames - 1 << ") ";
+
+ if (SymGetLineFromAddr64(GetCurrentProcess(), dwAddress, &dwDisplacement, &line))
+ fp << line.FileName << ":" << line.LineNumber;
+ else
+ fp << "(unknown file/line)";
- fp << "\t(" << i - ignoreFrames - 1 << ") " << line.FileName << ":" << line.LineNumber << ": " << pSymbol->Name << "+" << dwDisplacement64 << std::endl;
+ fp << ": ";
+
+ if (SymFromAddr(GetCurrentProcess(), dwAddress, &dwDisplacement64, pSymbol))
+ fp << pSymbol->Name << "+" << dwDisplacement64;
+ else
+ fp << "(unknown function)";
+
+ fp << std::endl;
}
#endif /* _WIN32 */
}
Stream::~Stream(void)
{
- assert(!m_Running);
+ ASSERT(!m_Running);
}
/**
{
ObjectLock olock(this);
- assert(m_Running);
+ ASSERT(m_Running);
m_Running = false;
}
severity = LOG_CRIT;
break;
default:
- assert(!"Invalid severity specified.");
+ ASSERT(!"Invalid severity specified.");
}
syslog(severity | LOG_USER, "%s", entry.Message.CStr());
*/
void Timer::Call(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
Timer::Ptr self = GetSelf();
*/
void Timer::SetInterval(double interval)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
m_Interval = interval;
*/
double Timer::GetInterval(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
return m_Interval;
*/
void Timer::Start(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
{
boost::mutex::scoped_lock lock(m_Mutex);
*/
void Timer::Stop(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
*/
void Timer::Reschedule(double next)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
*/
double Timer::GetNext(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
boost::mutex::scoped_lock lock(m_Mutex);
return m_Next;
*/
void TlsStream::HandleIO(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
char data[16 * 1024];
}
+#ifdef _DEBUG
+# define ASSERT(expr) ASSERT(expr)
+#else /* _DEBUG */
+# define ASSERT(expr)
+#endif /* _DEBUG */
+
#endif /* UTILITY_H */
void ConfigCompiler::Compile(void)
{
- assert(ConfigCompilerContext::GetContext() != NULL);
+ ASSERT(ConfigCompilerContext::GetContext() != NULL);
try {
yyparse(this);
void ConfigCompiler::Compile(void)
{
- assert(ConfigCompilerContext::GetContext() != NULL);
+ ASSERT(ConfigCompilerContext::GetContext() != NULL);
try {
yyparse(this);
void ConfigCompilerContext::SetContext(ConfigCompilerContext *context)
{
- assert(m_Context == NULL || context == NULL);
+ ASSERT(m_Context == NULL || context == NULL);
m_Context = context;
}
void ConfigCompilerContext::ActivateItems(void)
{
- assert(m_Context == NULL);
+ ASSERT(m_Context == NULL);
Logger::Write(LogInformation, "config", "Activating config items in compilation unit '" + m_Unit + "'");
BOOST_FOREACH(const ConfigItem::Ptr& item, m_Items) {
*/
DynamicObject::Ptr ConfigItem::Commit(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
String type, name;
*/
void ConfigItem::Unregister(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
DynamicObject::Ptr dobj = m_DynamicObject.lock();
void ConfigItem::UnregisterFromParents(void)
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
BOOST_FOREACH(const String& parentName, m_Parents) {
ConfigItem::Ptr parent = GetObject(GetType(), parentName);
*/
void ConfigItem::OnParentCommitted(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ConfigItem::Ptr self = GetSelf();
return value.IsObjectType<Dictionary>();
default:
- assert(!"Type rule has invalid type specifier.");
+ ASSERT(!"Type rule has invalid type specifier.");
return false;
}
void Host::OnRegistrationCompleted(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
DynamicObject::OnRegistrationCompleted();
bool Host::IsReachable(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
set<Service::Ptr> parentServices = GetParentServices();
void Host::UpdateSlaveServices(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ConfigItem::Ptr item = ConfigItem::GetObject("Host", GetName());
void Host::OnAttributeChanged(const String& name)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
if (name == "hostgroups")
HostGroup::InvalidateMembersCache();
if (it != services.end()) {
Service::Ptr service = it->second.lock();
- assert(service);
+ ASSERT(service);
return service;
}
}
Dictionary::Ptr dict = name;
String short_name;
- assert(dict->IsSealed());
+ ASSERT(dict->IsSealed());
return Service::GetByNamePair(dict->Get("host"), dict->Get("service"));
} else {
HostState Host::GetLastState(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
if (!IsReachable())
return HostUnreachable;
Dictionary::Ptr Host::CalculateDynamicMacros(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
Dictionary::Ptr macros = boost::make_shared<Dictionary>();
*/
void HostGroup::OnRegistrationCompleted(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
InvalidateMembersCache();
}
*/
void IcingaApplication::OnShutdown(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
{
ObjectLock olock(this);
{
Value result;
- assert(macros->IsSealed());
+ ASSERT(macros->IsSealed());
if (cmd.IsScalar()) {
result = InternalResolveMacros(cmd, macros);
*/
void Notification::BeginExecuteNotification(NotificationType type, const Dictionary::Ptr& cr)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
Dictionary::Ptr macros = cr->Get("macros");
*/
void Notification::BeginExecuteNotificationHelper(const Dictionary::Ptr& notificationMacros, NotificationType type, const User::Ptr& user)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
vector<Dictionary::Ptr> macroDicts;
*/
void Notification::NotificationCompletedHandler(const ScriptTask::Ptr& task)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
{
ObjectLock olock(this);
*/
void Notification::OnAttributeChanged(const String& name)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
if (name == "host_name" || name == "service")
Service::InvalidateNotificationsCache();
{
bool reachable = IsReachable();
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
ObjectLock olock(this);
ServiceState old_state = GetState();
*/
void Service::BeginExecuteCheck(const function<void (void)>& callback)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
{
ObjectLock olock(this);
void Service::CheckCompletedHandler(const Dictionary::Ptr& checkInfo,
const ScriptTask::Ptr& task, const function<void (void)>& callback)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
checkInfo->Set("execution_end", Utility::GetTime());
checkInfo->Set("schedule_end", Utility::GetTime());
*/
void Service::OnRegistrationCompleted(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
DynamicObject::OnRegistrationCompleted();
*/
bool Service::IsReachable(void) const
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
BOOST_FOREACH(const Service::Ptr& service, GetParentServices()) {
/* ignore ourselves */
*/
AcknowledgementType Service::GetAcknowledgement(void)
{
- assert(OwnsLock());
+ ASSERT(OwnsLock());
if (m_Acknowledgement.IsEmpty())
return AcknowledgementNone;
*/
void Service::OnAttributeChanged(const String& name)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
Service::Ptr self = GetSelf();
}
if (cr) {
- assert(cr->IsSealed());
+ ASSERT(cr->IsSealed());
macros->Set("SERVICELATENCY", Service::CalculateLatency(cr));
macros->Set("SERVICEEXECUTIONTIME", Service::CalculateExecutionTime(cr));
*/
void ServiceGroup::OnRegistrationCompleted(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
InvalidateMembersCache();
}
*/
void User::OnAttributeChanged(const String& name)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
if (name == "groups")
UserGroup::InvalidateMembersCache();
*/
void UserGroup::OnRegistrationCompleted(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
InvalidateMembersCache();
}
void Endpoint::ClientClosedHandler(void)
{
- assert(!OwnsLock());
+ ASSERT(!OwnsLock());
/*try {
GetClient()->CheckException();