Skip to content

Commit

Permalink
added classes and methods prototypes
Browse files Browse the repository at this point in the history
  • Loading branch information
kaverhovsky committed Nov 12, 2020
1 parent c72b47d commit 9ef9705
Show file tree
Hide file tree
Showing 14 changed files with 464 additions and 0 deletions.
48 changes: 48 additions & 0 deletions .github/workflows/blank.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: CI

on:
push:
branches: [ client ]
pull_request:

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: install cppcheck
run: sudo apt-get install -y cppcheck

- name: install valgrind
run: sudo apt install valgrind

- name: install gcovr and lcov
run: |
sudo apt install gcovr
sudo apt install lcov
- name: run cppcheck
run: cd src && cppcheck *.cpp

- name: build
run: |
mkdir build
cd build
cmake ..
make
- name: test client lib
run: |
cd build
valgrind --leak-check=full ./test/client_tests
- name: coverage
run: |
cd build
make gcov
make lcov
- name: archive code coverage results
uses: actions/upload-artifact@v2
with:
name: code-coverage-report_linear
path: build/test/lcoverage
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
build/
.vscode/

# Prerequisites
*.d

Expand Down
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
cmake_minimum_required(VERSION 3.16.3)

project(link_share)

add_subdirectory(src)

#enable_testing()
#add_subdirectory(test)
64 changes: 64 additions & 0 deletions include/application.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@

#include "client.hpp"
#include <memory>
#include <list>


class UserInfo{
public:
UserInfo();
UserInfo(std::string nm, std::string psw);
~UserInfo();

private:
std::string name;
std::string password;
};


class Room{
public:
Room(std::string roomName);
void addLink(std::string newLink);
void removeLink(std::string linkName);
void addParticipant(std::string newPart);
void removeParticipant(std::string partName);
std::string saveMask(std::string linkName);
private:
std::string roomName;
std::string roomHost;
std::vector<std::string> participants;
std::vector<std::string> links;
};


class Link {
public:
Link(std::string name, std::string url, std::string tag);
~Link();
std::string addSnapshot();

private:
std::string linkname;
std::string url;
std::vector<std::string> tags;
std::vector<std::string> snapshotPaths;
};



class Application {
public:
Application();
~Application();
/* void logIn(UserInfo inf);
void logOut();
void createRoom(std::vector<std::string> participants);
void addLink(std::string newLink);
void removeLink(std::string linkName);
*/
private:
Client client;
UserInfo info;
std::vector<Room> rooms;
};
21 changes: 21 additions & 0 deletions include/client.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

#include "socket.hpp"

#include <netinet/in.h>
#include <string>
#include <vector>


class Client {
public:
Client();
~Client();
void connect(const std::string& host, int port);
void writeToServer(std::string req);
std::string readFromServer();
void closeCon();

private:
Socket sock;
};

89 changes: 89 additions & 0 deletions include/request.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@

#include <string>
#include <memory>
#include <iostream>
#include <vector>

class Request {
public:
virtual void buildRequestFromInput(std::istream s) = 0;
virtual std::string RequestToString() = 0;
};

class LogInReq : public Request {
public:
void buildRequestFromInput(std::istream s) override;
std::string RequestToString() override;
private:
std::string name;
std::string password;
};

class LogOutReq : public Request {
public:
void buildRequestFromInput(std::istream s) override;
std::string RequestToString() override;
private:
};

class CreateRoomReq : public Request {
public:
void buildRequestFromInput(std::istream s) override;
std::string RequestToString() override;
private:
std::string roomName;
std::string roomHost;
std::vector<std::string> participants;
};

class RemoveRoomReq : public Request {
public:
void buildRequestFromInput(std::istream s) override;
std::string RequestToString() override;
private:
std::string name;
};

class AddLinkReq : public Request {
public:
void buildRequestFromInput(std::istream s) override;
std::string RequestToString() override;
private:
std::string linkName;
std::string url;
std::string tag;
};

class RemoveLinkReq : public Request {
public:
void buildRequestFromInput(std::istream s) override;
std::string RequestToString() override;
private:
std::string linkName;
};

class ArchiveLinkReq : public Request {
public:
void buildRequestFromInput(std::istream s) override;
std::string RequestToString() override;
private:
std::string linkName;
};


using requestPtr = std::shared_ptr<Request>;

class RequestHandler {
public:
RequestHandler();
requestPtr HandleInput(std::string which);
private:
requestPtr _LogInReq;
requestPtr _LogOutReq;
requestPtr _CreateRoomReq;
requestPtr _RemoveRoomReq;
requestPtr _AddLinkReq;
requestPtr _RemoveLinkReq;
requestPtr _LinkReq;
requestPtr _ArchiveLinkReq;
};
73 changes: 73 additions & 0 deletions include/response.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@

#include <string>
#include <iostream>
#include <memory>
#include <vector>
#include <application.hpp>
#include <request.hpp>

class Response {
public:
virtual void buildResponse(std::string responseBody) = 0;
virtual void doLogic(const Request& req, Application& app) = 0;
};

class LogInResp : public Response{
public:
void buildResponse(std::string responseBody) override;
void doLogic(const Request& req, Application& app) override;
};

class LogOutResp : public Response{
public:
void buildResponse(std::string responseBody) override;
void doLogic(const Request& req, Application& app) override;
};

class CreateRoomResp : public Response{
public:
void buildResponse(std::string responseBody) override;
void doLogic(const Request& req, Application& app) override;
};

class RemoveRoomResp : public Response{
public:
void buildResponse(std::string responseBody) override;
void doLogic(const Request& req, Application& app) override;
};

class AddLinkResp : public Response{
public:
void buildResponse(std::string responseBody) override;
void doLogic(const Request& req, Application& app) override;
};

class RemoveLinkResp : public Response{
public:
void buildResponse(std::string responseBody) override;
void doLogic(const Request& req, Application& app) override;
};

class ArchiveLinkResp : public Response{
public:
void buildResponse(std::string responseBody) override;
void doLogic(const Request& req, Application& app) override;
private:
std::string body;
};


using responsePtr = std::shared_ptr<Response>;

class ResponseHandler {
public:
ResponseHandler();
responsePtr HandleInput(std::string resposeBody);
private:
responsePtr _LogInResp;
responsePtr _LogOutResp;
responsePtr _CreateRoomResp;
responsePtr _RemoveRoomResp;
responsePtr _AddLinkResp;
responsePtr _RemoveLinkResp;
};
18 changes: 18 additions & 0 deletions include/socket.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#include <unistd.h> // close()
#include <memory>
#include <string>

class Socket
{
public:
Socket();
Socket(int sd);
~Socket();

void connect(const std::string& host, int port);
void send(const std::string& str);
std::string recv();
void close();
private:
int sd;
};
4 changes: 4 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
add_library(client STATIC application.src client.cpp request.cpp response.cpp socket.src)
target_include_directories(client PUBLIC "${PROJECT_SOURCE_DIR}/include")

add_definitions(-Wall -Werror -Wpedantic)
24 changes: 24 additions & 0 deletions src/application.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include "application.hpp"


UserInfo::UserInfo() {}
UserInfo::UserInfo(std::string nm, std::string psw) {}
UserInfo::~UserInfo() {}


Room::Room(std::string roomName) {}
void Room::addLink(std::string newLink) {}
void Room::removeLink(std::string linkName) {}
void Room::addParticipant(std::string newPart) {}
void Room::removeParticipant(std::string partName) {}
std::string Room::saveMask(std::string linkName) {}



Link::Link(std::string name, std::string url, std::string tag) {}
Link::~Link() {}
std::string Link::addSnapshot() {}


Application::Application() {}
Application::~Application() {}
15 changes: 15 additions & 0 deletions src/client.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include "client.hpp"

Client::Client() {}

Client::~Client() {}

void Client::connect(const std::string& host, int port) {}

std::string Client::readFromServer() { return "we"; }

void Client::writeToServer(std::string req) {}

void Client::closeCon() {}


Loading

0 comments on commit 9ef9705

Please sign in to comment.