What is this library for ?
Push Framework is a network application framework written in C++. It helps you create asynchronous parallel server programs with a minimum effort.
Is it free ?
It is free and open source. The code is licensed under the Apache 2.0 license allowing you to use it within commercial software without the need to pay or disclose the source code of your product.
Does it work for all OSs ?
Starting with version 1.3, Push Framework supports both Windows and Linux.
What types of servers program can I used it for ?
Push Framework can be used to solve many scenarios. It is however a best fit for real time server that push data in an asyncronous manner to a large number of connected clients.
How much performant is it ?
Push Framework can handle more than thousand persistent, high traffic connections on a single machine. In most cases responsivity is less than 1ms.
Can I use it for video streaming ?
Unfortunately, no, unless you accept to stream media over TCP and not over UDP. However we have UDP and a protocol implementation of RTP on the features-list of future versions.
How does it handle data broadcast ?
Broadcast is done through the concept of broadcasting channel. Each channel is configured with a maximum size, a priority number and a quota number. You can explicitly or implicitly subscribe connected clients to different channels. The framework deliver all queued packets at the best effort and using rules that grantee the quota of bandwidth and priority.
Can I obtain the source code of the Dashboard ?
The Dashboard is a available for free. However its source code is not disclosed.
Do you offer development services ?
Yes. If you are convinced of the benefit to use Push Framework in your application, and if you lack the development work force then you can ask for development service. As an independent contractor I am open to hearing your requests whether you want to implement a new idea or even adapt an existing application.
What protocol is this library using for communication ?
Push Framework is not limited to a defined protocol. It is up-to you to decide about the binary format of the data that is sent and received. Serialization and de-serialization call developer-defined Framing, deframing, encoding and decoding. If you do not want to defined your own protocol, then you can re-use the ones we provided in the Proctol Examples section.
Can I use the library to communicate with remote clients that support different protocols ?
Yes. Multiple protocols can be defined and be bound to different listening ports. The library will remember the protocol of each physical connection so that it knows the exactway of encoding outgoing responses as well as the exact way of decoding incoming responses. Your business code remains independent from that detail : you deal with the logical notions of IncomingPacket, OutgoingPacket and do the servicing job in a same manner for all types of connected clients.