Skip to content

Commit

Permalink
chore: add server service
Browse files Browse the repository at this point in the history
  • Loading branch information
bhngupta committed Jun 12, 2024
1 parent d17c425 commit cca555e
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 16 deletions.
13 changes: 13 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,19 @@ project(zippy)

set(CMAKE_CXX_STANDARD 17)

# Find gRPC and Protobuf packages
find_package(Protobuf REQUIRED)
find_package(gRPC REQUIRED)

# List all source files
set(SOURCES
src/Database.cpp
src/ClientHandler.cpp
src/HashTable.cpp
src/Server.cpp
src/ZippyService.cpp
gen/zippy.pb.cc
gen/zippy.grpc.pb.cc
# [IMP] - DO NOT ADD main.cpp HERE IT MESSES UP THE TESTS
# Add other source files here
)
Expand All @@ -19,6 +26,9 @@ set(HEADERS
include/ClientHandler.h
include/HashTable.h
include/Server.h
include/ZippyService.h
include/zippy.pb.h
include/zippy.grpc.pb.h
# Add other header files here
)

Expand All @@ -28,6 +38,9 @@ include_directories(include/)
# Add executable for the main application
add_executable(zippy ${SOURCES} src/main.cpp)

# Link gRPC and Protobuf libraries
target_link_libraries(zippy gRPC::grpc++ protobuf::libprotobuf)

message(STATUS "Building Tests")

# Include Google Test
Expand Down
9 changes: 5 additions & 4 deletions include/Server.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@
#ifndef SERVER_H
#define SERVER_H

#include <grpcpp/grpcpp.h>
#include "ZippyServiceImpl.h"

class Server {
public:

void start();

void stop();
void Run();

private:
//TODO - add member functions
std::unique_ptr<grpc::Server> server;
};

#endif // SERVER_H
22 changes: 22 additions & 0 deletions include/ZippyService.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#ifndef ZIPPY_SERVICE_H
#define ZIPPY_SERVICE_H

#include "zippy.grpc.pb.h"
#include "Database.h"
#include <grpcpp/grpcpp.h>

class ZippyServiceImpl final : public zippy::ZippyService::Service {
public:
ZippyServiceImpl(Database& db) : db_(db) {}

grpc::Status Set(grpc::ServerContext* context, const zippy::SetRequest* request, zippy::SetResponse* response) override;

grpc::Status Get(grpc::ServerContext* context, const zippy::GetRequest* request, zippy::GetResponse* response) override;

grpc::Status Del(grpc::ServerContext* context, const zippy::DelRequest* request, zippy::DelResponse* response) override;

private:
Database& db_;
};

#endif // ZIPPY_SERVICE_H
22 changes: 13 additions & 9 deletions src/Server.cpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
#include "Server.h"
#include <iostream>

void Server::start() {
std::cout << "Server started" << std::endl;
//Todo - Implement server start
}

void Server::stop() {
std::cout << "Server stopped" << std::endl;
//Todo - Implement server stop
}
void Server::Run() {
std::string server_address("0.0.0.0:50051");
ZippyServiceImpl service;

grpc::ServerBuilder builder;
builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
builder.RegisterService(&service);

server = builder.BuildAndStart();
std::cout << "Server started at " << server_address << std::endl;

server->Wait();
}
19 changes: 19 additions & 0 deletions src/ZippyService.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#include "ZippyService.h"

grpc::Status ZippyServiceImpl::Set(grpc::ServerContext* context, const zippy::SetRequest* request, zippy::SetResponse* response) {
db_.set(request->key(), request->value());
response->set_status("OK");
return grpc::Status::OK;
}

grpc::Status ZippyServiceImpl::Get(grpc::ServerContext* context, const zippy::GetRequest* request, zippy::GetResponse* response) {
std::string value = db_.get(request->key());
response->set_value(value);
return grpc::Status::OK;
}

grpc::Status ZippyServiceImpl::Del(grpc::ServerContext* context, const zippy::DelRequest* request, zippy::DelResponse* response) {
db_.del(request->key());
response->set_status("OK");
return grpc::Status::OK;
}
6 changes: 3 additions & 3 deletions src/main.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#include <iostream>
#include "Server.h"

int main() {
Server server;
server.start();
server.stop();
server.Run();
return 0;
}
}

0 comments on commit cca555e

Please sign in to comment.