Skip to content
Snippets Groups Projects
Commit be1cd4b0 authored by Valerio Pastore's avatar Valerio Pastore
Browse files

implemented missing methods

parent 4838f1e0
No related branches found
No related tags found
No related merge requests found
......@@ -31,12 +31,11 @@ add_library(RedisReceiver ${REDISRECEIVER_LIBRARY_TYPE} ${SOURCES})
set(INC_DIR
"${PROJECT_SOURCE_DIR}/include"
"${PROJECT_SOURCE_DIR}/deps/Base-DAQ/include"
"${PROJECT_SOURCE_DIR}/deps/hiredis"
)
target_include_directories (RedisReceiver PUBLIC ${INC_DIR})
list(APPEND THIRD_LIBS hiredis_static)
find_library(libhiredis hiredis)
list(APPEND THIRD_LIBS hiredis)
target_link_libraries( RedisReceiver LINK_PUBLIC ${THIRD_LIBS} )
# make install
......
Subproject commit 544d785f5accf10762deeaa196d5e907a8dfd7eb
Subproject commit 840f0fa1970e363716386175149aecf60e82c996
Subproject commit 1cbd5bc762a466e196f78aae7ea6d5c8c5c51fe5
Subproject commit 04c1b5b0292da1c6515baf6cb5b5b9bb882f38d7
......@@ -7,7 +7,7 @@
#define REDIS_RECEIVER_H_
#include <Base_Protocol.h>
#include <hiredis.h>
#include <hiredis/hiredis.h>
/*
......@@ -20,10 +20,13 @@ class RedisReceiver: public BaseProtocol {
protected:
std::string key;
redisContext *context;
std::string ip{};
int port;
void split_ip_port(const std::string& ip_port, std::string& ip, std::string& port);
bool checkRedisStream(redisReply &r);
public:
RedisReceiver(std::string hs, int prt, std::string topic);
RedisReceiver(std::string ip, int prt, std::string key);
~RedisReceiver() {
std::cout << "RedisReceiver DISTRUCTOR CALLED" << std::endl;
}
......@@ -35,10 +38,19 @@ public:
return key;
}
int connectToClient();
int connectToServer();
int sendPacketToSrv(PacketLib::BasePacket&);
int rcvPacketFromCli(PacketLib::BasePacket&);
std::string getIp(){return ip;}
int getPort(){ return port;}
void setIp(std::string ip){ this->ip = ip;}
void setPort(int port){this->port = port;}
int connectToServer() override;
int connectToClient() override;
int closeConnectionToServer() override;
int closeConnectionToClient() override;
bool isConnectedToClient() const override;
bool isConnectedToServer() const override;
int receiveFromClient(PacketLib::BasePacket &) override;
int sendToServer(PacketLib::BasePacket &) override;
};
}
......
......@@ -29,6 +29,7 @@ int RedisReceiver::connectToClient() {
} else {
printf("Can't allocate redis context\n");
}
return -1;
}
return 1;
}
......@@ -37,13 +38,30 @@ int RedisReceiver::connectToServer() { // no differences in implementation
return connectToClient();
}
int RedisReceiver::closeConnectionToServer(){
redisFree(context);
return 1;
}
int RedisReceiver::closeConnectionToClient(){
redisFree(context);
return 1;
}
bool RedisReceiver::isConnectedToClient() const {
return (context == NULL || context->err);
}
bool RedisReceiver::isConnectedToServer() const {
return (context == NULL || context->err);
}
/*
*
* @param pack: address of the packet object
*
* @return number of bytes received [-1 error, 0 done]
*/
int RedisReceiver::rcvPacketFromCli(PacketLib::BasePacket &pack) {
int RedisReceiver::receiveFromClient(PacketLib::BasePacket &pack) {
std::stringstream cmd;
cmd << "XREAD BLOCK 0 STREAMS ";
cmd << key;
......@@ -64,7 +82,7 @@ int RedisReceiver::rcvPacketFromCli(PacketLib::BasePacket &pack) {
}
int RedisReceiver::sendPacketToSrv(PacketLib::BasePacket &pack) {
int RedisReceiver::sendToServer(PacketLib::BasePacket &pack) {
return 0;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment