DSN_API dsn_task_t dsn_task_create_ex(dsn_task_code_t code, dsn_task_handler_t cb, dsn_task_cancelled_handler_t on_cancel, void* context, int hash, dsn_task_tracker_t tracker) { auto t = new ::dsn::task_c(code, cb, context, on_cancel, hash); t->set_tracker((dsn::task_tracker*)tracker); return t; }
DSN_API dsn_task_t dsn_task_create_timer(dsn_task_code_t code, dsn_task_handler_t cb, void* context, int hash, int interval_milliseconds, dsn_task_tracker_t tracker) { auto t = new ::dsn::timer_task(code, cb, context, nullptr, interval_milliseconds, hash); t->set_tracker((dsn::task_tracker*)tracker); return t; }
DSN_API dsn_task_t dsn_file_create_aio_task(dsn_task_code_t code, dsn_aio_handler_t cb, void* context, int hash, dsn_task_tracker_t tracker) { auto t = new ::dsn::aio_task(code, cb, context, nullptr, hash); t->set_tracker((dsn::task_tracker*)tracker); t->spec().on_task_create.execute(::dsn::task::get_current_task(), t); return t; }
DSN_API dsn_task_t dsn_rpc_create_response_task(dsn_message_t request, dsn_rpc_response_handler_t cb, void* context, int reply_thread_hash, dsn_task_tracker_t tracker) { auto msg = ((::dsn::message_ex*)request); auto t = new ::dsn::rpc_response_task(msg, cb, context, nullptr, reply_thread_hash); t->set_tracker((dsn::task_tracker*)tracker); return t; }
DSN_API dsn_task_t dsn_task_create_timer_ex(dsn_task_code_t code, dsn_task_handler_t cb, dsn_task_cancelled_handler_t on_cancel, void* context, int hash, int interval_milliseconds, dsn_task_tracker_t tracker) { auto t = new ::dsn::timer_task(code, cb, context, on_cancel, interval_milliseconds, hash); t->set_tracker((dsn::task_tracker*)tracker); t->spec().on_task_create.execute(::dsn::task::get_current_task(), t); return t; }
DSN_API dsn_task_t dsn_rpc_create_response_task_ex(dsn_message_t request, dsn_rpc_response_handler_t cb, dsn_task_cancelled_handler_t on_cancel, void* context, int reply_thread_hash, dsn_task_tracker_t tracker) { auto msg = ((::dsn::message_ex*)request); auto t = new ::dsn::rpc_response_task(msg, cb, context, on_cancel, reply_thread_hash); t->set_tracker((dsn::task_tracker*)tracker); t->spec().on_task_create.execute(::dsn::task::get_current_task(), t); return t; }
//------------------------------------------------------------------------------ // // tasking - asynchronous tasks and timers tasks executed in target thread pools // (configured in config files) // [task.RPC_PREPARE // // TODO: what can be configured for a task // // [threadpool.THREAD_POOL_REPLICATION] // // TODO: what can be configured for a thread pool // //------------------------------------------------------------------------------ DSN_API dsn_task_t dsn_task_create(dsn_task_code_t code, dsn_task_handler_t cb, void* context, int hash, dsn_task_tracker_t tracker) { auto t = new ::dsn::task_c(code, cb, context, nullptr, hash); t->set_tracker((dsn::task_tracker*)tracker); return t; }