🐛 Fixed memleak
This commit is contained in:
parent
23a0c77d56
commit
b9cda51c0f
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
tmp/
|
||||
|
||||
*.exe
|
@ -5,9 +5,9 @@ export default function () {
|
||||
for (let i = 0; i < 250; i++) {
|
||||
var rand = Math.random()
|
||||
if (rand > 0.5) {
|
||||
http.get(`http://127.0.0.1:8080/get/${random_string(1)}`);
|
||||
http.get(`http://127.0.0.1:8082/get/${random_string(1)}`);
|
||||
} else {
|
||||
http.post(`http://127.0.0.1:8080/set/${random_string(1)}`, random_string(5));
|
||||
http.post(`http://127.0.0.1:8082/set/${random_string(1)}`, random_string(5));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -1,5 +0,0 @@
|
||||
import http from "k6/http";
|
||||
|
||||
export default function () {
|
||||
http.get(`http://localhost:8082/`);
|
||||
};
|
@ -1,41 +0,0 @@
|
||||
module main
|
||||
|
||||
import vweb
|
||||
|
||||
const (
|
||||
port = 8082
|
||||
)
|
||||
|
||||
struct App {
|
||||
vweb.Context
|
||||
mut:
|
||||
state shared State
|
||||
}
|
||||
|
||||
struct State {
|
||||
mut:
|
||||
kv_store map[string]string = {}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
mut app := &App{}
|
||||
println('stupid kvstore')
|
||||
vweb.run(app, port)
|
||||
}
|
||||
|
||||
['/get/:key']
|
||||
pub fn (mut app App) kv_get(key string) vweb.Result {
|
||||
lock app.state {
|
||||
res := app.state.kv_store[key] or { return app.not_found() }
|
||||
return app.ok(res)
|
||||
}
|
||||
return app.not_found()
|
||||
}
|
||||
|
||||
['/set/:key'; post]
|
||||
fn (mut app App) kv_set(key string) vweb.Result {
|
||||
lock app.state {
|
||||
app.state.kv_store[key] = app.req.data
|
||||
}
|
||||
return app.text('OK')
|
||||
}
|
31
stupid-kv.v
31
stupid-kv.v
@ -1,10 +1,9 @@
|
||||
module main
|
||||
|
||||
import vweb
|
||||
import json
|
||||
|
||||
const (
|
||||
port = 8080
|
||||
port = 8082
|
||||
)
|
||||
|
||||
struct App {
|
||||
@ -15,45 +14,31 @@ mut:
|
||||
|
||||
struct State {
|
||||
mut:
|
||||
kv_store string
|
||||
kv_store map[string]string = {}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
mut app := &App{}
|
||||
println('stupid kvstore')
|
||||
lock app.state {
|
||||
app.state.kv_store = '{}'
|
||||
app.state.kv_store = {}
|
||||
}
|
||||
//vweb.run(app, port)
|
||||
vweb.run_at(app, family: .ip, host: 'localhost', port: port) ?
|
||||
vweb.run_at(app, family: .ip, host: 'localhost', port: port)?
|
||||
}
|
||||
|
||||
['/get/:key']
|
||||
pub fn (mut app App) kv_get(key string) vweb.Result {
|
||||
lock app.state {
|
||||
// data := json.decode(map[string]string, app.state.kv_store) or {
|
||||
// return app.server_error(500)
|
||||
// }
|
||||
// if key in data {
|
||||
// r := data[key]
|
||||
// return app.ok(r)
|
||||
// } else {
|
||||
// return app.not_found()
|
||||
// }
|
||||
|
||||
return app.ok(app.state.kv_store)
|
||||
res := app.state.kv_store[key] or { return app.not_found() }
|
||||
return app.ok(res)
|
||||
}
|
||||
return app.server_error(500)
|
||||
return app.not_found()
|
||||
}
|
||||
|
||||
['/set/:key'; post]
|
||||
fn (mut app App) kv_set(key string) vweb.Result {
|
||||
lock app.state {
|
||||
// mut data := json.decode(map[string]string, app.state.kv_store) or {
|
||||
// return app.server_error(500)
|
||||
// }
|
||||
// data[key] = app.req.data
|
||||
app.state.kv_store = app.req.data//json.encode(data)
|
||||
app.state.kv_store[key] = app.req.data
|
||||
}
|
||||
return app.text('OK')
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
module main
|
||||
|
||||
import vweb
|
||||
|
||||
struct App {
|
||||
vweb.Context
|
||||
}
|
||||
|
||||
|
||||
fn main() {
|
||||
mut app := &App{}
|
||||
vweb.run_at(app, family: .ip, host: 'localhost', port: 8082) ?
|
||||
}
|
||||
|
||||
pub fn (mut app App) index() vweb.Result {
|
||||
return app.text('World')
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user