SkillAgentSearch skills...

Euclid

An event-driven framework

Install / Use

/learn @hal9000xp/Euclid
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

E(u)clid

Version: Apr 2014 Author: Eldar Gaynetdinov License: ISC

DESCRIPTION:

E(u)clid (further in text called Euclid) is the minimalist style framework which provides the following features:

  • event-driven engine based on epoll (SSL connections also supported)
  • client and limited server behaviour
  • buffering network IO
  • global and connection based timers
  • modularity
  • logging
  • limited support of HTTP 1.1 (permanent connections also supported)
  • fixed point arithmetic
  • YAML based config parser
  • linked lists, hash tables etc

PHILOSOPHY:

Keep it thin. Don't use a lot of libraries except glibc. At the moment there are only three exeptions (OpenSSL, zlib, crc32). Provide enough functionality and scalability but stay in the minimalist style.

WHY IT EXISTS?

This is the public part of my personal project which I will use for algorithmic trading at NYSE, NASDAQ, CME etc. I don't like huge libraries and frameworks. That's why I decided to write this lightweight framework. I share it because somebody may find this framework interesting and useful. The name Euclid is inspired by Darren Aronofsky's film Pi. After I wrote event-driven engine I noticed similarity between (Eu)clid and (Ev)ent. That's why I call it E(u)clid.

BUILD:

You need a Linux environment with installed OpenSSL and zlib dev packages.

  1. To build debug version:

$ make

  1. To build release version:

$ make release

  1. To build debug version which is intended for proxy module:

$ make test_many_conns

NOTE: http proxy module is intended for testing this framework. But I still didn't implement support for many connections. That means it's needed O(n) to traverse all the connections. That's why in normal mode, I don't support many connections.

  1. To cleanup:

$ make clean

GETTING STARTED

  1. $ make test_many_conns

  2. point out your browser to: localhost:1111

NOTE: http proxy supports SSL connections and HTTP method CONNECT. So it's possible to use this proxy for another protocols (try to use Pidgin IM through this proxy).

  1. $ ./euclid module:proxy no_debug_log

  2. Enjoy!

To move logging to file. Invoke this before running ./euclid

$ ./core/make_tmpfs_logging_dir.sh

It creates a temporary directory in tmpfs. It's useful with debug logging.

SECURITY WARNING:

Please, generate and add your own private key and cert to core/core.cfg by adding:

####### net_cert_file: [path to cert file].crt

net_key_file: [path to key file].key #######

Otherwise, a throwaway key is used for tests. See core/core.cfg :

####### net_cert_test_file: core/server_test.crt

net_key_test_file: core/server_test.key #######

Also, you will get a warning message when Euclid started.

View on GitHub
GitHub Stars105
CategoryDevelopment
Updated1y ago
Forks14

Languages

C

Security Score

65/100

Audited on Dec 6, 2024

No findings