XLL+ Class Library

MtFeed server application

The sample contains a server application (MtFeedServer.exe) which emulates a real-time data feed. The application periodically reads lines of canned data from a file and posts them to all listening clients.

The application's user interface allows the user to select a file containing canned data, and run it either at the original speed, or at a ratio of the original speed.

Data files

A data file is expected to be a tab-separated text file. The top line should contain tab-separated field names. Included among the headings should be the required fields "TOPIC" and "TIME". Thus a file containing bid & ask prices might contain the following headings:

TOPICTIMEBIDASK

Each subsequent line of the file should contain field values matching those in the header line. For example:

TOPICTIMEBIDASK
ABGX08-Oct-2001 12:04:3821.0421.06
ENR08-Oct-2001 12:04:400.0250.035

Message format

The data packets passed from server to client consist of two strings, a topic and a field list. The fields in the list are space-separated name-value pairs. For the example data shown above, the data packets would be:

Topic Field list
ABGX BID 21.04 ASK 21.06
ENR BID 0.025 ASK 0.035

Speed

The user can specify a speed ratio for the play-back of stored data. In the example above the two data items would normally be broadcast 2 seconds apart. If the ratio is set to 2, then they will be broadcast 1 second apart. If the ratio is set to 0.1, then they will be broadcast 20 seconds apart.

Protocol

The server supports an Advise/Unadvise protocol. An example exchange is shown below.

Client Server
Initialize The client opens a channel to the server, and registers a callback function, mtcMessageHandler().    
Advise("IBM") The client requests that all data for "IBM" be sent whenever it changes.    
    SendData("IBM") The server receives new data about "IBM" and sends it to the client.
mtcMessageHandler("IBM") The client's call-back function is invoked. The client stores the data and responds appropriately.    
Unadvise("IBM") The client requests that no further data be sent for "IBM".    
    SendData("IBM") The server receives new data about "IBM" but does not send it to the client, since the client is no longer interested.
Terminate The client closes its channel to the server.    

Next: MtFeed communications module >>