<!--toc--> |
|
|
# CppCMS 1.1.0 - Next Release |
|
## Implementing UDP Support for `booster::aio::socket` |
|
Booster.Aio socket supports well stream sockets but |
has very poor (if any) support of data-gram sockets. |
|
You can open them, use them but there is no such operations |
like `sendto` or `recvfrom` that are data-gram oriented. |
|
Add their implementation to Booster in analogy to |
implementations of async/sync read/write operations. |
|
## Implement SSL socket for `booster::aio` |
|
Implementation of SSL socked need for next requirement |
|
## Web Server |
|
### Implement HTTPS support |
|
Embedded web server should support HTTPS to make |
it even more usable for embedded enviroments |
|
### Implement Vistual Hosts support |
### Implement Virtual Hosts support |
|
Required for embedded environments |
|
## Provide Plugin Framework |
|
Allow applications and other tools be loaded dynamically. |
|
## Implement Pre-Upload file validation, Upload file meter support |
|
In CppCMS application is created only once the request |
is fully ready. And after that use can validate |
the uploaded files. |
|
This is quite bad in case of big ones. |
|
Possible solution is store the validation requirements |
in the session and let `cppcms::impl::cgi_api` |
fetch this session data and use rules to validate |
uploaded files. |
|
Problems: |
|
- Session fetch may be not so cheap, it may be done over network or require DB access. |
- Session API allows only synchronous requests. |
- File uploading is done in even loop where all operations |
should be non-blocking. |
|
Possible solutions: |
|
- Store this data in signed cookies. |
- Add asynchronous api to sessions. |
- Send session fetch to thread pool till and get |
session data this way. |
|
## Boost to Booster tasks |
|
- Extract/Reimplement `boost::bind` in Booster. |
- Extract/Reimplement `boost::unordered` in Booster. |
|
Try to get rid of cppcms\_boost? |
|
|
# CppCMS 1.3.0 and later |
|
## Booster.Filesystem |
|
Implement Directory Iterator. |
|
|
## Implement Locale sensitive Date-Time Form Widgets |
|
ICU provides good features for parsing and formatting |
dates and times, implement Date-Time Widget |
for this purpose. |
|
It is not so-straightforward as user should know the |
format he/she enters the data, such information |
is not supplied by any existing widgets. |
|
Think what to do in case of no-icu builds. |
|
## Implement Active Cache invalidation |
|
Distributed Cache system implements L1/L2 cache |
allowing a cache client to check if the data is |
has is still up-to-date without reading it back. |
|
However each access to cache still require TCP-ping-pong. |
|
So instead active cache invalidation may be done: when |
trigger is risen or new data is stored a sort of |
a message that causes all clients to drop invalid |
cache is broad-casted. |
|
Need to be implemented. |
|
## Replace LRU with 2Q scan resistant algorithm |
|
Check possibility of changing this. |
|
|
## Improve Support of RESTful services |
|
Provide friendly API for RESTful applications in similar |
way it is done today for JSON-RPC |
|
## Provide WebSockets support |
|
Implement Web Sockets support and transparetn |
fallback to some long-polling based protocol |
comet |
|
## Degraded Mode of work |
|
Problem: |
|
What happens when one of cache/session servers fails? |
|
Solution: |
|
Provide automatic servers fail-detection procedures and continue to work in degraded mode. |
|
## Implement Connection Forwarding over unix-sockets |
|
CppCMS forwarding framework allows to forward any connection |
to other network node over SCGI API. |
|
Is is very useful to be able to forward connections |
between forked processes of same application. |
|
It can be done in much cheaper between forked processes |
by forwarding a file descriptor over Unix domain socket and |
passing already read information via shared memory. |
|
|
## Add Support of multiple event loops |
|
Today, asynchronous applications do not scale |
well on multiple CPU systems. |
|
Required add support of multiple event loops |
so different asynchronous applications would |
be able to use them. |
|
|