implement transfers copy() less copy constructor

This commit is contained in:
woodser
2019-07-29 13:37:05 -04:00
parent 14dbe5d9de
commit 56c128d3ac
2 changed files with 12 additions and 16 deletions
+7 -11
View File
@@ -258,10 +258,6 @@ namespace monero {
throw runtime_error("MoneroTransfer deep copy constructor not implemented");
}
shared_ptr<MoneroTransfer> MoneroTransfer::copy() const {
//return make_shared<MoneroTransfer>(); // TODO: MoneroTransfer is abstract
}
boost::property_tree::ptree MoneroTransfer::toPropertyTree() const {
boost::property_tree::ptree node;
if (amount != boost::none) node.put("amount", *amount);
@@ -304,8 +300,8 @@ namespace monero {
throw runtime_error("MoneroIncomingTransfer deepy copy not implemented");
}
shared_ptr<MoneroIncomingTransfer> MoneroIncomingTransfer::copy() const {
return make_shared<MoneroIncomingTransfer>();
shared_ptr<MoneroTransfer> MoneroIncomingTransfer::copy() const {
return make_shared<MoneroIncomingTransfer>(*this);
}
boost::optional<bool> MoneroIncomingTransfer::getIsIncoming() const { return true; }
@@ -338,8 +334,8 @@ namespace monero {
throw runtime_error("MoneroOutgoingTransfer deep copy not implemented");
}
shared_ptr<MoneroOutgoingTransfer> MoneroOutgoingTransfer::copy() const {
return make_shared<MoneroOutgoingTransfer>();
shared_ptr<MoneroTransfer> MoneroOutgoingTransfer::copy() const {
return make_shared<MoneroOutgoingTransfer>(*this);
}
boost::optional<bool> MoneroOutgoingTransfer::getIsIncoming() const { return false; }
@@ -374,8 +370,8 @@ namespace monero {
throw runtime_error("MoneroTransferRequet deep copy not implemented");
}
shared_ptr<MoneroTransferRequest> MoneroTransferRequest::copy() const {
return make_shared<MoneroTransferRequest>();
shared_ptr<MoneroTransfer> MoneroTransferRequest::copy() const {
return make_shared<MoneroTransferRequest>(*this);
}
boost::optional<bool> MoneroTransferRequest::getIsIncoming() const { return isIncoming; }
@@ -394,7 +390,7 @@ namespace monero {
bool MoneroTransferRequest::meetsCriteria(MoneroTransfer* transfer) const {
if (transfer == nullptr) throw runtime_error("transfer is null");
if (txRequest != boost::none && (*txRequest)->transferRequest != boost::none) throw runtime_error("Transfer request's tx request cannot have a circular transfer request"); // TODO: could auto detect and handl this. port to java/js
if (txRequest != boost::none && (*txRequest)->transferRequest != boost::none) throw runtime_error("Transfer request's tx request cannot have a circular transfer request"); // TODO: could auto detect and handle this. port to java/js
// filter on common fields
if (getIsIncoming() != boost::none && *getIsIncoming() != *transfer->getIsIncoming()) return false;
+5 -5
View File
@@ -149,14 +149,14 @@ namespace monero {
MoneroTransfer();
MoneroTransfer(const MoneroTransfer& transfer); // deep copy constructor
shared_ptr<MoneroTransfer> copy() const;
virtual shared_ptr<MoneroTransfer> copy() const = 0; // derived class must implement
virtual boost::optional<bool> getIsIncoming() const = 0; // derived class must implement
boost::optional<bool> getIsOutgoing() const {
if (getIsIncoming() == boost::none) return boost::none;
return !(*getIsIncoming());
}
boost::property_tree::ptree toPropertyTree() const;
virtual void merge(const shared_ptr<MoneroTransfer>& self, const shared_ptr<MoneroTransfer>& other);
void merge(const shared_ptr<MoneroTransfer>& self, const shared_ptr<MoneroTransfer>& other);
};
/**
@@ -168,7 +168,7 @@ namespace monero {
MoneroIncomingTransfer();
MoneroIncomingTransfer(const MoneroIncomingTransfer& transfer); // deep copy constructor
shared_ptr<MoneroIncomingTransfer> copy() const;
shared_ptr<MoneroTransfer> copy() const;
boost::optional<bool> getIsIncoming() const;
boost::property_tree::ptree toPropertyTree() const;
void merge(const shared_ptr<MoneroTransfer>& self, const shared_ptr<MoneroTransfer>& other);
@@ -185,7 +185,7 @@ namespace monero {
MoneroOutgoingTransfer();
MoneroOutgoingTransfer(const MoneroOutgoingTransfer& transfer);
shared_ptr<MoneroOutgoingTransfer> copy() const;
shared_ptr<MoneroTransfer> copy() const;
boost::optional<bool> getIsIncoming() const;
boost::property_tree::ptree toPropertyTree() const;
void merge(const shared_ptr<MoneroTransfer>& self, const shared_ptr<MoneroTransfer>& other);
@@ -209,7 +209,7 @@ namespace monero {
MoneroTransferRequest();
MoneroTransferRequest(const MoneroTransferRequest& request);
shared_ptr<MoneroTransferRequest> copy() const;
shared_ptr<MoneroTransfer> copy() const;
boost::optional<bool> getIsIncoming() const;
boost::property_tree::ptree toPropertyTree() const;
bool meetsCriteria(MoneroTransfer* transfer) const;