Skip to content
Snippets Groups Projects
Commit 3c9a9864 authored by Anastasia Karachaliou's avatar Anastasia Karachaliou
Browse files

AcsPendingRequsts working

parent a1ebe24c
No related branches found
No related tags found
No related merge requests found
......@@ -23,8 +23,8 @@
#include "AcsRequest.hpp"
#include "mediachanger/messages.hpp"
#include "mediachanger/acs/ReturnValue.pb.h"
#include "mediachanger/acs/Exception.pb.h"
#include "mediachanger/ReturnValue.pb.h"
#include "mediachanger/Exception.pb.h"
#include "common/utils/utils.hpp"
//-----------------------------------------------------------------------------
......@@ -128,7 +128,7 @@ cta::mediachanger::Frame cta::mediachanger::acs::AcsRequest::createReturnValueFr
cta::mediachanger::computeSHA1Base64(frame.body));
frame.header.set_bodysignature("PIPO");
cta::mediachanger::acs::ReturnValue body;
cta::mediachanger::ReturnValue body;
body.set_value(value);
frame.serializeProtocolBufferIntoBody(body);
......@@ -147,7 +147,7 @@ cta::mediachanger::Frame cta::mediachanger::acs::AcsRequest::
frame.header.set_bodyhashvalue(mediachanger::computeSHA1Base64(frame.body));
frame.header.set_bodysignature("PIPO");
cta::mediachanger::acs::Exception body;
cta::mediachanger::Exception body;
body.set_code(code);
body.set_message(msg);
frame.serializeProtocolBufferIntoBody(body);
......
......@@ -22,45 +22,41 @@
# Rules to build and install acsd
################################################################################
#find_package(Protobuf3 REQUIRED)
find_package(Protobuf3 REQUIRED)
#file(GLOB ProtoFiles "${CMAKE_CURRENT_SOURCE_DIR}/*.proto")
#PROTOBUF3_GENERATE_CPP(ProtoSources ProtoHeaders ${ProtoFiles})
#include_directories (${PROTOBUF3_INCLUDE_DIRS})
include_directories (${PROTOBUF3_INCLUDE_DIRS})
#PROTOBUF3_GENERATE_CPP(WDMsgSources WDMsgHeaders WatchdogMessage.proto )
add_subdirectory(daemon)
#add_library(CtaAcsDaemon
# Acs.cpp
#AcsDaemon.cpp
#AcsDaemonConfig.cpp
#AcsDaemonMain.cpp
add_library(CtaAcsDaemon
Acs.cpp
#AcsDismountTape.cpp
#AcsForceDismountTape.cpp
#AcsImpl.cpp
AcsImpl.cpp
#AcsLibraryInteraction.cpp
#AcsMessageHandler.cpp
#AcsMountTapeReadOnly.cpp
#AcsMountTapeReadWrite.cpp
#AcsRequest.cpp
AcsRequest.cpp
#AcsRequestDismountTape.cpp
#${ProtoSources}
#)
)
#add_dependencies(ctaAcsDaemon ctamediachangerprotobuf)
#add_executable(CtaAcsDaemon ${ACS_SOURCE_FILES})
#target_link_libraries(castorAcsDaemon castortapereactor)
#target_link_libraries(CtaAcsDaemon ctacommon
# ctacommon
#ctareactor
#ctamediachanger
target_link_libraries(CtaAcsDaemon
ctacommon
ctareactor
ctamediachanger
#ctamediachangerprotobuf
# ctamediachangeracsdaemonprotobuf
# zmq
# ${STK_LIBRARIES})
zmq
${STK_LIBRARIES})
#set_target_properties (CtaAcsDaemon PROPERTIES
#COMPILE_FLAGS -I/usr/include/CDK
#COMPILE_DEFINITIONS LINUX)
set_target_properties (CtaAcsDaemon PROPERTIES
COMPILE_FLAGS -I/usr/include/CDK
COMPILE_DEFINITIONS LINUX)
################################################################################
......
......@@ -25,7 +25,7 @@
#include "AcsDaemon.hpp"
#include "AcsdConfiguration.hpp"
#include "mediachanger/acs/daemon/AcsMessageHandler.hpp"
//#include "AcsPendingRequests.hpp"
#include "AcsPendingRequests.hpp"
#include "mediachanger/acs/daemon/AcsdCmdLine.hpp"
#include "common/exception/Errnum.hpp"
#include "common/exception/BadAlloc.hpp"
......@@ -60,7 +60,7 @@ AcsDaemon::AcsDaemon(
m_hostName(getHostName()),
m_zmqContext(NULL),
m_config(config),
m_acsPendingRequests(config) {
m_acsPendingRequests(config,log) {
}
//------------------------------------------------------------------------------
......@@ -272,19 +272,19 @@ void AcsDaemon::blockSignals() const {
throw ex;
}
}
*/
//------------------------------------------------------------------------------
// mainEventLoop
//------------------------------------------------------------------------------
/*void AcsDaemon::mainEventLoop() {
void AcsDaemon::mainEventLoop() {
while(handleEvents()) {
}
}*/
}
//------------------------------------------------------------------------------
// handleEvents
//------------------------------------------------------------------------------
/*bool AcsDaemon::handleEvents() {
bool AcsDaemon::handleEvents() {
try {
const int timeout = 100; // 100 milliseconds
m_reactor.handleEvents(timeout);
......@@ -331,21 +331,21 @@ void AcsDaemon::blockSignals() const {
return handlePendingSignals();
}
*/
//------------------------------------------------------------------------------
// handlePendingRequests
//------------------------------------------------------------------------------
/*void AcsDaemon::handlePendingRequests() {
void AcsDaemon::handlePendingRequests() {
m_acsPendingRequests.tick();
m_acsPendingRequests.handleCompletedRequests();
m_acsPendingRequests.handleFailedRequests();
m_acsPendingRequests.handleToDeleteRequests();
}
*/
//------------------------------------------------------------------------------
// handlePendingSignals
//------------------------------------------------------------------------------
/**
bool AcsDaemon::handlePendingSignals() throw() {
bool continueMainEventLoop = true;
int sig = 0;
......@@ -376,6 +376,6 @@ bool AcsDaemon::handlePendingSignals() throw() {
return continueMainEventLoop;
}
**/
*/
}}}}
......@@ -23,6 +23,7 @@
#include "AcsPendingRequests.hpp"
#include "mediachanger/acs/AcsImpl.hpp"
#include "mediachanger/acs/AcsRequest.hpp"
/////#include "mediachanger/acs/daemon/AcsDismountTape.hpp"
//#include "castor/acs/AcsRequestDismountTape.hpp"
//////#include "AcsRequestDismountTape.hpp"
......@@ -38,31 +39,32 @@
// constructor
//-----------------------------------------------------------------------------
cta::mediachanger::acs::daemon::AcsPendingRequests::AcsPendingRequests(
const AcsdConfiguration &ctaConf):
const AcsdConfiguration &ctaConf, cta::log::Logger &l):
m_ctaConf(ctaConf),
m_log(l),
m_lastTimeResponseUsed(0) {
}
//-----------------------------------------------------------------------------
// destructor
//-----------------------------------------------------------------------------
/*cta::mediachanger::acs::daemon::AcsPendingRequests::~AcsPendingRequests() throw() {
cta::mediachanger::acs::daemon::AcsPendingRequests::~AcsPendingRequests() throw() {
for(RequestList::const_iterator itor = m_acsRequestList.begin();
itor != m_acsRequestList.end(); itor++) {
AcsRequest *const acsRequest = *itor;
cta::mediachanger::acs::AcsRequest *const acsRequest = *itor;
delete acsRequest;
}
}
*/
//-----------------------------------------------------------------------------
// tick
//-----------------------------------------------------------------------------
/*
* void cta::mediachanger::acs::daemon::AcsPendingRequests::tick() {
void cta::mediachanger::acs::daemon::AcsPendingRequests::tick() {
bool haveRunningRequests = false;
for(RequestList::const_iterator itor = m_acsRequestList.begin();
itor != m_acsRequestList.end();itor++) {
AcsRequest *const acsRequest = *itor;
cta::mediachanger::acs::AcsRequest *const acsRequest = *itor;
acsRequest->tick();
if(acsRequest->isRunning()) {
haveRunningRequests = true;
......@@ -85,7 +87,7 @@ cta::mediachanger::acs::daemon::AcsPendingRequests::AcsPendingRequests(
ACS_RESPONSE_TYPE responseType = RT_NONE;
ALIGNED_BYTES buf[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)];
log::write(LOG_DEBUG,
m_log(LOG_DEBUG,
"AcsPendingRequests::tick() Calling Acs::response()");
const STATUS responseStatus = m_acs.response(responseTimeout,
......@@ -107,12 +109,12 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::setRequestResponse(
const ALIGNED_BYTES *const responseMsg) {
for(RequestList::const_iterator itor = m_acsRequestList.begin();
itor != m_acsRequestList.end();itor++) {
AcsRequest *const acsRequest = *itor;
cta::mediachanger::acs::AcsRequest *const acsRequest = *itor;
if ( responseSeqNumber == acsRequest->getSeqNo()) {
std::stringstream dbgMsg;
dbgMsg << "AcsPendingRequests::setRequestResponse responseType=" <<
responseType << " " << acsRequest->str();
log::write(LOG_DEBUG, dbgMsg.str());
m_log(LOG_DEBUG, dbgMsg.str());
acsRequest->setResponse(responseType, responseMsg);
}
}
......@@ -124,7 +126,7 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::setRequestResponse(
void cta::mediachanger::acs::daemon::AcsPendingRequests::handleCompletedRequests() {
for(RequestList::const_iterator itor = m_acsRequestList.begin();
itor != m_acsRequestList.end();itor++) {
AcsRequest *const acsRequest = *itor;
cta::mediachanger::acs::AcsRequest *const acsRequest = *itor;
if (acsRequest->isCompleted()) {
std::list<log::Param> params = {log::Param("TPVID", acsRequest->getVid()),
log::Param("acs", acsRequest->getAcs()),
......@@ -133,7 +135,7 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::handleCompletedRequests
log::Param("drive", acsRequest->getDrive()),
log::Param("sender identity", acsRequest->getIdentity())
};
log::write(LOG_INFO,"Tape successfully dismounted",params);
m_log(LOG_INFO,"Tape successfully dismounted",params);
acsRequest->sendReplayToClientOnce();
acsRequest->setStateToDelete();
}
......@@ -146,7 +148,7 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::handleCompletedRequests
void cta::mediachanger::acs::daemon::AcsPendingRequests::handleFailedRequests() {
for(RequestList::const_iterator itor = m_acsRequestList.begin();
itor != m_acsRequestList.end();itor++) {
AcsRequest *const acsRequest = *itor;
cta::mediachanger::acs::AcsRequest *const acsRequest = *itor;
if (acsRequest->isFailed()) {
std::list<log::Param> params = {log::Param("TPVID", acsRequest->getVid()),
log::Param("acs", acsRequest->getAcs()),
......@@ -155,7 +157,7 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::handleFailedRequests()
log::Param("drive", acsRequest->getDrive()),
log::Param("sender identity", acsRequest->getIdentity())
};
log::write(LOG_INFO,"Dismount tape failed", params);
m_log(LOG_INFO,"Dismount tape failed", params);
acsRequest->sendReplayToClientOnce();
acsRequest->setStateToDelete();
}
......@@ -168,16 +170,16 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::handleFailedRequests()
void cta::mediachanger::acs::daemon::AcsPendingRequests::handleToDeleteRequests() {
for(RequestList::iterator itor = m_acsRequestList.begin();
itor != m_acsRequestList.end();itor++) {
AcsRequest *const acsRequest = *itor;
cta::mediachanger::acs::AcsRequest *const acsRequest = *itor;
if (acsRequest->isToDelete()) {
log::write(LOG_DEBUG,"AcsPendingRequests::handleToDeleteRequests " +
m_log(LOG_DEBUG,"AcsPendingRequests::handleToDeleteRequests " +
acsRequest->str());
delete acsRequest;
itor=m_acsRequestList.erase(itor);
}
}
}
/*
//-----------------------------------------------------------------------------
// checkAndAddRequest
//-----------------------------------------------------------------------------
......@@ -188,7 +190,7 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::checkAndAddRequest(
log::Param("sender identity",
utils::hexDump(address.getData(), address.size()))
};
log::write(LOG_DEBUG, "AcsPendingRequests::checkAndAddRequest", params);
m_log(LOG_DEBUG, "AcsPendingRequests::checkAndAddRequest", params);
const mediachanger::MsgType msgType = (mediachanger::MsgType)rqst.header.msgtype();
switch(msgType) {
......@@ -222,7 +224,7 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::checkAndAddRequest(
void cta::mediachanger::acs::daemon::AcsPendingRequests::checkAndAddRequestDismountTape(
mediachanger::ZmqMsg &address, mediachanger::ZmqMsg &empty,
const mediachanger::Frame &rqst, mediachanger::ZmqSocketST &socket) {
log::write(LOG_DEBUG,
m_log(LOG_DEBUG,
"AcsPendingRequests::checkAndAddRequestDismountTape");
mediachanger::AcsDismountTape rqstBody;
......@@ -244,14 +246,14 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::checkAndAddRequestDismo
log::Param("sender identity",
utils::hexDump(address.getData(), address.size()))
};
log::write(LOG_INFO, "Dismount tape", params);
m_log(LOG_INFO, "Dismount tape", params);
const SEQ_NO seqNo = getSequenceNumber();
std::list<log::Param> seqParam = {log::Param("seqNumber", seqNo)};
log::write(LOG_DEBUG, "ACS sequence number", seqParam);
m_log(LOG_DEBUG, "ACS sequence number", seqParam);
try {
AcsRequest * acsRequestDismountTape =
cta::mediachanger::acs::AcsRequest * acsRequestDismountTape =
new AcsRequestDismountTape(vid, acs, lsm, panel, drive,
//new AcsRequestDismountTape AcsRequestDismountTape(vid, acs, lsm, panel, drive,
m_ctaConf, socket, address, empty, seqNo);
......@@ -262,7 +264,7 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::checkAndAddRequestDismo
cta::exception::Exception ex;
ex.getMessage() << "Failed to add dismount request: "
<< ne.getMessage().str();
log::write(LOG_ERR, ex.getMessage().str());
m_log(LOG_ERR, ex.getMessage().str());
throw ex;
}
}
......@@ -275,7 +277,7 @@ void cta::mediachanger::acs::daemon::AcsPendingRequests::checkRequest(const std:
const uint32_t drive) const {
for(RequestList::const_iterator itor = m_acsRequestList.begin();
itor != m_acsRequestList.end();itor++) {
AcsRequest *const acsRequest = *itor;
cta::mediachanger::acs::AcsRequest *const acsRequest = *itor;
if (acs == acsRequest->getAcs() && lsm == acsRequest->getLsm() &&
panel == acsRequest->getPanel() && drive == acsRequest->getDrive()) {
cta::exception::Exception ex;
......@@ -303,7 +305,7 @@ SEQ_NO cta::mediachanger::acs::daemon::AcsPendingRequests::getSequenceNumber() c
for(RequestList::const_iterator itor = m_acsRequestList.begin();
itor != m_acsRequestList.end();itor++) {
AcsRequest *const acsRequest = *itor;
cta::mediachanger::acs::AcsRequest *const acsRequest = *itor;
if (maxSeqNo < acsRequest->getSeqNo()) {
maxSeqNo = acsRequest->getSeqNo();
}
......@@ -331,6 +333,6 @@ SEQ_NO cta::mediachanger::acs::daemon::AcsPendingRequests::getSequenceNumber() c
ex.getMessage() << "Failed to get sequence number for ACS"
": allocated minimum seqNo=\""<<minSeqNo<<"\""<<
" allocated maximum seqNo=\""<<maxSeqNo<<"\"";
log::write(LOG_ERR, ex.getMessage().str());
m_log(LOG_ERR, ex.getMessage().str());
throw ex;
}*/
......@@ -55,12 +55,12 @@ public:
*
* @param castorConf The configuration for the CASTOR ACS daemon.
*/
AcsPendingRequests(const AcsdConfiguration &ctaConf);
AcsPendingRequests(const AcsdConfiguration &ctaConf, cta::log::Logger &);
/**
* Destructor.
*/
////// ~AcsPendingRequests() throw();
~AcsPendingRequests() throw();
/**
* Notifies the AcsPendingRequests that it should perform any time related
......@@ -68,7 +68,7 @@ public:
*
* This method does not have to be called at any time precise interval.
*/
////// void tick();
void tick();
/**
* Requests to the CASTOR ACS daemon might have several states.
......@@ -92,17 +92,17 @@ public:
/**
* Handles successfully completed requests.
*/
///// void handleCompletedRequests();
void handleCompletedRequests();
/**
* Handles failed requests.
*/
////// void handleFailedRequests();
void handleFailedRequests();
/**
* Performs cleanup for deleted requests.
*/
///// void handleToDeleteRequests();
void handleToDeleteRequests();
/**
* Performs general checks for the incoming requests and calls next checker
......@@ -154,9 +154,9 @@ public:
* @param responseType The type of the response message.
* @param responseMsg The response message
*/
///// void setRequestResponse(const SEQ_NO responseSeqNumber,
///// const ACS_RESPONSE_TYPE responseType,
////// const ALIGNED_BYTES *const responseMsg);
void setRequestResponse(const SEQ_NO responseSeqNumber,
const ACS_RESPONSE_TYPE responseType,
const ALIGNED_BYTES *const responseMsg);
/**
* Performs checks for the request before adding it to the ACS requests list.
......@@ -179,6 +179,7 @@ private:
*/
const AcsdConfiguration m_ctaConf;
log::Logger &m_log;
/**
* Type for the list of the ACS requests.
*/
......@@ -192,7 +193,7 @@ private:
/**
* The ACLS C-API wrapper.
*/
///// AcsImpl m_acs;
AcsImpl m_acs;
/**
* The time when the last ACS response command was used.
......
......@@ -39,7 +39,8 @@ target_link_libraries(
cta-acsd
ctacommon
ctareactor
ctamediachanger
CtaAcsDaemon
ctamediachanger
# ctamediachangeracsdaemonprotobuf
zmq
${STK_LIBRARIES})
......
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