From 71f64d96666d2ceaca2f19613434b5f3c3d54a15 Mon Sep 17 00:00:00 2001 From: Phillip Toland Date: Wed, 10 Dec 2008 17:12:16 -0600 Subject: [PATCH] Added flags for the txn_commit function. --- c_src/bdberl_drv.c | 8 +++++++- src/bdberl_port.erl | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/c_src/bdberl_drv.c b/c_src/bdberl_drv.c index 1e40888..b4d99e9 100644 --- a/c_src/bdberl_drv.c +++ b/c_src/bdberl_drv.c @@ -290,6 +290,11 @@ static int bdberl_drv_control(ErlDrvData handle, unsigned int cmd, AsyncData* adata = zalloc(sizeof(AsyncData)); adata->port = d; + if (cmd == CMD_TXN_COMMIT) + { + adata->payload = (void*) UNPACK_INT(inbuf, 0); + } + // Update port data to indicate we have an operation in progress d->async_op = cmd; @@ -670,7 +675,8 @@ static void do_async_txnop(void* arg) AsyncData* adata = (AsyncData*)arg; if (adata->port->async_op == CMD_TXN_COMMIT) { - adata->rc = adata->port->txn->commit(adata->port->txn, 0); + unsigned flags = (unsigned) adata->payload; + adata->rc = adata->port->txn->commit(adata->port->txn, flags); } else { diff --git a/src/bdberl_port.erl b/src/bdberl_port.erl index 8ff421a..5ecc924 100644 --- a/src/bdberl_port.erl +++ b/src/bdberl_port.erl @@ -300,7 +300,12 @@ txn_begin(Port, Opts) -> end. txn_commit(Port) -> - <> = erlang:port_control(Port, ?CMD_TXN_COMMIT, <<>>), + txn_commit(Port, []). + +txn_commit(Port, Opts) -> + Flags = process_flags(Opts), + Cmd = <>, + <> = erlang:port_control(Port, ?CMD_TXN_COMMIT, Cmd), case Result of ?ERROR_NONE -> receive