public extern static void dsn_msg_query_request(dsn_message_t msg, out int ptimeout_milliseconds, out int phash);
public extern static bool dsn_msg_read_next(dsn_message_t msg, out IntPtr ptr, out size_t size);
public extern static dsn_message_t dsn_msg_create_response(dsn_message_t request);
public extern static void dsn_msg_release_ref(dsn_message_t msg);
public static extern ulong dsn_msg_to_address(dsn_message_t msg);
public static extern void dsn_rpc_reply(dsn_message_t response, dsn_error_t err);
public static extern dsn_message_t dsn_msg_create_response(dsn_message_t request);
public extern static dsn_message_t dsn_rpc_call_wait(dsn_address_t server, dsn_message_t request); // returned msg must be explicitly msg_release_ref
public extern static dsn_task_t dsn_rpc_create_response_task(dsn_message_t request, dsn_rpc_response_handler_t cb, IntPtr param, int reply_hash);
public extern static void dsn_rpc_reply(dsn_message_t response);
public extern static void dsn_msg_to_address(dsn_message_t msg, out dsn_address_t ep);
public extern static void dsn_msg_write_commit(dsn_message_t msg, size_t size);
public extern static size_t dsn_msg_body_size(dsn_message_t msg);
public static extern void dsn_msg_add_ref(dsn_message_t msg);
public extern static dsn_address_t dsn_msg_to_address(dsn_message_t msg);
public static extern void dsn_msg_release_ref(dsn_message_t msg);
public static extern void dsn_msg_update_request(dsn_message_t msg, int timeout_milliseconds, int hash);
public static extern void dsn_rpc_call_one_way(dsn_address_t server, dsn_message_t request);
public static extern void dsn_msg_query_request(dsn_message_t msg, out int ptimeout_milliseconds, out int phash);
public static extern void dsn_rpc_enqueue_response(dsn_task_t rpc_call, dsn_error_t err, dsn_message_t response);
public static extern void dsn_msg_write_next(dsn_message_t msg, out IntPtr ptr, out size_t size, size_t min_size);
public extern static void dsn_msg_add_ref(dsn_message_t msg);
public static extern bool dsn_msg_read_next(dsn_message_t msg, out IntPtr ptr, out size_t size);
public extern static void dsn_msg_update_request(dsn_message_t msg, int timeout_milliseconds, int hash);
public static extern void dsn_msg_read_commit(dsn_message_t msg, size_t size);
public extern static void dsn_msg_write_next(dsn_message_t msg, out IntPtr ptr, out size_t size, size_t min_size);
public static extern size_t dsn_msg_body_size(dsn_message_t msg);
public extern static void dsn_msg_read_commit(dsn_message_t msg, size_t size);
public static extern IntPtr dsn_msg_rw_ptr(dsn_message_t msg, size_t offset_begin);
public extern static IntPtr dsn_msg_rw_ptr(dsn_message_t msg, size_t offset_begin);
public extern static dsn_task_t dsn_rpc_create_response_task(dsn_message_t request, dsn_rpc_response_handler_t cb, IntPtr param, int reply_hash, dsn_task_tracker_t tracker = default(dsn_task_tracker_t));
public static extern dsn_task_t dsn_rpc_create_response_task(dsn_message_t request, dsn_rpc_response_handler_t cb, IntPtr param, int reply_thread_hash, dsn_task_tracker_t tracker = default(dsn_task_tracker_t));
public extern static void dsn_rpc_call_one_way(dsn_address_t server, dsn_message_t request);
public static extern dsn_message_t dsn_rpc_call_wait(dsn_address_t server, dsn_message_t request); // returned msg must be explicitly msg_release_ref
public extern static void dsn_rpc_enqueue_response(dsn_task_t rpc_call, dsn_error_t err, dsn_message_t response);
public static extern void dsn_msg_write_commit(dsn_message_t msg, size_t size);