]> err.no Git - sope/blobdiff - Recycler/mod_objc/ApacheConnection.m
added mod_objc
[sope] / Recycler / mod_objc / ApacheConnection.m
diff --git a/Recycler/mod_objc/ApacheConnection.m b/Recycler/mod_objc/ApacheConnection.m
new file mode 100644 (file)
index 0000000..b7b102b
--- /dev/null
@@ -0,0 +1,110 @@
+// $Id: ApacheConnection.m,v 1.1 2004/06/08 11:15:59 helge Exp $
+
+#include "ApacheConnection.h"
+#import <Foundation/NSString.h>
+#include "httpd.h"
+
+@implementation ApacheConnection
+#define AP_HANDLE ((conn_rec *)self->handle)
+
+/* accessors */
+
+- (ApacheResourcePool *)connectionPool {
+  return [ApacheResourcePool objectWithHandle:AP_HANDLE->pool];
+}
+- (ApacheServer *)server {
+  return [ApacheServer objectWithHandle:AP_HANDLE->server];
+}
+- (ApacheServer *)baseServer {
+  return [ApacheServer objectWithHandle:AP_HANDLE->base_server];
+}
+
+/* Information about the connection itself */
+
+- (int)childNumber {
+  return AP_HANDLE->child_num;
+}
+
+/* Who is the client? */
+
+// struct sockaddr_in local_addr;
+// struct sockaddr_in remote_addr;
+- (NSString *)remoteIP {
+  return [NSString stringWithCString:AP_HANDLE->remote_ip];
+}
+- (NSString *)remoteHost {
+  return [NSString stringWithCString:AP_HANDLE->remote_host];
+}
+- (NSString *)remoteLogName {
+  return [NSString stringWithCString:AP_HANDLE->remote_logname];
+}
+- (NSString *)user {
+  return [NSString stringWithCString:AP_HANDLE->user];
+}
+- (NSString *)authorizationType {
+  return [NSString stringWithCString:AP_HANDLE->ap_auth_type];
+}
+
+- (NSString *)localIP {
+  return [NSString stringWithCString:AP_HANDLE->local_ip];
+}
+- (NSString *)localHost {
+  return [NSString stringWithCString:AP_HANDLE->local_host];
+}
+
+- (BOOL)isAborted {
+  return AP_HANDLE->aborted ? YES : NO;
+}
+- (BOOL)usesKeepAlive {
+  return AP_HANDLE->keepalive == 1 ? YES : NO;
+}
+- (BOOL)doesNotUseKeepAlive {
+  return AP_HANDLE->keepalive == -1 ? YES : NO;
+}
+- (BOOL)didUseKeepAlive {
+  return AP_HANDLE->keptalive ? YES : NO;
+}
+
+- (int)numberOfKeepAlives {
+  return AP_HANDLE->keepalives;
+}
+
+- (BOOL)isValidDoubleReverseDNS {
+  return AP_HANDLE->double_reverse == 1 ? YES : NO;
+}
+- (BOOL)isInvalidDoubleReverseDNS {
+  return AP_HANDLE->double_reverse == -1 ? YES : NO;
+}
+
+#undef AP_HANDLE
+
+
+- (NSString *)description {
+  NSMutableString *ms;
+  id tmp;
+  
+  ms = [NSMutableString stringWithCapacity:128];
+  [ms appendFormat:@"<0x%08X[%@]:", self, NSStringFromClass([self class])];
+  [ms appendFormat:@" 0x%08X", self->handle];
+
+  if ([self isAborted])       [ms appendString:@" aborted"];
+  if ([self usesKeepAlive])   [ms appendString:@" keepalive"];
+  if ([self didUseKeepAlive]) [ms appendString:@" did-keepalive"];
+
+  if ([self numberOfKeepAlives] > 0)
+    [ms appendFormat:@" #keepalives=%i", [self numberOfKeepAlives]];
+  
+  tmp = [self remoteIP];
+  if ([tmp length] > 0) [ms appendFormat:@" remoteIP=%@", tmp];
+  
+  tmp = [self user];
+  if ([tmp length] > 0) [ms appendFormat:@" user=%@", tmp];
+
+  tmp = [self authorizationType];
+  if ([tmp length] > 0) [ms appendFormat:@" auth=%@", tmp];
+  
+  [ms appendString:@">"];
+  return ms;
+}
+
+@end /* ApacheConnection */