Browse code
logger uses delegation
Greg Wiley authored on 18/04/2017 22:57:28
Showing 5 changed files
Showing 5 changed files
... | ... |
@@ -31,7 +31,7 @@ int impl::authenticate(pam_handle *handle, int flags, const std::vector<const st |
31 | 31 |
|
32 | 32 |
int auth_result = validator_->validate(user_name, token) ? PAM_SUCCESS : PAM_AUTH_ERR; |
33 | 33 |
|
34 |
- logger_->log(auth_result, user_name, token); |
|
34 |
+ logger_.log(auth_result, user_name, token); |
|
35 | 35 |
return auth_result; |
36 | 36 |
} |
37 | 37 |
|
... | ... |
@@ -22,10 +22,6 @@ struct dual_control_configuration { |
22 | 22 |
validator validator; |
23 | 23 |
conversations conversations; |
24 | 24 |
logger logger; |
25 |
- dual_control_configuration() |
|
26 |
- : validator(new validator_ifc), |
|
27 |
- conversations(new conversations_ifc), |
|
28 |
- logger(new logger_ifc) {} |
|
29 | 25 |
}; |
30 | 26 |
dual_control create_dual_control(const dual_control_configuration &configuration); |
31 | 27 |
|
... | ... |
@@ -132,7 +132,7 @@ int logs_authentication() { |
132 | 132 |
configuration.validator = validator(new fake_validator(user, token)); |
133 | 133 |
configuration.conversations = conversations(new fake_conversations(user, token)); |
134 | 134 |
mock_logger *test_logger = new mock_logger; |
135 |
- configuration.logger = logger(test_logger); |
|
135 |
+ configuration.logger = logger(std::shared_ptr<logger_ifc>(test_logger)); |
|
136 | 136 |
dual_control dc(create_dual_control(configuration)); |
137 | 137 |
pam_handle_t *handle(0); |
138 | 138 |
std::vector<const std::string> arguments; |
... | ... |
@@ -155,7 +155,7 @@ int logs_authentication_failure() { |
155 | 155 |
configuration.validator = validator(new fake_validator(user, "not the received token")); |
156 | 156 |
configuration.conversations = conversations(new fake_conversations(user, token)); |
157 | 157 |
mock_logger *test_logger = new mock_logger; |
158 |
- configuration.logger = logger(test_logger); |
|
158 |
+ configuration.logger = logger(std::shared_ptr<logger_ifc>(test_logger)); |
|
159 | 159 |
dual_control dc(create_dual_control(configuration)); |
160 | 160 |
pam_handle_t *handle(0); |
161 | 161 |
std::vector<const std::string> arguments; |
... | ... |
@@ -9,6 +9,16 @@ class logger_ifc { |
9 | 9 |
virtual ~logger_ifc() {} |
10 | 10 |
virtual void log(int result, const std::string &user_name, const std::string &token) {}; |
11 | 11 |
}; |
12 |
-typedef std::shared_ptr<logger_ifc> logger; |
|
12 |
+ |
|
13 |
+class logger : public logger_ifc { |
|
14 |
+ private: |
|
15 |
+ std::shared_ptr<logger_ifc> delegate_; |
|
16 |
+ public: |
|
17 |
+ logger(const std::shared_ptr<logger_ifc> &delegate) : delegate_(delegate) {} |
|
18 |
+ logger() : logger(std::shared_ptr<logger_ifc>(new logger_ifc)) {} |
|
19 |
+ void log(int result, const std::string &user_name, const std::string &token) { |
|
20 |
+ delegate_->log(result, user_name, token); |
|
21 |
+ } |
|
22 |
+}; |
|
13 | 23 |
|
14 | 24 |
#endif |