aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/provider/MCOAccountValidator.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/objc/provider/MCOAccountValidator.mm')
-rw-r--r--src/objc/provider/MCOAccountValidator.mm47
1 files changed, 43 insertions, 4 deletions
diff --git a/src/objc/provider/MCOAccountValidator.mm b/src/objc/provider/MCOAccountValidator.mm
index 0aa9a393..ab240bf5 100644
--- a/src/objc/provider/MCOAccountValidator.mm
+++ b/src/objc/provider/MCOAccountValidator.mm
@@ -20,10 +20,11 @@ typedef void (^CompletionType)(void);
@interface MCOAccountValidator ()
- (void) _operationCompleted;
+- (void) _logWithSender:(void *)sender connectionType:(MCOConnectionLogType)logType data:(NSData *)data;
@end
-class MCOValidatorOperationCallback: public mailcore::Object, public mailcore::OperationCallback {
+class MCOValidatorOperationCallback: public mailcore::Object, public mailcore::OperationCallback, public mailcore::ConnectionLogger {
public:
MCOValidatorOperationCallback(MCOAccountValidator * op)
{
@@ -35,6 +36,11 @@ public:
[mOperation _operationCompleted];
}
+ virtual void log(void * sender, mailcore::ConnectionLogType logType, mailcore::Data * data)
+ {
+ [mOperation _logWithSender:sender connectionType:(MCOConnectionLogType)logType data:MCO_TO_OBJC(data)];
+ }
+
private:
MCOAccountValidator * mOperation;
};
@@ -42,7 +48,8 @@ private:
@implementation MCOAccountValidator{
CompletionType _completionBlock;
mailcore::AccountValidator * _validator;
- MCOValidatorOperationCallback * _imapCallback;
+ MCOValidatorOperationCallback * _callback;
+ MCOConnectionLogger _connectionLogger;
}
#define nativeType mailcore::AccountValidator
@@ -84,13 +91,22 @@ MCO_OBJC_SYNTHESIZE_BOOL(setSmtpEnabled, isSmtpEnabled)
self = [super initWithMCOperation:validator];
_validator = validator;
- _imapCallback = new MCOValidatorOperationCallback(self);
- _validator->setCallback(_imapCallback);
+ _callback = new MCOValidatorOperationCallback(self);
+ _validator->setCallback(_callback);
_validator->retain();
return self;
}
+- (void) dealloc
+{
+ [_completionBlock release];
+ MC_SAFE_RELEASE(_validator);
+ MC_SAFE_RELEASE(_callback);
+ [_connectionLogger release];
+ [super dealloc];
+}
+
- (void) start:(void (^)(void))completionBlock
{
_completionBlock = [completionBlock copy];
@@ -150,4 +166,27 @@ MCO_OBJC_SYNTHESIZE_BOOL(setSmtpEnabled, isSmtpEnabled)
return [NSError mco_errorWithErrorCode:_validator->smtpError()];
}
+- (void) setConnectionLogger:(MCOConnectionLogger)connectionLogger
+{
+ [_connectionLogger release];
+ _connectionLogger = [connectionLogger copy];
+
+ if (_connectionLogger != nil) {
+ _validator->setConnectionLogger(_callback);
+ }
+ else {
+ _validator->setConnectionLogger(NULL);
+ }
+}
+
+- (MCOConnectionLogger) connectionLogger
+{
+ return _connectionLogger;
+}
+
+- (void) _logWithSender:(void *)sender connectionType:(MCOConnectionLogType)logType data:(NSData *)data
+{
+ _connectionLogger(sender, logType, data);
+}
+
@end