| 
					
				 | 
			
			
				@@ -2,76 +2,77 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "MGStreamAdapter.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 mg_buf::mg_buf(struct mg_connection* _conn) : conn(_conn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    setp(buffer, buffer + BUF_SIZE - 1); // -1 to leave space for overflow '\0' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setp(buffer, buffer + BUF_SIZE - 1);  // -1 to leave space for overflow '\0' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 mg_buf::int_type mg_buf::overflow(int_type c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (c != EOF) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        *pptr() = c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pbump(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (c != EOF) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    *pptr() = c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pbump(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (flush_buffer() == EOF) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return EOF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (flush_buffer() == EOF) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return EOF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int mg_buf::flush_buffer() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    int len = int(pptr() - pbase()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (mg_write(conn, buffer, len) != len) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return EOF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pbump(-len); // reset put pointer accordingly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  int len = int(pptr() - pbase()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (mg_write(conn, buffer, len) != len) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return EOF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  pbump(-len);  // reset put pointer accordingly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int mg_buf::sync() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (flush_buffer() == EOF) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return -1;  // return -1 on error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (flush_buffer() == EOF) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return -1;  // return -1 on error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-MGStreamAdapter::MGStreamAdapter(struct mg_connection* _conn) : std::ostream(&buf), buf(_conn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    rdbuf(&buf);  // set the custom streambuf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+MGStreamAdapter::MGStreamAdapter(struct mg_connection* _conn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    : std::ostream(&buf), buf(_conn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  rdbuf(&buf);  // set the custom streambuf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 mg_read_buf::mg_read_buf(struct mg_connection* _conn) : conn(_conn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    setg(buffer + BUF_SIZE,     // beginning of putback area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         buffer + BUF_SIZE,     // read position 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         buffer + BUF_SIZE);    // end position 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setg(buffer + BUF_SIZE,   // beginning of putback area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       buffer + BUF_SIZE,   // read position 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       buffer + BUF_SIZE);  // end position 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 mg_read_buf::int_type mg_read_buf::underflow() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (gptr() < egptr()) { // buffer not exhausted 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return traits_type::to_int_type(*gptr()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (gptr() < egptr()) {  // buffer not exhausted 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return traits_type::to_int_type(*gptr()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    char* base = buffer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    char* start = base; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char* base = buffer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char* start = base; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (eback() == base) { // true when this isn't the first fill 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Make arrangements for putback characters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        std::memmove(base, egptr() - 2, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        start += 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (eback() == base) {  // true when this isn't the first fill 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Make arrangements for putback characters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::memmove(base, egptr() - 2, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    start += 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Read new characters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    int n = mg_read(conn, start, buffer + BUF_SIZE - start); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (n == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return traits_type::eof(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Read new characters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  int n = mg_read(conn, start, buffer + BUF_SIZE - start); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (n == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return traits_type::eof(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Set buffer pointers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    setg(base, start, start + n); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Set buffer pointers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setg(base, start, start + n); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Return next character 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return traits_type::to_int_type(*gptr()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Return next character 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return traits_type::to_int_type(*gptr()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-MGInputStreamAdapter::MGInputStreamAdapter(struct mg_connection* _conn) : std::istream(&buf), buf(_conn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    rdbuf(&buf);  // set the custom streambuf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+MGInputStreamAdapter::MGInputStreamAdapter(struct mg_connection* _conn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    : std::istream(&buf), buf(_conn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  rdbuf(&buf);  // set the custom streambuf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |