Mercurial > hg > orthanc
comparison Core/Logging.cpp @ 4003:3c19371090c3
removing useless LoggingMemento
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 06 Jun 2020 11:08:59 +0200 |
parents | 02e61695cd83 |
children | 9b5ace33a00d |
comparison
equal
deleted
inserted
replaced
4002:02e61695cd83 | 4003:3c19371090c3 |
---|---|
457 warning_(&std::cerr), | 457 warning_(&std::cerr), |
458 info_(&std::cerr) | 458 info_(&std::cerr) |
459 { | 459 { |
460 } | 460 } |
461 }; | 461 }; |
462 | |
463 struct LoggingMementoImpl | |
464 { | |
465 bool valid_; | |
466 bool infoEnabled_; | |
467 bool traceEnabled_; | |
468 std::string targetFile_; | |
469 std::string targetFolder_; | |
470 | |
471 std::ostream* error_; | |
472 std::ostream* warning_; | |
473 std::ostream* info_; | |
474 }; | |
475 } | 462 } |
476 | 463 |
477 | 464 |
478 | 465 |
479 static std::unique_ptr<LoggingContext> loggingContext_; | 466 static std::unique_ptr<LoggingContext> loggingContext_; |
591 { | 578 { |
592 SetTargetFile(old->targetFile_); | 579 SetTargetFile(old->targetFile_); |
593 } | 580 } |
594 } | 581 } |
595 | 582 |
596 | |
597 LoggingMemento CreateLoggingMemento() | |
598 { | |
599 LoggingMementoImpl* memento = new LoggingMementoImpl(); | |
600 | |
601 memento->valid_ = true; | |
602 { | |
603 boost::mutex::scoped_lock lock(loggingMutex_); | |
604 memento->infoEnabled_ = loggingContext_->infoEnabled_; | |
605 memento->traceEnabled_ = loggingContext_->traceEnabled_; | |
606 memento->targetFile_ = loggingContext_->targetFile_; | |
607 memento->targetFolder_ = loggingContext_->targetFolder_; | |
608 | |
609 memento->error_ = loggingContext_->error_; | |
610 memento->warning_ = loggingContext_->warning_; | |
611 memento->info_ = loggingContext_->info_; | |
612 } | |
613 return reinterpret_cast<void*>(memento); | |
614 } | |
615 | |
616 void RestoreLoggingMemento(LoggingMemento mementoPtr) | |
617 { | |
618 LoggingMementoImpl* memento = | |
619 reinterpret_cast<LoggingMementoImpl*>(mementoPtr); | |
620 if (!memento->valid_) | |
621 throw std::runtime_error("Memento already used"); | |
622 memento->valid_ = false; | |
623 std::unique_ptr<LoggingMementoImpl> deleter(memento); | |
624 { | |
625 boost::mutex::scoped_lock lock(loggingMutex_); | |
626 loggingContext_.reset(new LoggingContext); | |
627 loggingContext_->error_ = memento->error_; | |
628 loggingContext_->warning_ = memento->warning_; | |
629 loggingContext_->info_ = memento->info_; | |
630 } | |
631 EnableInfoLevel(memento->infoEnabled_); | |
632 EnableTraceLevel(memento->traceEnabled_); | |
633 if (!memento->targetFolder_.empty()) | |
634 { | |
635 SetTargetFolder(memento->targetFolder_); | |
636 } | |
637 else if (!memento->targetFile_.empty()) | |
638 { | |
639 SetTargetFile(memento->targetFile_); | |
640 } | |
641 } | |
642 | |
643 void DiscardLoggingMemento(LoggingMemento mementoPtr) | |
644 { | |
645 LoggingMementoImpl* memento = | |
646 reinterpret_cast<LoggingMementoImpl*>(mementoPtr); | |
647 delete memento; | |
648 } | |
649 | 583 |
650 void EnableInfoLevel(bool enabled) | 584 void EnableInfoLevel(bool enabled) |
651 { | 585 { |
652 boost::mutex::scoped_lock lock(loggingMutex_); | 586 boost::mutex::scoped_lock lock(loggingMutex_); |
653 assert(loggingContext_.get() != NULL); | 587 assert(loggingContext_.get() != NULL); |