H
On Thu, 16 Nov 2017 14:24:27 GMT, John Smith wrote:
H
The message appears to have gotten lost, so I'll just summarize the intended status quo. Array types should be settable in sessions like normal values (both with Session.set
and SessionVar!T
).
However, they actually behave as value types, so adding or removing elements requires setting the whole array again (e.g. session.set("some_array", session.get!(int[])("some_array") ~ 1);
). So if the array has a non-trivial size, it should be stored manually in a database or key/value store using the session ID as the lookup key.
OK. I trying with below example but I have got error.
import vibe.vibe;
void main()
{
auto settings = new HTTPServerSettings;
settings.port = 8080;
settings.bindAddresses = ["::1", "127.0.0.1"];
settings.sessionStore = new MemorySessionStore;
listenHTTP(settings, &hello);
logInfo("Please open http://127.0.0.1:8080/ in your browser.");
runApplication();
}
void hello(HTTPServerRequest req, HTTPServerResponse res)
{
int[] arr = [1, 2, 3, 4];
auto session = res.startSession();
session.set("array", arr);
res.writeBody("Hello, World!");
}
vibe-session ~master: building configuration "application"...
/home/astar/.dub/packages/vibe-d-0.8.2-rc.1/vibe-d/http/vibe/http/session.d(92,3): Error: static assert "Type int[] contains references, which is not supported for session storage."
source/app.d(21,13): instantiated from here: set!(int[])
dmd failed with exit code 1.