|
|
@ -76,6 +76,9 @@ ERL_NIF_TERM nifNew(ErlNifEnv *env, int, const ERL_NIF_TERM *) { |
|
|
|
if (ObjIns == NULL) |
|
|
|
return atomNewErr; |
|
|
|
|
|
|
|
if (*ObjIns == NULL) |
|
|
|
return atomNewErr; |
|
|
|
|
|
|
|
ERL_NIF_TERM RefTerm = enif_make_resource(env, ObjIns); |
|
|
|
enif_release_resource(ObjIns); |
|
|
|
return enif_make_tuple2(env, atomOk, RefTerm); |
|
|
@ -90,13 +93,16 @@ ERL_NIF_TERM nifDel1(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]) { |
|
|
|
return enif_make_badarg(env); |
|
|
|
} |
|
|
|
|
|
|
|
if (NULL != ObjIns) { |
|
|
|
ErlNifBinary TermBin; |
|
|
|
while ((*ObjIns)->try_dequeue(TermBin)) { |
|
|
|
enif_release_binary(&TermBin); |
|
|
|
if (NULL != ObjIns && NULL != *ObjIns) { |
|
|
|
std::vector <ErlNifBinary> TermBinList(20); |
|
|
|
size_t OutSize = (*ObjIns)->try_dequeue_bulk(TermBinList.begin(), TermBinList.size()); |
|
|
|
|
|
|
|
for (int i = OutSize - 1; i >= 0; i--) { |
|
|
|
enif_release_binary(&TermBinList[i]); |
|
|
|
} |
|
|
|
|
|
|
|
delete ObjIns; |
|
|
|
delete (*ObjIns); |
|
|
|
*ObjIns = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
return atomOk; |
|
|
@ -107,7 +113,7 @@ ERL_NIF_TERM nifIn2(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]) { |
|
|
|
|
|
|
|
lfqIns *ObjIns = NULL; |
|
|
|
|
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns)) { |
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns) || NULL == *ObjIns) { |
|
|
|
return enif_make_badarg(env); |
|
|
|
} |
|
|
|
|
|
|
@ -128,7 +134,7 @@ ERL_NIF_TERM nifIns2(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]) { |
|
|
|
|
|
|
|
lfqIns *ObjIns = NULL; |
|
|
|
|
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns)) { |
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns) || NULL == *ObjIns) { |
|
|
|
return enif_make_badarg(env); |
|
|
|
} |
|
|
|
|
|
|
@ -171,7 +177,7 @@ ERL_NIF_TERM nifTryOut1(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]) { |
|
|
|
ErlNifResourceType *ResIns = static_cast<ErlNifResourceType *>(enif_priv_data(env)); |
|
|
|
lfqIns *ObjIns = NULL; |
|
|
|
|
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns)) { |
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns) || NULL == *ObjIns) { |
|
|
|
return enif_make_badarg(env); |
|
|
|
} |
|
|
|
|
|
|
@ -195,7 +201,7 @@ ERL_NIF_TERM nifTryOuts2(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]) { |
|
|
|
ErlNifResourceType *ResIns = static_cast<ErlNifResourceType *>(enif_priv_data(env)); |
|
|
|
lfqIns *ObjIns = NULL; |
|
|
|
|
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns)) { |
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns) || NULL == *ObjIns) { |
|
|
|
return enif_make_badarg(env); |
|
|
|
} |
|
|
|
|
|
|
@ -225,7 +231,7 @@ ERL_NIF_TERM nifSize1(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]) { |
|
|
|
ErlNifResourceType *ResIns = static_cast<ErlNifResourceType *>(enif_priv_data(env)); |
|
|
|
lfqIns *ObjIns = NULL; |
|
|
|
|
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns)) { |
|
|
|
if (!enif_get_resource(env, argv[0], ResIns, (void **) &ObjIns) || NULL == *ObjIns) { |
|
|
|
return enif_make_badarg(env); |
|
|
|
} |
|
|
|
|
|
|
|