aboutsummaryrefslogtreecommitdiffstats
path: root/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
diff options
context:
space:
mode:
authorstuconnolly <stuart02@gmail.com>2009-07-23 17:54:50 +0000
committerstuconnolly <stuart02@gmail.com>2009-07-23 17:54:50 +0000
commitcdb3bc05f56e2a7a89581f3ed42e5147323c014f (patch)
treead124aadf415b2a78ebce87bc72435e4fb9bab5e /Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
parentaaf452b0385bf4cd37b939a0dfc1375e191380f5 (diff)
downloadsequelpro-cdb3bc05f56e2a7a89581f3ed42e5147323c014f.tar.gz
sequelpro-cdb3bc05f56e2a7a89581f3ed42e5147323c014f.tar.bz2
sequelpro-cdb3bc05f56e2a7a89581f3ed42e5147323c014f.zip
To fix query logging not working, initialize delegateQueryLogging to YES upon connection initialization as well as setting the value based on the user's preferences during initiateMySQLConnection in SPConnectionController. Also, initialize delegateResponseToWillQueryString when the connection's delegate is set and revert back to simply calling the delegate method willQueryString:connection: as opposed to using the selector cache as its currently not working. Might need to look into restoring this if we incur a big performance hit after this revision.
Diffstat (limited to 'Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m')
-rw-r--r--Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m35
1 files changed, 31 insertions, 4 deletions
diff --git a/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m b/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
index e3d26aeb..7429e23a 100644
--- a/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
+++ b/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
@@ -58,7 +58,6 @@ static BOOL sTruncateLongFieldInLogs = YES;
@implementation MCPConnection
// Synthesize ivars
-@synthesize delegate;
@synthesize useKeepAlive;
@synthesize delegateQueryLogging;
@synthesize connectionTimeout;
@@ -104,7 +103,7 @@ static BOOL sTruncateLongFieldInLogs = YES;
// Initialize ivar defaults
connectionTimeout = 10;
useKeepAlive = YES;
- keepAliveInterval = 60;
+ keepAliveInterval = 60;
connectionThreadId = 0;
maxAllowedPacketSize = -1;
@@ -112,6 +111,9 @@ static BOOL sTruncateLongFieldInLogs = YES;
lastQueryErrorId = 0;
lastQueryErrorMessage = nil;
lastQueryAffectedRows = 0;
+
+ // Enable delegate query logging by default
+ delegateQueryLogging = YES;
// Default to allowing queries to be reattempted if they fail due to connection issues
retryAllowed = YES;
@@ -172,6 +174,29 @@ static BOOL sTruncateLongFieldInLogs = YES;
}
#pragma mark -
+#pragma mark Delegate
+
+/**
+ * Get the connection's current delegate.
+ */
+- (id)delegate
+{
+ return delegate;
+}
+
+/**
+ * Set the connection's delegate to the supplied object.
+ */
+- (void)setDelegate:(id)connectionDelegate
+{
+ delegate = connectionDelegate;
+
+ // Check that the delegate implements willQueryString:connection: and cache the result as its used
+ // vert frequently.
+ delegateResponseToWillQueryString = [delegate respondsToSelector:@selector(willQueryString:connection:)];
+}
+
+#pragma mark -
#pragma mark Connection details
/**
@@ -1244,8 +1269,10 @@ static void forcePingTimeout(int signalNumber)
(void)(*stopKeepAliveTimerPtr)(self, stopKeepAliveTimerSEL);
// Inform the delegate about the query if logging is enabled and delegate responds to willQueryString:connection:
- if (delegateQueryLogging && delegateResponseToWillQueryString)
- (void)(NSString*)(*willQueryStringPtr)(delegate, willQueryStringSEL, query);
+ if (delegateQueryLogging && delegateResponseToWillQueryString) {
+ [delegate willQueryString:query connection:self];
+ }
+
// If thirty seconds have elapsed since the last query, check the connection. This provides
// a balance between keeping high read/write timeouts for long queries, network issues, and