Update all BIFs to return IntrusivePtr instead of Val*

This commit is contained in:
Jon Siwek 2020-04-08 20:46:40 -07:00
parent d7be84de97
commit 094d6de979
34 changed files with 275 additions and 281 deletions

View file

@ -24,9 +24,9 @@ EnumVal* query_status(bool success);
* @return a Broker::QueryResult value that has a Broker::QueryStatus indicating
* a failure.
*/
inline RecordVal* query_result()
inline IntrusivePtr<RecordVal> query_result()
{
auto rval = new RecordVal(BifType::Record::Broker::QueryResult);
auto rval = make_intrusive<RecordVal>(BifType::Record::Broker::QueryResult);
rval->Assign(0, query_status(false));
rval->Assign(1, make_intrusive<RecordVal>(BifType::Record::Broker::Data));
return rval;
@ -37,11 +37,11 @@ inline RecordVal* query_result()
* @return a Broker::QueryResult value that has a Broker::QueryStatus indicating
* a success.
*/
inline RecordVal* query_result(RecordVal* data)
inline IntrusivePtr<RecordVal> query_result(IntrusivePtr<RecordVal> data)
{
auto rval = new RecordVal(BifType::Record::Broker::QueryResult);
auto rval = make_intrusive<RecordVal>(BifType::Record::Broker::QueryResult);
rval->Assign(0, query_status(true));
rval->Assign(1, data);
rval->Assign(1, std::move(data));
return rval;
}
@ -62,19 +62,17 @@ public:
Unref(trigger);
}
void Result(RecordVal* result)
void Result(const IntrusivePtr<RecordVal>& result)
{
trigger->Cache(call, result);
trigger->Cache(call, result.get());
trigger->Release();
Unref(result);
}
void Abort()
{
auto result = query_result();
trigger->Cache(call, result);
trigger->Cache(call, result.get());
trigger->Release();
Unref(result);
}
bool Disabled() const