def subdispatch_mediatortask( node_state, state_change, payment_network_identifier, token_address, secrethash): block_number = node_state.block_number sub_task = node_state.payment_mapping.secrethashes_to_task.get(secrethash) if not sub_task: is_valid_subtask = True mediator_state = None elif sub_task and isinstance(sub_task, PaymentMappingState.MediatorTask): is_valid_subtask = ( payment_network_identifier == sub_task.payment_network_identifier and token_address == sub_task.token_address ) mediator_state = sub_task.mediator_state else: is_valid_subtask = False events = list() if is_valid_subtask: token_network_state = get_token_network( node_state, payment_network_identifier, token_address, ) pseudo_random_generator = node_state.pseudo_random_generator iteration = mediator.state_transition( mediator_state, state_change, token_network_state.channelidentifiers_to_channels, pseudo_random_generator, block_number, ) events = iteration.events if iteration.new_state: sub_task = PaymentMappingState.MediatorTask( payment_network_identifier, token_address, iteration.new_state, ) node_state.payment_mapping.secrethashes_to_task[secrethash] = sub_task return TransitionResult(node_state, events)
def subdispatch_mediatortask( chain_state: ChainState, state_change: StateChange, token_network_identifier: typing.TokenNetworkID, secrethash: typing.SecretHash, ) -> TransitionResult: block_number = chain_state.block_number sub_task = chain_state.payment_mapping.secrethashes_to_task.get(secrethash) if not sub_task: is_valid_subtask = True mediator_state = None elif sub_task and isinstance(sub_task, PaymentMappingState.MediatorTask): is_valid_subtask = ( token_network_identifier == sub_task.token_network_identifier) mediator_state = sub_task.mediator_state else: is_valid_subtask = False events = list() if is_valid_subtask: token_network_state = views.get_token_network_by_identifier( chain_state, token_network_identifier, ) pseudo_random_generator = chain_state.pseudo_random_generator iteration = mediator.state_transition( mediator_state, state_change, token_network_state.channelidentifiers_to_channels, pseudo_random_generator, block_number, ) events = iteration.events if iteration.new_state: sub_task = PaymentMappingState.MediatorTask( token_network_identifier, iteration.new_state, ) chain_state.payment_mapping.secrethashes_to_task[ secrethash] = sub_task elif secrethash in chain_state.payment_mapping.secrethashes_to_task: del chain_state.payment_mapping.secrethashes_to_task[secrethash] return TransitionResult(chain_state, events)
def subdispatch_mediatortask(node_state, state_change, payment_network_identifier, token_network_identifier, hashlock): block_number = node_state.block_number sub_task = node_state.payment_mapping.hashlocks_to_task.get(hashlock) if not sub_task: is_valid_subtask = True mediator_state = None elif sub_task and isinstance(sub_task, PaymentMappingState.MediatorTask): is_valid_subtask = ( payment_network_identifier == sub_task.payment_network_identifier and token_network_identifier == sub_task.token_network_identifier) mediator_state = sub_task.mediator_state else: is_valid_subtask = False events = list() if is_valid_subtask: token_network_state = get_token_network( node_state, payment_network_identifier, token_network_identifier, ) iteration = mediator.state_transition2( mediator_state, state_change, token_network_state.channelidentifiers_to_channels, block_number, ) events = iteration.events if iteration.new_state: sub_task = PaymentMappingState.MediatorTask( payment_network_identifier, token_network_identifier, iteration.new_state, ) node_state.payment_mapping.hashlocks_to_task[hashlock] = sub_task return TransitionResult(node_state, events)