Day 0 : 8 June 2022 : Project Ava - Multi-Platform Networking Using C++

My 100 Daze of Code

It's official! I've accepted Alex Kallaway's (@ka11away) 100-days-of-code challenge. Today is Wednesday, 8-June-2022 and I'll be posting to this blog to describe my coding activities for the next 100 days. Code examples to be posted on my Github fork of 100-days-of-code at My100DazeOfCode.

Project Ava - Multi-Platform Networking Using C++

Scoping the project

Ava will be a network communications library written in C++, with an accompanying driver program to provide a command-line interface (CLI) and a test program to validate library internals. We'll start the project on Linux and port it to Windows, macOS and (to some extent) iOS. As a stretch goal, we'll attempt an Android port if we have time.

The library should have a public interface but not expose details of the implementation. The build schemes should support conventional Makefile, CMake, possibly Conan Build Manager, Visual Studio .props, .sln, vcxproj. Debugging support using Visual Code on Linux and macOS can be helped by providing launch.json files appropriate for each platform, wrapping GDB and LLDB access.

The CLI should have a help screen to show command formats. A log file output to capture errors is needed. Piping this into syslog where that is available could be nice. If the library can be wrapped in a service on Windows and run as a daemon on Linux then the CLI could leverage an IPC mechanism to relay commands and allow multiple client sessions.

Network security using a 3rd-party encryption library could be good to have - maybe OpenSSL.



Comments

Popular posts from this blog

Day 12 : 19 June 2022 : Adding Windows Service Logic

Day 5 : 12 June 2022 : CMake on Windows

Day 11: 18 June 2022 : Handling Program Arguments