blob: 58cfb81e03bf0ac14798dab64d34b16cb87bf5c5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include "error_capacitor.h"
namespace InputXSLT {
ErrorCapacitor::ErrorCapacitor(ErrorMultiplexer* multiplexer):
multiplexer_(multiplexer),
error_cache_(new error_cache()) {
this->multiplexer_->connectReceiver(this);
}
ErrorCapacitor::~ErrorCapacitor() {
this->multiplexer_->disconnectReceiver(this);
}
void ErrorCapacitor::discharge() {
if ( !this->error_cache_->empty() ) {
throw exception(std::move(this->error_cache_));
}
}
void ErrorCapacitor::receive(
const ErrorMultiplexer::ErrorType type,
const std::string& message
) {
if ( type == ErrorMultiplexer::ErrorType::Error ) {
this->error_cache_->emplace_back(message);
}
}
ErrorCapacitor::exception::exception(error_cache_ptr ptr):
error_cache_(std::move(ptr)) { }
auto ErrorCapacitor::exception::getCachedErrors() const -> const error_cache* {
return this->error_cache_.get();
}
}
|