def register_interest(self, agent_factory, *args, **kwargs): agent_factory = IInterest(agent_factory) if not IFirstMessage.implementedBy(agent_factory.initiator): raise TypeError( "%r.initiator expected to implemented IFirstMessage. Got %r" %\ (agent_factory, agent_factory.initiator, )) p_type = agent_factory.protocol_type p_id = agent_factory.protocol_id if p_type not in self._interests: self._interests[p_type] = dict() if p_id in self._interests[p_type]: self.error('Already interested in %s.%s protocol', p_type, p_id) return False interest_factory = IAgencyInterestInternalFactory(agent_factory) interest = interest_factory(self, *args, **kwargs) self._interests[p_type][p_id] = interest self.debug('Registered interest in %s.%s protocol', p_type, p_id) return interest