[ https://issues.apache.org/jira/browse/GOSSIP-56?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15871217#comment-15871217 ]
ASF GitHub Bot commented on GOSSIP-56: -------------------------------------- Github user asfgit closed the pull request at: https://github.com/apache/incubator-gossip/pull/34 > GossipCore should allow registration of handlers > ------------------------------------------------ > > Key: GOSSIP-56 > URL: https://issues.apache.org/jira/browse/GOSSIP-56 > Project: Gossip > Issue Type: New Feature > Reporter: Edward Capriolo > Assignee: Maxim Rusak > > Currently GossipCore is a case statement. It would be better if we registered > handlers. This would allows users to extend the protocol. > # We need a hashmap of Class -> Handler > # When GossipCore.receive(Base message) gets a message it gets the class of > the message and looks it up in the hashmap > # Builder class allows users to specify other handlers > # Common handlers are enabled by default > Something like this: > {noformat} > if (base instanceof ShutdownMessage){ > ShutdownMessage s = (ShutdownMessage) base; > GossipDataMessage m = new GossipDataMessage(); > m.setKey(ShutdownMessage.PER_NODE_KEY); > m.setNodeId(s.getNodeId()); > m.setPayload(base); > m.setTimestamp(System.currentTimeMillis()); > m.setExpireAt(System.currentTimeMillis() + 30L * 1000L); > addPerNodeData(m); > } > if (base instanceof GossipDataMessage) { > UdpGossipDataMessage message = (UdpGossipDataMessage) base; > addPerNodeData(message); > } > {noformat} > Replace with: > {noformat} > Map<Class,Handler> handlers... > { > handlers.put(ShutdownMessage.class, new ShutdownHandler(GossipCore); > } > Handler h = handlers.get(base.class) > h.invoke(base) > {noformat} -- This message was sent by Atlassian JIRA (v6.3.15#6346)