def extendProtocol(lexicalFactory, syntaxFactory): # j == join # p == part # l == lookup # a == lookup answer regex = "group:(({0})|({1})|({2})|({3}))".format( "(j|l|p):{0}".format(GroupNameRegex), "a:{0}(:{1}(,[1-9][0-9]?)+)+".format(GroupNameRegex, IPHostRegex), "msg:{0}:[0-9]+:(s|a):.+".format(GroupNameRegex), "e:.*" ) if ExtensionLoader().isActive("BasicOverlay"): BProtocol = ExtensionLoader().getExtension("BasicOverlay") BProtocol.addBootstrapFunction(joinGroups) establishedState = lexicalFactory.getState('established') establishedState.addTransition('established', regex, lambda t: t.split(':')) startState = lexicalFactory.getState('start') startState.addTransition('start', regex, lambda t: t.split(':')) syntaxFactory.addToken('group', groupTokenParser) overlayAHF(removeFromGroups, True) for g in CommandLineParser().getArguments().groupsToJoin: groups[g] = Group(g, True, None, CommandLineParser().getArguments().PeerName) return True return False
def extendProtocol(lexicalFactory, syntaxFactory): startS = lexicalFactory.getState('start') establishedS = lexicalFactory.addState('established') lexicalFactory.addState('finished') syntaxFactory.addToken('c', connectionTokenParser) syntaxFactory.addToken('e', errorTokenParser) startS.addTransition('established','c:(a|e|n):' + HostNameRegex +':([0-9]+,?)+', lambda t: t.split(':')) establishedS.addTransition('finished', 'b:(o|e):[a-zA-Z]+', lambda t: t.split(':')) establishedS.addTransition('established','p:(n|u):[0-9]+\.[0-9]+', lambda t: t.split(':')) establishedS.addTransition('established','e:.+', lambda t: t.split(':')) overlayAHF(removeFromPeerList) overlayCBF(requestConnection) return True