Hi Bart,

This is a great idea, but my first reaction was that maybe the handler should 
be called "now" (that is the Timestamp method's name).  Do you agree or 
disagree?  Let me know!

Eddie


Bart Braem wrote:
> Hello,
> 
> We discovered that having a time read handler would be interesting in  
> Script elements. You could then do things like:
> 
> q :: Queue;
> ICMPPingSource(1.2.3.4, 2.3.4.5) -> q;
> q-> Discard;
> rtt :: Script(label start, set y $(q.length), set x $(time), print $x  
> --- Q size: $y , wait 2, goto start);
> 
> The patch to include this in Script is as follows (output of git diff):
> 
> diff --git a/elements/standard/script.cc b/elements/standard/script.cc
> index f450d1f..042b8ac 100644
> --- a/elements/standard/script.cc
> +++ b/elements/standard/script.cc
> @@ -627,7 +627,7 @@ Script::Expander::expand(const String &vname, int  
> vartype, int quote, StringAccu
> 
>   enum {
>       ST_STEP = 0, ST_RUN, ST_GOTO,
> -    AR_ADD = 0, AR_SUB, AR_MUL, AR_DIV, AR_IDIV,
> +    AR_ADD = 0, AR_SUB, AR_MUL, AR_DIV, AR_IDIV, AR_TIME,
>       AR_LT, AR_EQ, AR_GT, AR_GE, AR_NE, AR_LE, // order is important
>       AR_FIRST, AR_NOT, AR_SPRINTF, ar_random
>   };
> @@ -774,6 +774,10 @@ Script::arithmetic_handler(int, String &str,  
> Element *e, const Handler *h, Error
>          return 0;
>       }
> 
> +    case AR_TIME:
> +       str = Timestamp::now().unparse();
> +       return 0;
> +
>       case AR_LT:
>       case AR_EQ:
>       case AR_GT:
> @@ -948,6 +952,7 @@ Script::add_handlers()
>       set_handler("ne", Handler::OP_READ | Handler::READ_PARAM,  
> arithmetic_handler, AR_NE, 0);
>       set_handler("gt", Handler::OP_READ | Handler::READ_PARAM,  
> arithmetic_handler, AR_GT, 0);
>       set_handler("ge", Handler::OP_READ | Handler::READ_PARAM,  
> arithmetic_handler, AR_GE, 0);
> +    set_handler("time", Handler::OP_READ | Handler::READ_PARAM,   
> arithmetic_handler, AR_TIME, 0);
>       set_handler("lt", Handler::OP_READ | Handler::READ_PARAM,  
> arithmetic_handler, AR_LT, 0);
>       set_handler("le", Handler::OP_READ | Handler::READ_PARAM,  
> arithmetic_handler, AR_LE, 0);
>       set_handler("not", Handler::OP_READ | Handler::READ_PARAM,  
> arithmetic_handler, AR_NOT, 0);
> 
> We have patches for Click-1.5 and Click-1.6 as well.
> 
> Regards,
> Bart

_______________________________________________
click mailing list
[email protected]
https://amsterdam.lcs.mit.edu/mailman/listinfo/click

Reply via email to