[Zeek-Dev] support for event handlers using a subset of parameters
Jon Siwek
jsiwek at corelight.com
Wed Feb 6 07:48:27 PST 2019
On Tue, Feb 5, 2019 at 7:40 PM Robin Sommer <robin at corelight.com> wrote:
> The following would be even worst in terms of confusion:
>
> global my_event: event(a: string, b: string);
> event my_event(b: string)
>
> Now I need to know if the language goes by order of parameters or by
> parameter name.
The issue may be exaggerated because we're using contrived parameter
names. If we make it a bit more real (still "shortened" for sake of
example):
http_request: event(method: string, version: string);
event http_request(version: string) { ... }
The "parameter order vs. name" issue doesn't even cross my mind here
because the intent is clear -- I understand the meaning of the
handler's parameter because the original author of the event chose a
meaningful and useful name for it (which will be the common case).
That's all the reader cares about -- understanding the meaning of any
given parameter.
> I do see the appeal of making things just work when event handlers
> change, but is there really no different way to support that?
If the goal is to avoid breaking user-code, I don't think we're in a
position to do anything else. For example, we have:
global my_event: event(a: string);
And we want to add a parameter:
global my_event: event(a: string, b: string);
The user has already written their handler as:
event my_event(a: string) { ... }
We can't magically change that user's code. We have to, somehow, let
that work as it is, without user intervention.
- Jon
More information about the zeek-dev
mailing list