|  | @@ -40,10 +40,15 @@ import ctypes
 | 
	
		
			
				|  |  |  import os
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -NEW_REQUEST = 0
 | 
	
		
			
				|  |  | -HTTP_ERROR = 1
 | 
	
		
			
				|  |  | -EVENT_LOG = 2
 | 
	
		
			
				|  |  | -INIT_SSL = 3
 | 
	
		
			
				|  |  | +NEW_REQUEST       = 0
 | 
	
		
			
				|  |  | +REQUEST_COMPLETE  = 1
 | 
	
		
			
				|  |  | +HTTP_ERROR        = 2
 | 
	
		
			
				|  |  | +EVENT_LOG         = 3
 | 
	
		
			
				|  |  | +INIT_SSL          = 4
 | 
	
		
			
				|  |  | +WEBSOCKET_CONNECT = 5
 | 
	
		
			
				|  |  | +WEBSOCKET_READY   = 6
 | 
	
		
			
				|  |  | +WEBSOCKET_MESSAGE = 7
 | 
	
		
			
				|  |  | +WEBSOCKET_CLOSE   = 8
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class mg_header(ctypes.Structure):
 | 
	
	
		
			
				|  | @@ -57,16 +62,13 @@ class mg_header(ctypes.Structure):
 | 
	
		
			
				|  |  |  class mg_request_info(ctypes.Structure):
 | 
	
		
			
				|  |  |    """A wrapper for struct mg_request_info."""
 | 
	
		
			
				|  |  |    _fields_ = [
 | 
	
		
			
				|  |  | -    ('user_data', ctypes.c_char_p),
 | 
	
		
			
				|  |  |      ('request_method', ctypes.c_char_p),
 | 
	
		
			
				|  |  |      ('uri', ctypes.c_char_p),
 | 
	
		
			
				|  |  |      ('http_version', ctypes.c_char_p),
 | 
	
		
			
				|  |  |      ('query_string', ctypes.c_char_p),
 | 
	
		
			
				|  |  |      ('remote_user', ctypes.c_char_p),
 | 
	
		
			
				|  |  | -    ('log_message', ctypes.c_char_p),
 | 
	
		
			
				|  |  |      ('remote_ip', ctypes.c_long),
 | 
	
		
			
				|  |  |      ('remote_port', ctypes.c_int),
 | 
	
		
			
				|  |  | -    ('status_code', ctypes.c_int),
 | 
	
		
			
				|  |  |      ('is_ssl', ctypes.c_int),
 | 
	
		
			
				|  |  |      ('num_headers', ctypes.c_int),
 | 
	
		
			
				|  |  |      ('http_headers', mg_header * 64),
 | 
	
	
		
			
				|  | @@ -84,6 +86,10 @@ class Connection(object):
 | 
	
		
			
				|  |  |      self.m = mongoose
 | 
	
		
			
				|  |  |      self.conn = ctypes.c_void_p(connection)
 | 
	
		
			
				|  |  |      self.info = self.m.dll.mg_get_request_info(self.conn).contents
 | 
	
		
			
				|  |  | +    self.user_data = self.m.dll.mg_get_user_data(self.conn)
 | 
	
		
			
				|  |  | +    self.log_message = self.m.dll.mg_get_log_message(self.conn)
 | 
	
		
			
				|  |  | +    self.reply_status_code = self.m.dll.mg_get_reply_status_code(self.conn)
 | 
	
		
			
				|  |  | +    self.ssl_context = self.m.dll.mg_get_ssl_context(self.conn)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def get_header(self, name):
 | 
	
		
			
				|  |  |      val = self.m.dll.mg_get_header(self.conn, name)
 | 
	
	
		
			
				|  | @@ -131,6 +137,10 @@ class Mongoose(object):
 | 
	
		
			
				|  |  |      self.dll.mg_get_cookie.restype = ctypes.c_int
 | 
	
		
			
				|  |  |      self.dll.mg_get_option.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  |      self.dll.mg_get_request_info.restype = ctypes.POINTER(mg_request_info)
 | 
	
		
			
				|  |  | +    self.dll.mg_get_user_data.restype = ctypes.c_void_p
 | 
	
		
			
				|  |  | +    self.dll.mg_get_reply_status_code.restype = ctypes.c_int
 | 
	
		
			
				|  |  | +    self.dll.mg_get_log_message.restype = ctypes.c_char_p
 | 
	
		
			
				|  |  | +    self.dll.mg_get_ssl_context.restype = ctypes.c_void_p
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if callback:
 | 
	
		
			
				|  |  |        # Create a closure that will be called by the  shared library.
 |