/usr/include/arc/security/ArcPDP/Response.h is in nordugrid-arc-dev 4.0.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #ifndef __ARC_SEC_RESPONSE_H__
#define __ARC_SEC_RESPONSE_H__
#include <list>
#include <arc/XMLNode.h>
#include <arc/Logger.h>
#include "EvaluationCtx.h"
#include "policy/Policy.h"
namespace ArcSec {
typedef std::list<Policy*> Policies;
///Evaluation result concerning one RequestTuple
/**Include the RequestTuple, related XMLNode, the set of policy objects which give positive evaluation result, and the related XMLNode*/
class ResponseItem {
public:
ResponseItem():reqtp(NULL),res(DECISION_DENY){};
public:
//TODO: Convertion method to decrease memory consumption
RequestTuple* reqtp;
Result res;
Arc::XMLNode reqxml;
Policies pls;
std::list<Arc::XMLNode> plsxml;
};
class ResponseList {
public:
void addItem(ResponseItem* item) {
int n = (resps.size());
resps.insert(std::pair<int, ResponseItem*>(n, item));
};
int size() { return resps.size();};
ResponseItem* getItem(int n) { return resps[n]; };
ResponseItem* operator[](int n) { return resps[n]; };
bool empty() { return resps.empty(); };
void clear() {
std::map<int, ResponseItem*>::iterator it;
for(it = resps.begin(); it != resps.end();it = resps.begin()){
ResponseItem* item = it->second;
resps.erase(it);
if(item) {
RequestTuple* tpl = item->reqtp;
if(tpl) {
tpl->erase();
delete tpl;
};
delete item;
};
}
};
private:
std::map<int, ResponseItem*> resps;
};
///Container for the evaluation results
class Response {
private:
int request_size;
protected:
ResponseList rlist;
public:
void setRequestSize(int size) { request_size = size; };
int getRequestSize() { return request_size; };
virtual ResponseList& getResponseItems () { return rlist; };
virtual void setResponseItems (const ResponseList& rl) { rlist.clear(); rlist = rl; };
virtual void addResponseItem(ResponseItem* respitem){ rlist.addItem(respitem); };
virtual ~Response() { rlist.clear(); };
};
} // namespace ArcSec
#endif /* __ARC_SEC_RESPONSE_H__ */
|