Bug 46654 - Add support for autogenerating synchronous message handlers
Summary: Add support for autogenerating synchronous message handlers
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: Other OS X 10.5
: P2 Normal
Assignee: Anders Carlsson
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-09-27 14:33 PDT by Anders Carlsson
Modified: 2010-09-27 15:03 PDT (History)
0 users

See Also:


Attachments
Patch (10.47 KB, patch)
2010-09-27 14:52 PDT, Anders Carlsson
aroben: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Anders Carlsson 2010-09-27 14:33:33 PDT
Add support for autogenerating synchronous message handlers
Comment 1 Anders Carlsson 2010-09-27 14:52:37 PDT
Created attachment 68964 [details]
Patch
Comment 2 Adam Roben (:aroben) 2010-09-27 14:59:39 PDT
Comment on attachment 68964 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=68964&action=review

> WebKit2/Scripts/webkit2/messages.py:384
> +    if async_messages:
> +        result.append('void %s::didReceive%sMessage(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments)\n' % (receiver.name, receiver.name))
> +        result.append('{\n')
> +        result.append('    switch (messageID.get<Messages::%s::Kind>()) {\n' % receiver.name)
> +        result += [async_case_statement(receiver, message) for message in async_messages]
> +        result.append('    default:\n')
> +        result.append('        break;\n')
> +        result.append('    }\n\n')
> +        result.append('    ASSERT_NOT_REACHED();\n')
> +        result.append('}\n')
> +
> +    if sync_messages:
> +        result.append('\n')
> +        result.append('CoreIPC::SyncReplyMode %s::didReceiveSync%sMessage(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply)\n' % (receiver.name, receiver.name))
> +        result.append('{\n')
> +        result.append('    switch (messageID.get<Messages::%s::Kind>()) {\n' % receiver.name)
> +        result += [sync_case_statement(receiver, message) for message in sync_messages]
> +        result.append('    default:\n')
> +        result.append('        break;\n')
> +        result.append('    }\n\n')
> +        result.append('    ASSERT_NOT_REACHED();\n')
> +        result.append('    return CoreIPC::AutomaticReply;\n')
> +        result.append('}\n')

It would be nice not to duplicate so much code.
Comment 3 Anders Carlsson 2010-09-27 15:03:54 PDT
Committed r68428: <http://trac.webkit.org/changeset/68428>