Skip to content

Architecture

Vaibhav Sharma edited this page Nov 21, 2023 · 4 revisions

Main things

The architecture consists of 6 main things -

  1. vupdate
  2. vparse
  3. vdownload
  4. vconsolid
  5. vpack
  6. vlib

We'll discuss them one by one.

1. vupdate

  • This is the main application that we're primarily building. This automatically consists of vparse, vdownload and vconsolid.
  • A schematic is shown below which shows the architecture of the actual application - Architecture
  • vupdate generates an executable, which is a standalone updater that can be used with any application. The invocation involves specifying a config.json which contains a key server specifying the file server to download from.
  • In summary, vupdate is like the main logic application.

2. vparse

  • This is a module that is yet to be implemented.
  • It will consist of functions that will perform tasks related to parsing (like parsing the URL, parsing the file path, and getting its various properties, etc.).
  • This module is still under review for implementation.

3. vdownload

  • This is a module that handles the downloading of files and temporarily storing them.
  • Primarily, the curl library is used here. Filesystem is also used extensively here.

4. vconsolid

  • This is also a module that handles the relocation of files downloaded.
  • Usually this is called in succession to vdownload.
  • Its functionality heavily revolves around the usage of filesystem. Functions that involve tasks like moving files to certain directories, creating directories, etc. are performed in this module.

5. vpack

  • This is a standalone application that is created for indexing the files on the server in a format known to the vupdate application.
  • This application spits out a filelist.json file that is initially downloaded from the server for verification purposes.

6. vlib

  • vlib is a library to the vupdate application. It is available as a static library for other applications to link to, extending the functionality and easing integration with other applications.
  • It doesn't require a config.json for functioning, although support would be added in the future release to switch between these modes.

What if I have more doubts regarding the project?

  • The best way is to go through the implementation of the project files on your own. I'm pretty sure you can get through it with ease.
  • If you still can't understand, you are always welcome to ping me through my website @ https://ghostvaibhav.codes. I will get back to you ASAP.

Clone this wiki locally