Re: callout and callout_func

2016-05-06 Thread Christopher Collins
I also prefer #2.

Chris

On Fri, May 06, 2016 at 11:31:03AM -0700, will sanfilippo wrote:
> My vote would be #2 as well.
> 
> 
> > On May 6, 2016, at 11:29 AM, marko kiiskila <ma...@runtime.io> wrote:
> > 
> > Hi,
> > 
> >> On May 5, 2016, at 10:47 AM, Sterling Hughes <sterl...@apache.org> wrote:
> >> 
> >> Salutations,
> >> 
> >> As I've been going through the callout implementation, one thing I've 
> >> noticed is that callouts and callout_funcs can't be interleaved.
> >> 
> >> The implementation of a callout, is that it has an event as the first 
> >> element of the structure.  When that event is posted to an event queue, it 
> >> is posted with the event type EVENT_T_TIMER, which is reserved for 
> >> callouts.  However, you must know a priori what type of callout it is, a 
> >> callout, or a callout_func.
> >> 
> >> I don't think this behavior is ideal, and there are a couple of options 
> >> for fixing it:
> >> 
> >> 1- Break out EVENT_T_TIMER into EVENT_T_TIMER (callout) and 
> >> EVENT_T_TIMER_FUNC (callout_func).
> >> 
> >> 2- Remove the concept of callout, and just have callout_func. callout_func 
> >> is by far the more useful of the two.
> >> 
> >> 3- Add a flags field to callout, which will tell you whether its a callout 
> >> or a callout_func.
> >> 
> >> I'm leaning towards either #2 or #3 here, because I think the first one 
> >> will end up being confusing when debugging things.  "Oh no, I put TIMER 
> >> instead of TIMER_FUNC. GRR."  My personal preference is #2, but I'm not 
> >> sure everyone wants to be forced to have a function per-timer in their 
> >> task context.
> >> 
> >> Thoughts?
> > 
> > I would prefer #2, as that would simplify the concept.
> > 
> > Also, while you have that file cracked open, cf_arg from within 
> > os_callout_func could be removed.
> > os_callout includes os_event, and that structure already has a void * which 
> > could be used as callout_func
> > argument.
> > —
> > M
> 


Re: callout and callout_func

2016-05-06 Thread will sanfilippo
My vote would be #2 as well.


> On May 6, 2016, at 11:29 AM, marko kiiskila <ma...@runtime.io> wrote:
> 
> Hi,
> 
>> On May 5, 2016, at 10:47 AM, Sterling Hughes <sterl...@apache.org> wrote:
>> 
>> Salutations,
>> 
>> As I've been going through the callout implementation, one thing I've 
>> noticed is that callouts and callout_funcs can't be interleaved.
>> 
>> The implementation of a callout, is that it has an event as the first 
>> element of the structure.  When that event is posted to an event queue, it 
>> is posted with the event type EVENT_T_TIMER, which is reserved for callouts. 
>>  However, you must know a priori what type of callout it is, a callout, or a 
>> callout_func.
>> 
>> I don't think this behavior is ideal, and there are a couple of options for 
>> fixing it:
>> 
>> 1- Break out EVENT_T_TIMER into EVENT_T_TIMER (callout) and 
>> EVENT_T_TIMER_FUNC (callout_func).
>> 
>> 2- Remove the concept of callout, and just have callout_func. callout_func 
>> is by far the more useful of the two.
>> 
>> 3- Add a flags field to callout, which will tell you whether its a callout 
>> or a callout_func.
>> 
>> I'm leaning towards either #2 or #3 here, because I think the first one will 
>> end up being confusing when debugging things.  "Oh no, I put TIMER instead 
>> of TIMER_FUNC. GRR."  My personal preference is #2, but I'm not sure 
>> everyone wants to be forced to have a function per-timer in their task 
>> context.
>> 
>> Thoughts?
> 
> I would prefer #2, as that would simplify the concept.
> 
> Also, while you have that file cracked open, cf_arg from within 
> os_callout_func could be removed.
> os_callout includes os_event, and that structure already has a void * which 
> could be used as callout_func
> argument.
> —
> M



Re: callout and callout_func

2016-05-06 Thread marko kiiskila
Hi,

> On May 5, 2016, at 10:47 AM, Sterling Hughes <sterl...@apache.org> wrote:
> 
> Salutations,
> 
> As I've been going through the callout implementation, one thing I've noticed 
> is that callouts and callout_funcs can't be interleaved.
> 
> The implementation of a callout, is that it has an event as the first element 
> of the structure.  When that event is posted to an event queue, it is posted 
> with the event type EVENT_T_TIMER, which is reserved for callouts.  However, 
> you must know a priori what type of callout it is, a callout, or a 
> callout_func.
> 
> I don't think this behavior is ideal, and there are a couple of options for 
> fixing it:
> 
> 1- Break out EVENT_T_TIMER into EVENT_T_TIMER (callout) and 
> EVENT_T_TIMER_FUNC (callout_func).
> 
> 2- Remove the concept of callout, and just have callout_func. callout_func is 
> by far the more useful of the two.
> 
> 3- Add a flags field to callout, which will tell you whether its a callout or 
> a callout_func.
> 
> I'm leaning towards either #2 or #3 here, because I think the first one will 
> end up being confusing when debugging things.  "Oh no, I put TIMER instead of 
> TIMER_FUNC. GRR."  My personal preference is #2, but I'm not sure everyone 
> wants to be forced to have a function per-timer in their task context.
> 
> Thoughts?

I would prefer #2, as that would simplify the concept.

Also, while you have that file cracked open, cf_arg from within os_callout_func 
could be removed.
os_callout includes os_event, and that structure already has a void * which 
could be used as callout_func
argument.
—
M