fix `./v -cc g++ run examples/concurrency/concurrency_http.v`
							parent
							
								
									bf0b86774a
								
							
						
					
					
						commit
						6b40ead54d
					
				| 
						 | 
					@ -23,6 +23,7 @@ module openssl
 | 
				
			||||||
#include <openssl/ssl.h>
 | 
					#include <openssl/ssl.h>
 | 
				
			||||||
#include <openssl/err.h>
 | 
					#include <openssl/err.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[typedef]
 | 
				
			||||||
pub struct C.SSL {
 | 
					pub struct C.SSL {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,6 +48,49 @@ pub fn (mut c TcpConn) close() ? {
 | 
				
			||||||
	c.sock.close() ?
 | 
						c.sock.close() ?
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn (mut c TcpConn) read_ptr(buf_ptr &byte, len int) ?int {
 | 
				
			||||||
 | 
						mut res := wrap_read_result(C.recv(c.sock.handle, voidptr(buf_ptr), len, 0)) ?
 | 
				
			||||||
 | 
						$if trace_tcp ? {
 | 
				
			||||||
 | 
							eprintln('<<< TcpConn.read_ptr  | c.sock.handle: $c.sock.handle | buf_ptr: ${ptr_str(buf_ptr)} len: $len | res: $res')
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if res > 0 {
 | 
				
			||||||
 | 
							$if trace_tcp_data_read ? {
 | 
				
			||||||
 | 
								eprintln('<<< TcpConn.read_ptr  | 1 data.len: ${res:6} | data: ' +
 | 
				
			||||||
 | 
									unsafe { buf_ptr.vstring_with_len(res) })
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return res
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						code := error_code()
 | 
				
			||||||
 | 
						if code == int(error_ewouldblock) {
 | 
				
			||||||
 | 
							c.wait_for_read() ?
 | 
				
			||||||
 | 
							res = wrap_read_result(C.recv(c.sock.handle, voidptr(buf_ptr), len, 0)) ?
 | 
				
			||||||
 | 
							$if trace_tcp ? {
 | 
				
			||||||
 | 
								eprintln('<<< TcpConn.read_ptr  | c.sock.handle: $c.sock.handle | buf_ptr: ${ptr_str(buf_ptr)} len: $len | res: $res')
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							$if trace_tcp_data_read ? {
 | 
				
			||||||
 | 
								if res > 0 {
 | 
				
			||||||
 | 
									eprintln('<<< TcpConn.read_ptr  | 2 data.len: ${res:6} | data: ' +
 | 
				
			||||||
 | 
										unsafe { buf_ptr.vstring_with_len(res) })
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return socket_error(res)
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							wrap_error(code) ?
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return none
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn (mut c TcpConn) read(mut buf []byte) ?int {
 | 
				
			||||||
 | 
						return c.read_ptr(buf.data, buf.len)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn (mut c TcpConn) read_deadline() ?time.Time {
 | 
				
			||||||
 | 
						if c.read_deadline.unix == 0 {
 | 
				
			||||||
 | 
							return c.read_deadline
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return none
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// write_ptr blocks and attempts to write all data
 | 
					// write_ptr blocks and attempts to write all data
 | 
				
			||||||
pub fn (mut c TcpConn) write_ptr(b &byte, len int) ?int {
 | 
					pub fn (mut c TcpConn) write_ptr(b &byte, len int) ?int {
 | 
				
			||||||
	$if trace_tcp ? {
 | 
						$if trace_tcp ? {
 | 
				
			||||||
| 
						 | 
					@ -94,49 +137,6 @@ pub fn (mut c TcpConn) write_string(s string) ?int {
 | 
				
			||||||
	return c.write_ptr(s.str, s.len)
 | 
						return c.write_ptr(s.str, s.len)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn (mut c TcpConn) read_ptr(buf_ptr &byte, len int) ?int {
 | 
					 | 
				
			||||||
	mut res := wrap_read_result(C.recv(c.sock.handle, voidptr(buf_ptr), len, 0)) ?
 | 
					 | 
				
			||||||
	$if trace_tcp ? {
 | 
					 | 
				
			||||||
		eprintln('<<< TcpConn.read_ptr  | c.sock.handle: $c.sock.handle | buf_ptr: ${ptr_str(buf_ptr)} len: $len | res: $res')
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if res > 0 {
 | 
					 | 
				
			||||||
		$if trace_tcp_data_read ? {
 | 
					 | 
				
			||||||
			eprintln('<<< TcpConn.read_ptr  | 1 data.len: ${res:6} | data: ' +
 | 
					 | 
				
			||||||
				unsafe { buf_ptr.vstring_with_len(res) })
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return res
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	code := error_code()
 | 
					 | 
				
			||||||
	if code == int(error_ewouldblock) {
 | 
					 | 
				
			||||||
		c.wait_for_read() ?
 | 
					 | 
				
			||||||
		res = wrap_read_result(C.recv(c.sock.handle, voidptr(buf_ptr), len, 0)) ?
 | 
					 | 
				
			||||||
		$if trace_tcp ? {
 | 
					 | 
				
			||||||
			eprintln('<<< TcpConn.read_ptr  | c.sock.handle: $c.sock.handle | buf_ptr: ${ptr_str(buf_ptr)} len: $len | res: $res')
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$if trace_tcp_data_read ? {
 | 
					 | 
				
			||||||
			if res > 0 {
 | 
					 | 
				
			||||||
				eprintln('<<< TcpConn.read_ptr  | 2 data.len: ${res:6} | data: ' +
 | 
					 | 
				
			||||||
					unsafe { buf_ptr.vstring_with_len(res) })
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return socket_error(res)
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		wrap_error(code) ?
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return none
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pub fn (mut c TcpConn) read(mut buf []byte) ?int {
 | 
					 | 
				
			||||||
	return c.read_ptr(buf.data, buf.len)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pub fn (mut c TcpConn) read_deadline() ?time.Time {
 | 
					 | 
				
			||||||
	if c.read_deadline.unix == 0 {
 | 
					 | 
				
			||||||
		return c.read_deadline
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return none
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pub fn (mut c TcpConn) set_read_deadline(deadline time.Time) {
 | 
					pub fn (mut c TcpConn) set_read_deadline(deadline time.Time) {
 | 
				
			||||||
	c.read_deadline = deadline
 | 
						c.read_deadline = deadline
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue