XLL+ Class Library

XllPush design

Topic strings

In the XllPush implementation, a Topic is a string that describes a single set of external data. In the case of a real-time price feed, this might be a stock ticker; for a slow calculation running in a background thread, the topic might be the string concatenation of all the arguments to the function.

XllPush requires that all topics are strings - you may therefore need to convert some numeric values to strings when creating a topic key.

Components

There are four key components contained in a typical push XLL.

  1. Connections table

    This is a list of connections between topics and cells. It is implemented completely by the CXllPushApp class.

  2. Push engine

    This component contains all the wiring of the push application. It looks after the data flow between threads, and ensures that update requests are fed to the application at the right times. It is implemented completely by the CXllPushApp class.

  3. Data cache

    A data cache is required, so that functions can have immediate access to the latest data. The developer is responsible for adding a data cache to the implementation class, and for populating it.

  4. Background thread

    One or more threads run in the background, and intermittently post results back to the main thread. The developer is responsible for implementing these threads.

All these componenets reside within the application class. Most of the functionality is implemented by the CXllPushApp parent class; the rest must be implemented by the proegrammer in their implementation class.

GUI

An add-in of this kind also needs a user interface of some kind, to provide at least the following features:

Templates for the user interface are provided with each of the multithreaded sample projects.

Implementation class

The developer is responsible for writing the application's implementation class, descended from CXllPushApp, and providing at least three virtual functions, OnXllOpenEx(), OnXllClose() and ProcessAsyncMessage().

Next: Data flow >>