Set of C++ servers built with the Microsoft C++ REST SDK which works as a back-end storage service in conjunction with Microsoft Azure Storage.
Purpose | Technology |
---|---|
Development Language | C++ |
Back-End Web Server Framework | Microsoft C++ REST SDK |
Testing Framework | UnitTest++ |
Build System | CMake |
Application Container | Vagrant |
Database (Online) | Microsoft Azure Storage |
First, clone the repository to your local machine and enter the project directory:
git clone https://github.com/jleung51-coursework/phaser.git
cd phaser/
The cleanest way to run the server is to run it inside a virtual machine. To do this, install VirtualBox and Vagrant on your machine.
Build the virtual machine using the Vagrantfile in the project directory:
vagrant up
This will take some time to build.
Enter the virtual machine:
vagrant ssh
Enter the project directory within the virtual machine. This directory is mirrored to the directory on your local machine, so any changes made on your local machine will be reflected instantly.
cd phaser/
Create a file named azure_keys.h
within the include/
directory, using the default template. This file will be ignored by Git; do not commit it as it will contain sensitive credentials.
cp include/azure_keys_default.h include/azure_keys.h
Create a new Storage Account in Microsoft Azure.
In the file include/azure_keys.h
, within the tables_endpoint
variable, replace USERNAME
with the username of your Storage Account.
Under Settings, click Access Keys.
- Enter the displayed name of the Storage Account into the file
include/azure_keys.h
in the lineAccountName=
. - Choose one of the keys shown and add it to the file
include/azure_keys.h
in the lineAccountKey=
.
Further instructions under construction...
The src/
directory contains the C++ source files for the servers.
The include/
directory contains all header files.
The build/
directory contains all the testing files, as well as the CMake build script.
There are 4 discrete servers in the system.
BasicServer
handles standard Create/Read/Update/Delete operations to the databases.AuthServer
handles authentication and token access through directly interfacing with the databases as well.PushServer
takes notifications of updates fromBasicServer
and sends them to the user.UserServer
is the direct and only interface of the client, requesting and receiving data from the other 3 servers as required.
This project was a group project in CMPT 276: Introduction to Software Engineering at Simon Fraser University for the Spring 2016 semester.
- Daphne Chong
- Jeffrey Leung
- Yi-Hsuan Wu
- Joshua Wu