1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

vlib/net: add buffered IO, x.net -> net (#6754)

This commit is contained in:
Emily Hudson
2020-11-15 20:54:47 +00:00
committed by GitHub
parent 20bec81678
commit cd2a2cef25
55 changed files with 741 additions and 1648 deletions

View File

@@ -118,7 +118,7 @@ fn main() {
exit(0)
}
context.files = real_files
if !context.write_file.ends_with('.v') {
if context.write_file != '' && !context.write_file.ends_with('.v') {
context.write_file += '.v'
}
mut file_byte_map := map[string][]byte{}
@@ -134,11 +134,11 @@ fn main() {
mut out_file := os.create(context.write_file) or {
panic(err)
}
out_file.write(context.header())
out_file.write_str(context.header())
for bname, fbytes in file_byte_map {
out_file.write(context.file2v(bname, fbytes, max_bname))
out_file.write_str(context.file2v(bname, fbytes, max_bname))
}
out_file.write(context.footer())
out_file.write_str(context.footer())
} else {
println(context.header())
for bname, fbytes in file_byte_map {

View File

@@ -58,7 +58,7 @@ fn (c &Create) write_vmod(new bool) {
cerror(err)
exit(1)
}
vmod.write(vmod_content(c.name, c.description))
vmod.write_str(vmod_content(c.name, c.description))
vmod.close()
}
@@ -71,7 +71,7 @@ fn (c &Create) write_main(new bool) {
cerror(err)
exit(2)
}
main.write(main_content())
main.write_str(main_content())
main.close()
}
@@ -87,7 +87,7 @@ fn (c &Create) create_git_repo(dir string) {
// We don't really need a .gitignore, it's just a nice-to-have
return
}
fl.write(gen_gitignore(c.name))
fl.write_str(gen_gitignore(c.name))
fl.close()
}
}

View File

@@ -16,6 +16,7 @@ import v.token
import v.vmod
import v.pref
import json
import io
enum HighlightTokenTyp {
unone
@@ -154,7 +155,7 @@ fn (mut cfg DocConfig) serve_html() {
}
def_name := docs.keys()[0]
server_url := 'http://localhost:' + cfg.server_port.str()
server := net.listen(cfg.server_port) or {
server := net.listen_tcp(cfg.server_port) or {
panic(err)
}
println('Serving docs on: $server_url')
@@ -173,12 +174,12 @@ fn (mut cfg DocConfig) serve_html() {
default_filename: def_name
}
for {
mut con := server.accept() or {
mut conn := server.accept() or {
server.close() or { }
panic(err)
}
handle_http_connection(mut con, server_context)
con.close() or {
handle_http_connection(mut conn, server_context)
conn.close() or {
eprintln('error closing the connection: $err')
}
}
@@ -190,10 +191,9 @@ struct VdocHttpServerContext {
default_filename string
}
fn handle_http_connection(mut con net.Socket, ctx &VdocHttpServerContext) {
s := con.read_line()
first_line := s.all_before('\r\n')
if first_line.len == 0 {
fn handle_http_connection(mut con net.TcpConn, ctx &VdocHttpServerContext) {
mut reader := io.new_buffered_reader(reader: io.make_reader(con))
first_line := reader.read_line() or {
send_http_response(mut con, 501, ctx.content_type, 'bad request')
return
}
@@ -211,7 +211,7 @@ fn handle_http_connection(mut con net.Socket, ctx &VdocHttpServerContext) {
send_http_response(mut con, 200, ctx.content_type, ctx.docs[filename])
}
fn send_http_response(mut con net.Socket, http_code int, content_type string, html string) {
fn send_http_response(mut con net.TcpConn, http_code int, content_type string, html string) {
content_length := html.len.str()
shttp_code := http_code.str()
mut http_response := strings.new_builder(20000)
@@ -229,7 +229,7 @@ fn send_http_response(mut con net.Socket, http_code int, content_type string, ht
http_response.write('\r\n')
http_response.write(html)
sresponse := http_response.str()
con.send_string(sresponse) or {
con.write_str(sresponse) or {
eprintln('error sending http response: $err')
}
}