Skip to content

Commit

Permalink
backend: make a pImpl out of DroneCoreBackend
Browse files Browse the repository at this point in the history
  • Loading branch information
JonasVautherin committed Mar 2, 2018
1 parent 45a3c2a commit 8e96747
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 40 deletions.
76 changes: 49 additions & 27 deletions grpc/server/src/backend.cpp
Expand Up @@ -5,52 +5,74 @@
#include <grpc++/server_builder.h>
#include <grpc++/server_context.h>
#include <grpc++/security/server_credentials.h>
#include <mutex>

#include "action/actionrpc_impl.h"
#include "connection_initiator.h"
#include "core/corerpc_impl.h"
#include "dronecore.h"
#include "log.h"
#include "mission/missionrpc_impl.h"
#include "telemetry/telemetryrpc_impl.h"

namespace dronecore {
namespace backend {

bool DroneCoreBackend::run(const int mavlink_listen_port)
class DroneCoreBackend::Impl
{
_connection_initiator.start(_dc, 14540);
_connection_initiator.wait();
public:
Impl() {}
~Impl() {}

grpc::ServerBuilder builder;
setup_port(builder);
bool run(const int mavlink_listen_port)
{
_connection_initiator.start(_dc, 14540);
_connection_initiator.wait();

CoreServiceImpl core(_dc);
builder.RegisterService(&core);
grpc::ServerBuilder builder;
setup_port(builder);

Action action(&_dc.device());
ActionServiceImpl actionService(action);
builder.RegisterService(&actionService);
CoreServiceImpl core(_dc);
builder.RegisterService(&core);

Mission mission(&_dc.device());
MissionServiceImpl missionService(mission);
builder.RegisterService(&missionService);
Action action(&_dc.device());
ActionServiceImpl actionService(action);
builder.RegisterService(&actionService);

Telemetry telemetry(&_dc.device());
TelemetryServiceImpl telemetryService(telemetry);
builder.RegisterService(&telemetryService);
Mission mission(&_dc.device());
MissionServiceImpl missionService(mission);
builder.RegisterService(&missionService);

_server = builder.BuildAndStart();
LogInfo() << "Server started";
_server->Wait();
Telemetry telemetry(&_dc.device());
TelemetryServiceImpl telemetryService(telemetry);
builder.RegisterService(&telemetryService);

return true;
}
_server = builder.BuildAndStart();
LogInfo() << "Server started";
_server->Wait();

void DroneCoreBackend::setup_port(grpc::ServerBuilder &builder)
{
std::string server_address("0.0.0.0:50051");
builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
LogInfo() << "Server set to listen on " << server_address;
}
return true;
}

private:
void setup_port(grpc::ServerBuilder &builder)
{
std::string server_address("0.0.0.0:50051");
builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
LogInfo() << "Server set to listen on " << server_address;
}

dronecore::DroneCore _dc;
dronecore::backend::ConnectionInitiator<dronecore::DroneCore> _connection_initiator;
std::unique_ptr<grpc::Server> server;
};

DroneCoreBackend::DroneCoreBackend() : _impl(new Impl()) {}
DroneCoreBackend::~DroneCoreBackend() = default;
DroneCoreBackend::DroneCoreBackend(DroneCoreBackend &&) noexcept = default;
DroneCoreBackend &DroneCoreBackend::operator=(DroneCoreBackend &&) noexcept = default;

bool DroneCoreBackend::run(const int mavlink_listen_port) { return _impl->run(mavlink_listen_port); }

} // namespace backend
} //namespace dronecore
20 changes: 7 additions & 13 deletions grpc/server/src/backend.h
@@ -1,28 +1,22 @@
#include <grpc++/server.h>
#include <memory>
#include <mutex>

#include "connection_initiator.h"
#include "dronecore.h"

namespace dronecore {
namespace backend {

class DroneCoreBackend
{
public:
DroneCoreBackend() {}
~DroneCoreBackend() {}
DroneCoreBackend();
~DroneCoreBackend();

DroneCoreBackend(DroneCoreBackend &&op) noexcept;
DroneCoreBackend &operator=(DroneCoreBackend &&op) noexcept;

bool run(const int mavlink_listen_port = 14540);

private:
bool run_server();
void setup_port(grpc::ServerBuilder &builder);

dronecore::DroneCore _dc;
dronecore::backend::ConnectionInitiator<dronecore::DroneCore> _connection_initiator;
std::unique_ptr<grpc::Server> _server;
class Impl;
std::unique_ptr<Impl> _impl;
};

} // namespace backend
Expand Down
1 change: 1 addition & 0 deletions grpc/server/src/core/corerpc_impl.h
@@ -1,4 +1,5 @@
#include "core/core.grpc.pb.h"
#include "dronecore.h"

using grpc::Status;
using grpc::ServerContext;
Expand Down

0 comments on commit 8e96747

Please sign in to comment.