| // Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| // use this file except in compliance with the License. You may obtain a copy of |
| // the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| // License for the specific language governing permissions and limitations under |
| // the License. |
| |
| #ifndef ERLFDB_RESOURCES_H |
| #define ERLFDB_RESOURCES_H |
| |
| #include <stdbool.h> |
| |
| #include "erl_nif.h" |
| #include "fdb.h" |
| |
| |
| extern ErlNifResourceType* ErlFDBFutureRes; |
| extern ErlNifResourceType* ErlFDBDatabaseRes; |
| extern ErlNifResourceType* ErlFDBTransactionRes; |
| |
| |
| typedef enum _ErlFDBFutureType |
| { |
| ErlFDB_FT_NONE = 0, |
| ErlFDB_FT_VOID, |
| ErlFDB_FT_INT64, |
| ErlFDB_FT_KEY, |
| ErlFDB_FT_VALUE, |
| ErlFDB_FT_STRING_ARRAY, |
| ErlFDB_FT_KEYVALUE_ARRAY |
| } ErlFDBFutureType; |
| |
| |
| typedef struct _ErlFDBFuture |
| { |
| FDBFuture* future; |
| ErlFDBFutureType ftype; |
| ErlNifPid pid; |
| ErlNifEnv* pid_env; |
| ErlNifEnv* msg_env; |
| ERL_NIF_TERM msg_ref; |
| ErlNifMutex* lock; |
| bool cancelled; |
| } ErlFDBFuture; |
| |
| |
| typedef struct _ErlFDBDatabase |
| { |
| FDBDatabase* database; |
| } ErlFDBDatabase; |
| |
| |
| typedef struct _ErlFDBTransaction |
| { |
| FDBTransaction* transaction; |
| ERL_NIF_TERM owner; |
| unsigned int txid; |
| bool read_only; |
| bool writes_allowed; |
| bool has_watches; |
| } ErlFDBTransaction; |
| |
| |
| int erlfdb_init_resources(ErlNifEnv* env); |
| void erlfdb_future_dtor(ErlNifEnv* env, void* obj); |
| void erlfdb_database_dtor(ErlNifEnv* env, void* obj); |
| void erlfdb_transaction_dtor(ErlNifEnv* env, void* obj); |
| |
| |
| int erlfdb_transaction_is_owner(ErlNifEnv* env, ErlFDBTransaction* t); |
| |
| |
| #endif // Included resources.h |