Releases: LucaZulberti/robin-ublog
Release v1.0.0: exam version
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
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
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
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
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/
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
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
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
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.