<div>Hi all,</div><div><br></div><div>Questions:</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>1. How does a source&#39;s event handler accesses data returned by kevent?</div>
<div><br></div><div>Data returned by kevent will finally be recorded is ds_data field in _dispatch_source_latch_and_call. The event handler will be called with ds_handler_ctxt, which shoule be do_ctxt. &quot;do_ctxt&quot; can be set by function dispatch_set_context. The problem is:</div>



<div><ul><li>If a handler need to access ds_data, we have to set a proper do_ctxt (e.g. a do_ctxt of source). That&#39;s not convenient.</li><li>&quot;ds_data&quot; is a member of dispatch_source_t, and dispatch_source_t is an opaque struct to client code.</li>
</ul></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>2. We have custom source of type DISPATCH_SOURCE_TYPE_DATA_ADD and DISPATCH_SOURCE_TYPE_DATA_OR, and can use dispatch_source_merge_data</div>





<div>to fire custom sources. Why we don&#39;t have an &#39;is_level&#39; source? </div><div><br></div><div>An &quot;is_level&quot; source may not make much sense, but can be attached with cancel handler, this may be useful in some cases.</div>

</blockquote>
<div><br clear="all"><br>-- <br>Regards,<div><br><div>- cee1</div></div><br>
</div>