Quick Update in Valum
I couldn’t touch the framework much these last days due to my busy schedule, so I just wanted to write a few words.
I like the approach used by Express.js to branch in the routing by providing a forward callback and call it if some conditions are met.
It is used for content negociation and works quite nicely.
app.get ("", accept ("text/html", (req, res, next) => {
// user agent understands 'text/html'
// well, finally, it's not available
next (req, res);
}));
app.get ("", (req, res) => {
// user agent wants something else
});
Other negociator are provided for the charset, encoding and much more. All the wildcards defined in the HTTP/1.1 specification are understood.
The code for static resource delivery is almost ready. I am finishing some tests and it should be merged.
It supports the production of the following headers (with flags):
ETag
Last-Modified
Cache-Control: public
And can deliver resources from a GResource bundle or a GFile path path. This also means that any GVFS backends are supported.
If the resource is not found, next
is invoked to dispatch the request to the
next handler.
One last thing is GSequence, which store a sorted sequence in
a binary tree. I think that if we can sort Route
objects in some way, this
could provide a really effective routing in logarithmic time.
Or using a Trie