I need a very simple server that accepts request for data, gets data from an open-source storage engine, and submits the result to an URL.
The server is for providing historical stock prices. The actual prices will be provided by the storage engine - Fidal.
The request for the server will contain stock names and date ranges.
For that stock and date range, the server will get the price data from Fidal library ([url removed, login to view]), and POST the data to a specified URL.
1. Server accepts request
Server has to run on linux (CentOS) and use the Boost Library for the server.
The server will receive stock tickers and date ranges in this format:
SYMBOL|START YYYYMMDDHHMMSS|END YYYYMMDDHHMMSS;MSFT|20080801|20080911;[[url removed, login to view]]
(notice separation by ; and url in the end)
Once the server receives the data (catches a line break) it should automatically disconnect. This should make it faster.
The server also has to have some basic load balancing / queue feature so that if that it manages the amount of simultaneous requests to Fidal.
Server should be started with a command such as:
./pricedataserver -port -maxrequests_to_fidal
2. Retrieve data
Server uses Fidal for to get data for each stock symbol for the given date ranges.
Fidal has to be configured to cache same data so same data is returned quickly.
The data should be reformatted to this format:
Symbol Date Open High Low Close Volume Adj Close
DIG 9-Jan-09 [url removed, login to view] [url removed, login to view] [url removed, login to view] [url removed, login to view] 18,652,400 [url removed, login to view]
3. Submits results
There is an URL provided to in the end of the data request (inside [...])
Reults need to be HTTP_POSTed to that url.
The data needs to be compressed using bzip2.
As you can see, this is not a sophisticated server. The main thing is to get it to work well with Fidal library.
I will need installation instructions for linux/boost and compilation instructions with C++ sources.
I can provide a VPS with root/shell access for development and testing. The development should not take longer than one week.