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;
}
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()
{
@ -204,11 +206,14 @@ IntrusivePtr<StringVal> HashVal::DoGet()
return val_mgr->EmptyString();
}
HashVal::HashVal(OpaqueType* t) : OpaqueVal(t)
HashVal::HashVal(IntrusivePtr<OpaqueType> t) : OpaqueVal(std::move(t))
{
valid = false;
}
HashVal::HashVal(OpaqueType* t) : HashVal({NewRef{}, t})
{}
MD5Val::MD5Val() : HashVal(md5_type)
{
}
@ -700,14 +705,6 @@ BloomFilterVal::BloomFilterVal()
bloom_filter = nullptr;
}
BloomFilterVal::BloomFilterVal(OpaqueType* t)
: OpaqueVal(t)
{
type = nullptr;
hash = nullptr;
bloom_filter = nullptr;
}
BloomFilterVal::BloomFilterVal(probabilistic::BloomFilter* bf)
: OpaqueVal(bloomfilter_type)
{

View file

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

View file

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

View file

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

View file

@ -12,11 +12,11 @@ class ODesc;
namespace bro_broker {
extern OpaqueType* opaque_of_data_type;
extern OpaqueType* opaque_of_set_iterator;
extern OpaqueType* opaque_of_table_iterator;
extern OpaqueType* opaque_of_vector_iterator;
extern OpaqueType* opaque_of_record_iterator;
extern IntrusivePtr<OpaqueType> opaque_of_data_type;
extern IntrusivePtr<OpaqueType> opaque_of_set_iterator;
extern IntrusivePtr<OpaqueType> opaque_of_table_iterator;
extern IntrusivePtr<OpaqueType> opaque_of_vector_iterator;
extern IntrusivePtr<OpaqueType> opaque_of_record_iterator;
/**
* 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();
writer_id_type = zeek::id::find_type("Log::Writer")->AsEnumType();
opaque_of_data_type = new OpaqueType("Broker::Data");
opaque_of_set_iterator = new OpaqueType("Broker::SetIterator");
opaque_of_table_iterator = new OpaqueType("Broker::TableIterator");
opaque_of_vector_iterator = new OpaqueType("Broker::VectorIterator");
opaque_of_record_iterator = new OpaqueType("Broker::RecordIterator");
opaque_of_store_handle = new OpaqueType("Broker::Store");
opaque_of_data_type = make_intrusive<OpaqueType>("Broker::Data");
opaque_of_set_iterator = make_intrusive<OpaqueType>("Broker::SetIterator");
opaque_of_table_iterator = make_intrusive<OpaqueType>("Broker::TableIterator");
opaque_of_vector_iterator = make_intrusive<OpaqueType>("Broker::VectorIterator");
opaque_of_record_iterator = make_intrusive<OpaqueType>("Broker::RecordIterator");
opaque_of_store_handle = make_intrusive<OpaqueType>("Broker::Store");
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.

View file

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

View file

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

View file

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