SNF Release: 0.0.2-alpha

Don't know what SNF is? Check this post.

What's in this release?

Currently this version is made as a step forward from a simple proof-of-conept into an actual usable library, although still not perfect and buggy, it's still one step towards that, Revamped core parts, Added new features.. etc.

Changelog


Protocol

  Base OPCode

  • ✨(new) Detail for Command INVALID(0x00): UNIMPLEMENTED_OPCODE(0x02):
    • Role: Thrown when the responding entity has not implemented a function for an OPCode Command.

Server

  C Library

      📖 Documentation: /snf/c/0.0.2-alpha
      📂 File(s): 0.0.2-alpha-snf-c.tar.gz (Source code)
        ( See below for installation tutorial)

  • ✨(new) Added a new variable system: Variables are now stored in a specific structure inside <SNF/vars.h> instead of them being scattered around multiple headerfiles.

    • Tutorial is available here
  • ✨(new) Added OPCode Command Functions: which means when you create new OPCode structure you can link function to OPCode Command, hence allowing the use of Custom OPCodes fully,

    • Tutorial is available here
  • ✨ Revamped Thread pool system

    • Revamp note: After research and trial and error, and feedback from other people and after trying it in a project, i realized that i made the implementation wrong, as i used to create each threads whenever there is a work to do, which added CPU Time and latency, so after Reading this Wikipedia Page (Last visited on Augest 2, 2024 at 2:37 PM GMT +1). I noticed that I should've created the threads At once and from the beggining. so I did just that in this update and it did do wonders.
    • Tutorial is available here
  • ⚒️ Moved Base OPCode Commands' Response handling from being built-in inside the client handling, into their own functions in the <SNF/cmds.h> file.

  • ⚙️ Improuved Client handling & bug fixed related to it.

  • ⚙️ Improuved Documentation

  • ⚙️ Improuved Makefile in the following

    • ⚙️ make cleanlib: cleans the shared library binary ( Requires root access )
    • ⚙️ make t_<Test File> make buildtest: Now builds tests with Address Sanitizer on by default ( Doesn't include make gdbt_<Test File> )
  • ♻️ Renamed <SNF/locate3.h> ➡️ <SNF/lookup3.h> , Due to a mistake ( Lookup3 being the appropriate name )


Client

  .NET Library

      📖 Documentation: /snfclient/dotnet/0.0.2-alpha
      📂 File(s): 0.0.2-alpha-snfclient-dotnet.dll (Binary)
        ( See below for installation tutorial)

  • ✨(new) Added OPCode Command Functions: which means when you can assign methods that generate responses in case the Server sends a non-response request. ( Incomplete Feature )
    • Tutorial is available here
  • ✨(new) Added SNFClient.Exception.OPCode.Unregistred: Thrown when an SNFClient.OPCode.Member was not registred but used either by the client or the server.
  • ♻️ Renamed RequestResponseCB(Request Response) ➡️ RequestCB(Request Response) in SNFClient.Callbacks: The naming of delegates is related to it's parameters and not it's use case, this to avoid making two delegates that serve their own usecase but require matching parameters
  • ⚙️ Improuved Requests system, Bugfixes, & proper calls of callbacks.
  • ⚙️ Request Handler now uses three threads:
    • One for reading form the socket
    • One for writing onto the socket
    • ✨(new) One for Callbacks