'Given a list of states populate self.pending_presence_by_dest and
poke to send a new transaction to each destination
Args:
states (list(UserPresenceState))'

@measure_func('txnqueue._process_presence')
@defer.inlineCallbacks
def _process_presence_inner(self, states):

    hosts_and_states = (yield get_interested_remotes(self.store, states, self.state))
    for (destinations, states) in hosts_and_states:
        for destination in destinations:
            if (not self.can_send_to(destination)):
                continue
            self.pending_presence_by_dest.setdefault(destination, {}).update({state.user_id: state for state in states})
            preserve_fn(self._attempt_new_transaction)(destination)
