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:
@@ -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 {
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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')
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user