// Handle input from Erlang VM static void outputv(ErlDrvData handle, ErlIOVec *ev) { bdb_drv_t* pdrv = (bdb_drv_t*) handle; ErlDrvBinary* data = ev->binv[1]; int command = data->orig_bytes[0]; // First byte is the command switch(command) { case 'O': process_open(pdrv, ev); break; case 'S': process_set(pdrv, ev); break; case 'G': process_get(pdrv, ev); break; case 'D': process_del(pdrv, ev); break; case 'C': process_count(pdrv, ev); break; case 'F': process_flush(pdrv, ev); break; case 'B': process_bulk_get(pdrv, ev); break; case 'Z': process_compact(pdrv, ev); break; case 'T': process_truncate(pdrv, ev); break; default: process_unkown(pdrv, ev); } }
/*release system resource*/ void flush_sys(void){ /*release the timeout client*/ clt_flush(); /*release the timeout process method*/ process_flush(); }