Navining Zeus Versions Save

A high performance, cross-platform Internet Communication Engine. Developed with native socket API. Aim at handling millions of concurrent connections.

v0.2.5

3 years ago

epoll

  • TcpServer, TcpSubserver and TcpClient now support epoll model (only available under Linux)
  • IO multiplexing model can be switched in common.h

Byte Stream

  • Use Stream instead of Message in onMessage() API
  • Now support passing integers, arrays and strings directly through Stream without using a struct

Exception Information

  • Log system now supports output of errno and exception information provided by the OS with LOG_PERROR

Other Updates

  • Fixed a bug that the server can not receive messages properly under Linux

v0.2.4

3 years ago

Log system

  • Implement a asynchronous log system, support multiple warning levels

Configuration

  • Server and Client Now support reading configuration files from outside
  • Provide sample bat and shell scripts

Other Changes

  • Upgrade client, increase scalability
  • Add maximum connection limit

v0.2.3

3 years ago

This version mainly enhance the stability of the server.

Heartbeat Detection

  • Server now is able to actively disconnect from the client when there's no response

Timing Eending

  • Server now is able to send message regularly after certain time

Safe Exit

  • Use semaphore to ensure the exit order of threads
  • Resources are now released properly

Other Changes

  • Implement a Thread class to achieve better control of threads
  • Implement a Buffer class to simplify code logics of sending and receiving messages

v0.2.2

3 years ago

Smart Pointers

  • Smart pointers are used in the entire solution to eliminate memory leak

Memory Pool

  • Implement a maintainable memory pool defined in Memory.h
  • Include Allocator.hpp to use the memory pool (not enabled by default)

Object Pool

  • An object pool is included in Object.hpp

Other Changes

  • Reorganized files, seperated each module
  • Block SIGPIPE due to socket disconnection, able to work stably under Linux

v0.2.1

3 years ago

Performance optimization

  • Optimized select model
  • Seperate receive thread and send thread in each subserver
  • Eliminate potential memory leaks

Warning

  • This version won't work on Linux or MacOS because of SIGPIPE

v0.2.0

3 years ago

Multithreading

  • Multithreading is used in the server. The main thread handles clients connections, while other threads handle messages.

Producer-Consumer Pattern

  • Use a message queue for adding clients connections.

Event interface

  • Define an event interface which provides three methods onConnection, onDisconnection and onMessage
  • Custom servers can now inherit from TcpServer and implement the interface

Other features

  • Improve log output
  • Integrate common files

v0.1.5

3 years ago

Buffering

  • Add a secondary buffer to solve system buffer overflow problem with large amount of data
  • Unpack sticky packages

Benchmark

  • Add a benchmark to measure the performance of the server
  • Modify the client to simulate a large number of client connections

v0.1.4

4 years ago
  • Encapsulate Zeus-Server and Zeus-Client
  • Client now is able to connect to multiple servers simultaneously
  • Use CMake to build

v0.1.3

4 years ago

Cross platfrom

  • Cross-platform client in Windows, Linux and MacOS
  • Cross-platform server in Windows, Linux and MacOS

Test Environment

  • Windows 10.0
  • Linux 4.4.0 (WSL)
  • MacOS 10.12.6

v0.1.2

4 years ago

Select model

  • Apply select model to server, able to handle multi-client connections
  • Apply select model to client
  • Use multithreads for client input