Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,39 @@
|
||||
// vtest build: !solaris
|
||||
module main
|
||||
|
||||
import net
|
||||
import picoev
|
||||
|
||||
const port = 8080
|
||||
|
||||
const http_response = 'HTTP/1.1 200 OK\r\nContent-type: text/html\r\nContent-length: 18\r\n\r\nHello from Picoev!'
|
||||
|
||||
fn main() {
|
||||
println('Starting webserver on http://localhost:${port}/ ...')
|
||||
mut pico := picoev.new(
|
||||
port: port
|
||||
raw_cb: handle_conn
|
||||
)!
|
||||
pico.serve()
|
||||
}
|
||||
|
||||
fn handle_conn(mut pv picoev.Picoev, fd int, _events int) {
|
||||
// setup a nonblocking tcp connection
|
||||
mut conn := &net.TcpConn{
|
||||
sock: net.tcp_socket_from_handle_raw(fd)
|
||||
handle: fd
|
||||
is_blocking: false
|
||||
}
|
||||
|
||||
mut buf := []u8{len: 4096}
|
||||
// read data from the tcp connection
|
||||
conn.read(mut buf) or { eprintln('could not read data from socket') }
|
||||
|
||||
println('received data:')
|
||||
println(buf.bytestr())
|
||||
|
||||
conn.write(http_response.bytes()) or { eprintln('could not write response') }
|
||||
|
||||
// remove the socket from picoev's event loop and close the connection
|
||||
pv.close_conn(fd)
|
||||
}
|
||||
Reference in new issue
Block a user