Deprecate OpaqueVal/HashVal ctors that take OpaqueType*

Replaced with ones that take IntrusivePtr
This commit is contained in:
Jon Siwek 2020-05-14 23:31:47 -07:00
parent 8fc89491bf
commit 4a2221b878
9 changed files with 62 additions and 61 deletions

View file

@ -37,9 +37,11 @@ OpaqueMgr* OpaqueMgr::mgr()
return &mgr; return &mgr;
} }
OpaqueVal::OpaqueVal(OpaqueType* t) : Val(IntrusivePtr{NewRef{}, t}) OpaqueVal::OpaqueVal(OpaqueType* t) : OpaqueVal({NewRef{}, t})
{ {}
}
OpaqueVal::OpaqueVal(IntrusivePtr<OpaqueType> t) : Val(std::move(t))
{}
OpaqueVal::~OpaqueVal() OpaqueVal::~OpaqueVal()
{ {
@ -204,11 +206,14 @@ IntrusivePtr<StringVal> HashVal::DoGet()
return val_mgr->EmptyString(); return val_mgr->EmptyString();
} }
HashVal::HashVal(OpaqueType* t) : OpaqueVal(t) HashVal::HashVal(IntrusivePtr<OpaqueType> t) : OpaqueVal(std::move(t))
{ {
valid = false; valid = false;
} }
HashVal::HashVal(OpaqueType* t) : HashVal({NewRef{}, t})
{}
MD5Val::MD5Val() : HashVal(md5_type) MD5Val::MD5Val() : HashVal(md5_type)
{ {
} }
@ -700,14 +705,6 @@ BloomFilterVal::BloomFilterVal()
bloom_filter = nullptr; bloom_filter = nullptr;
} }
BloomFilterVal::BloomFilterVal(OpaqueType* t)
: OpaqueVal(t)
{
type = nullptr;
hash = nullptr;
bloom_filter = nullptr;
}
BloomFilterVal::BloomFilterVal(probabilistic::BloomFilter* bf) BloomFilterVal::BloomFilterVal(probabilistic::BloomFilter* bf)
: OpaqueVal(bloomfilter_type) : OpaqueVal(bloomfilter_type)
{ {

View file

@ -87,7 +87,9 @@ private:
*/ */
class OpaqueVal : public Val { class OpaqueVal : public Val {
public: public:
[[deprecated("Remove in v4.1. Construct from IntrusivePtr instead.")]]
explicit OpaqueVal(OpaqueType* t); explicit OpaqueVal(OpaqueType* t);
explicit OpaqueVal(IntrusivePtr<OpaqueType> t);
~OpaqueVal() override; ~OpaqueVal() override;
/** /**
@ -183,7 +185,10 @@ protected:
static void digest_one(EVP_MD_CTX* h, const IntrusivePtr<Val>& v); static void digest_one(EVP_MD_CTX* h, const IntrusivePtr<Val>& v);
HashVal() { valid = false; } HashVal() { valid = false; }
[[deprecated("Remove in v4.1. Construct from IntrusivePtr instead.")]]
explicit HashVal(OpaqueType* t); explicit HashVal(OpaqueType* t);
explicit HashVal(IntrusivePtr<OpaqueType> t);
virtual bool DoInit(); virtual bool DoInit();
virtual bool DoFeed(const void* data, size_t size); virtual bool DoFeed(const void* data, size_t size);
@ -314,7 +319,6 @@ public:
protected: protected:
friend class Val; friend class Val;
BloomFilterVal(); BloomFilterVal();
explicit BloomFilterVal(OpaqueType* t);
DECLARE_OPAQUE_VALUE(BloomFilterVal) DECLARE_OPAQUE_VALUE(BloomFilterVal)
private: private:

View file

@ -769,16 +769,16 @@ protected:
IntrusivePtr<BroType> yield_type; IntrusivePtr<BroType> yield_type;
}; };
extern OpaqueType* md5_type; extern IntrusivePtr<OpaqueType> md5_type;
extern OpaqueType* sha1_type; extern IntrusivePtr<OpaqueType> sha1_type;
extern OpaqueType* sha256_type; extern IntrusivePtr<OpaqueType> sha256_type;
extern OpaqueType* entropy_type; extern IntrusivePtr<OpaqueType> entropy_type;
extern OpaqueType* cardinality_type; extern IntrusivePtr<OpaqueType> cardinality_type;
extern OpaqueType* topk_type; extern IntrusivePtr<OpaqueType> topk_type;
extern OpaqueType* bloomfilter_type; extern IntrusivePtr<OpaqueType> bloomfilter_type;
extern OpaqueType* x509_opaque_type; extern IntrusivePtr<OpaqueType> x509_opaque_type;
extern OpaqueType* ocsp_resp_opaque_type; extern IntrusivePtr<OpaqueType> ocsp_resp_opaque_type;
extern OpaqueType* paraglob_type; extern IntrusivePtr<OpaqueType> paraglob_type;
// Returns the basic (non-parameterized) type with the given type. // Returns the basic (non-parameterized) type with the given type.
const IntrusivePtr<BroType>& base_type(TypeTag tag); const IntrusivePtr<BroType>& base_type(TypeTag tag);

View file

@ -17,11 +17,11 @@
using namespace std; using namespace std;
OpaqueType* bro_broker::opaque_of_data_type; IntrusivePtr<OpaqueType> bro_broker::opaque_of_data_type;
OpaqueType* bro_broker::opaque_of_set_iterator; IntrusivePtr<OpaqueType> bro_broker::opaque_of_set_iterator;
OpaqueType* bro_broker::opaque_of_table_iterator; IntrusivePtr<OpaqueType> bro_broker::opaque_of_table_iterator;
OpaqueType* bro_broker::opaque_of_vector_iterator; IntrusivePtr<OpaqueType> bro_broker::opaque_of_vector_iterator;
OpaqueType* bro_broker::opaque_of_record_iterator; IntrusivePtr<OpaqueType> bro_broker::opaque_of_record_iterator;
BroType* bro_broker::DataVal::script_data_type = nullptr; BroType* bro_broker::DataVal::script_data_type = nullptr;

View file

@ -12,11 +12,11 @@ class ODesc;
namespace bro_broker { namespace bro_broker {
extern OpaqueType* opaque_of_data_type; extern IntrusivePtr<OpaqueType> opaque_of_data_type;
extern OpaqueType* opaque_of_set_iterator; extern IntrusivePtr<OpaqueType> opaque_of_set_iterator;
extern OpaqueType* opaque_of_table_iterator; extern IntrusivePtr<OpaqueType> opaque_of_table_iterator;
extern OpaqueType* opaque_of_vector_iterator; extern IntrusivePtr<OpaqueType> opaque_of_vector_iterator;
extern OpaqueType* opaque_of_record_iterator; extern IntrusivePtr<OpaqueType> opaque_of_record_iterator;
/** /**
* Convert a broker port protocol to a bro port protocol. * Convert a broker port protocol to a bro port protocol.

View file

@ -151,12 +151,12 @@ void Manager::InitPostScript()
log_id_type = zeek::id::find_type("Log::ID")->AsEnumType(); log_id_type = zeek::id::find_type("Log::ID")->AsEnumType();
writer_id_type = zeek::id::find_type("Log::Writer")->AsEnumType(); writer_id_type = zeek::id::find_type("Log::Writer")->AsEnumType();
opaque_of_data_type = new OpaqueType("Broker::Data"); opaque_of_data_type = make_intrusive<OpaqueType>("Broker::Data");
opaque_of_set_iterator = new OpaqueType("Broker::SetIterator"); opaque_of_set_iterator = make_intrusive<OpaqueType>("Broker::SetIterator");
opaque_of_table_iterator = new OpaqueType("Broker::TableIterator"); opaque_of_table_iterator = make_intrusive<OpaqueType>("Broker::TableIterator");
opaque_of_vector_iterator = new OpaqueType("Broker::VectorIterator"); opaque_of_vector_iterator = make_intrusive<OpaqueType>("Broker::VectorIterator");
opaque_of_record_iterator = new OpaqueType("Broker::RecordIterator"); opaque_of_record_iterator = make_intrusive<OpaqueType>("Broker::RecordIterator");
opaque_of_store_handle = new OpaqueType("Broker::Store"); opaque_of_store_handle = make_intrusive<OpaqueType>("Broker::Store");
vector_of_data_type = make_intrusive<VectorType>(zeek::id::find_type("Broker::Data")); vector_of_data_type = make_intrusive<VectorType>(zeek::id::find_type("Broker::Data"));
// Register as a "dont-count" source first, we may change that later. // Register as a "dont-count" source first, we may change that later.

View file

@ -5,7 +5,7 @@
namespace bro_broker { namespace bro_broker {
OpaqueType* opaque_of_store_handle; IntrusivePtr<OpaqueType> opaque_of_store_handle;
EnumVal* query_status(bool success) EnumVal* query_status(bool success)
{ {

View file

@ -11,7 +11,7 @@
namespace bro_broker { namespace bro_broker {
extern OpaqueType* opaque_of_store_handle; extern IntrusivePtr<OpaqueType> opaque_of_store_handle;
/** /**
* Create a Broker::QueryStatus value. * Create a Broker::QueryStatus value.

View file

@ -113,16 +113,16 @@ vector<string> params;
set<string> requested_plugins; set<string> requested_plugins;
const char* proc_status_file = nullptr; const char* proc_status_file = nullptr;
OpaqueType* md5_type = nullptr; IntrusivePtr<OpaqueType> md5_type;
OpaqueType* sha1_type = nullptr; IntrusivePtr<OpaqueType> sha1_type;
OpaqueType* sha256_type = nullptr; IntrusivePtr<OpaqueType> sha256_type;
OpaqueType* entropy_type = nullptr; IntrusivePtr<OpaqueType> entropy_type;
OpaqueType* cardinality_type = nullptr; IntrusivePtr<OpaqueType> cardinality_type;
OpaqueType* topk_type = nullptr; IntrusivePtr<OpaqueType> topk_type;
OpaqueType* bloomfilter_type = nullptr; IntrusivePtr<OpaqueType> bloomfilter_type;
OpaqueType* x509_opaque_type = nullptr; IntrusivePtr<OpaqueType> x509_opaque_type;
OpaqueType* ocsp_resp_opaque_type = nullptr; IntrusivePtr<OpaqueType> ocsp_resp_opaque_type;
OpaqueType* paraglob_type = nullptr; IntrusivePtr<OpaqueType> paraglob_type;
// Keep copy of command line // Keep copy of command line
int bro_argc; int bro_argc;
@ -592,16 +592,16 @@ zeek::detail::SetupResult zeek::detail::setup(int argc, char** argv,
init_event_handlers(); init_event_handlers();
md5_type = new OpaqueType("md5"); md5_type = make_intrusive<OpaqueType>("md5");
sha1_type = new OpaqueType("sha1"); sha1_type = make_intrusive<OpaqueType>("sha1");
sha256_type = new OpaqueType("sha256"); sha256_type = make_intrusive<OpaqueType>("sha256");
entropy_type = new OpaqueType("entropy"); entropy_type = make_intrusive<OpaqueType>("entropy");
cardinality_type = new OpaqueType("cardinality"); cardinality_type = make_intrusive<OpaqueType>("cardinality");
topk_type = new OpaqueType("topk"); topk_type = make_intrusive<OpaqueType>("topk");
bloomfilter_type = new OpaqueType("bloomfilter"); bloomfilter_type = make_intrusive<OpaqueType>("bloomfilter");
x509_opaque_type = new OpaqueType("x509"); x509_opaque_type = make_intrusive<OpaqueType>("x509");
ocsp_resp_opaque_type = new OpaqueType("ocsp_resp"); ocsp_resp_opaque_type = make_intrusive<OpaqueType>("ocsp_resp");
paraglob_type = new OpaqueType("paraglob"); paraglob_type = make_intrusive<OpaqueType>("paraglob");
// The leak-checker tends to produce some false // The leak-checker tends to produce some false
// positives (memory which had already been // positives (memory which had already been