Skip to content

Releases: LucaZulberti/robin-ublog

Release v1.0.0: exam version

30 Jun 19:50
v1.0.0
Compare
Choose a tag to compare

Robin Server

  • cips_since: now it returns the cips from the following users

Lib

  • socket: now it uses a 4-byte prefix to indicate packet length in recv and send

Robin Client

  • Improve prompt with the user

Release v0.8.0: Add Robin API and Robin Client CLI

28 Jun 13:28
v0.8.0
Compare
Choose a tag to compare

Robin Server

  • few fixes and improvements

Robin API

  • Static library used to communicate with a Robin Server
  • A subset of functions have been implemented (minimum requirements for the project)

Robin Client CLI

  • CLI application which act as a client for Robin UBlog
  • home command display the home page of the logged user requesting various information to the server

Release v0.7.1: Save users on filesystem

17 Jun 21:07
v0.7.1
Compare
Choose a tag to compare

Robin Server

  • Load saved users from the file during startup
  • Robin User
    • Use lib/password to hash incoming password from clients
    • Save email and password on the filesystem

Release v0.7.0: Add followers and Robin Cips

24 May 22:36
v0.7.0
Compare
Choose a tag to compare

Robin Server

  • Robin Connection
    • Improved parsing of command: now arguments can be wrapped in double quotes pair.
  • Robin Cip
    • A new module which handles all cips with hashtags.
    • Cips and hashtags can be retrieved using timestamps as reference.
  • Robin User
    • Add followers list into the user's data structure.

Release v0.6.2: minor bug fixes and improvements

19 May 17:53
v0.6.2
Compare
Choose a tag to compare

Robin Server:

  • Move cleanup code from signal handler to main
  • Robin Thread:
    • use condition variable for RT state for increased versatility
  • Robin User:
    • fix minor bug

Release v0.6.1: move socket library and new alloc_safe library under lib/

16 May 12:20
v0.6.1
Compare
Choose a tag to compare

Robin Server: the lib/alloc_safe.h library makes the allocation and deallocation of resources safe against pthread_cancel called on SIGINT.
This is useful for Valgrind debug in order to correctly clean-up all the allocated resources.

Release v0.6.0: add Follow/Unfollow/Following commands and cleanup gracefully

16 May 11:05
v0.6.0
Compare
Choose a tag to compare

Robin Server: can be debugged with Valgrind.

  • Robin Connection:
    • All resources are allocated and freed safely with pthread_setcancelstate().
    • New available commands:
      • follow: pass users' email to follow
      • unfollow: pass users' email to unfollow
      • following: list all following users
  • Robin User:
    • A list of following emails is kept in User Data.
    • TODO: make User Data persistent on the file system.
  • Robin Threads:
    • Gracefully exit with pthread_cleanup_push/pop().

Robin API (TODO): C API for Robin clients.

Robin Client (TODO): A Robin CLI client.

Release v0.5.0: add Register/Login/Logout commands

14 May 16:53
v0.5.0
Compare
Choose a tag to compare

Robin Server:

  • Robin Connection: new layer which encapsulates old Robin Manager.
    • It setups a robin_conn_t structure (no robin_ctx_t anymore).
    • New available commands:
      • register: pass email and password to register
      • login: validate email and password to acquire user data
      • logout: release the user data
  • Robin User: provide exclusive access to user data in memory using mutexes.
    • User data is volatile in memory. TODO: make it persistent on the file system.
    • Robin Threads acquire and release user data using Robin Connection layer functions.
    • User data locking is not blocking (pthread_mutex_trylock()) preventing the connection from stalling.

Robin API (TODO): C API for Robin clients.

Robin Client (TODO): A Robin CLI client.

Release v0.4.1: stable enough to publish release

11 May 22:29
v0.4.1
Compare
Choose a tag to compare

Robin Server: creates a TCP socket bound to host and port passed as command-line arguments.
It dispatches the connected clients (the socket file descriptors) to the Robin Thread Pool.

  • Robin Thread Pool: spawns N Robin Thread (RT) to serve connected clients, with N a compile-time constant.
    • The server can handle up to N connections at a time.
    • An RT waits blocked in a queue until the server dispatch a new socket file descriptor to the pool.
    • The waked up RT handle the connection using the Robin Manager.
  • Robin Manager: handles the connection with the client associated with the running thread.
    • Set up a context in which all data related to the client is stored.
    • Parse the lines arriving from the socket to execute the requested commands.
    • Available commands:
      • help: return the command list
      • quit: close the connection

Robin API (TODO): C API for Robin clients.

Robin Client (TODO): A Robin CLI client.