com.zsmartsystems.zigbee.transaction.ZigBeeTransaction类的使用及代码示例

x33g5p2x  于2022-02-05 转载在 其他  
字(9.8k)|赞(0)|评价(0)|浏览(87)

本文整理了Java中com.zsmartsystems.zigbee.transaction.ZigBeeTransaction类的一些代码示例,展示了ZigBeeTransaction类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZigBeeTransaction类的具体详情如下:
包路径:com.zsmartsystems.zigbee.transaction.ZigBeeTransaction
类名称:ZigBeeTransaction

ZigBeeTransaction介绍

[英]Transaction class to handle the sending of commands and timeout in the event there is no response.
[中]事务类来处理在没有响应的情况下发送命令和超时。

代码示例

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

/**
 * Sends a command, and uses the {@link ZigBeeTransactionMatcher} to match the response which will complete the
 * transaction.
 *
 * @param command the {@link ZigBeeCommand} to send
 * @param responseMatcher the {@link ZigBeeTransactionMatcher} to match the response which will complete the
 *            transaction.
 * @return the future {@link CommandResult}
 */
public Future<CommandResult> sendTransaction(ZigBeeCommand command, ZigBeeTransactionMatcher responseMatcher) {
  ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
  ZigBeeTransaction transaction = new ZigBeeTransaction(this, command, responseMatcher);
  transaction.setFuture(transactionFuture);
  transaction.send();
  return transactionFuture;
}

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Override
  public void run() {
    transaction.commandReceived(command);
  }
});

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Override
  public void run() {
    transaction.commandStatusReceived(state, transactionId);
  }
});

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

case TX_NAK:
  cancelTransaction();
  break;
case TX_ACK:
    completeTransaction(null);
    break;
  startTimer(TRANSACTION_TIMER_AFTER_TX);
  break;
case RX_NAK:
  cancelTransaction();
  break;
case RX_ACK:

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Test
public void testRxNak() {
  ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
  ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
  Mockito.when(command.getTransactionId()).thenReturn(12);
  ZigBeeTransactionMatcher matcher = Mockito.mock(ZigBeeTransactionMatcher.class);
  ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
  ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, matcher);
  transaction.setFuture(transactionFuture);
  transaction.send();
  Mockito.verify(transactionManager, Mockito.times(1)).scheduleTask(ArgumentMatchers.any(Runnable.class),
      ArgumentMatchers.anyLong());
  Mockito.verify(transactionManager, Mockito.times(1)).addTransactionListener(transaction);
  Mockito.verify(transactionManager, Mockito.times(1)).send(command);
  transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_ACK, 12);
  Mockito.verify(transactionManager, Mockito.times(2)).scheduleTask(ArgumentMatchers.any(Runnable.class),
      ArgumentMatchers.anyLong());
  transaction.commandStatusReceived(ZigBeeTransportProgressState.RX_NAK, 12);
  Mockito.verify(transactionManager, Mockito.times(1)).removeTransactionListener(transaction);
  assertTrue(transactionFuture.isDone());
  assertTrue(transactionFuture.isCancelled());
}

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Test
public void commandReceived() {
  ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
  ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
  Mockito.when(command.getTransactionId()).thenReturn(12);
  ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
  ZigBeeCommand matchRequest = Mockito.mock(ZigBeeCommand.class);
  ZigBeeCommand nomatchRequest = Mockito.mock(ZigBeeCommand.class);
  ZigBeeTransactionMatcher matcher = Mockito.mock(ZigBeeTransactionMatcher.class);
  Mockito.when(matcher.isTransactionMatch(command, matchRequest)).thenReturn(true);
  Mockito.when(matcher.isTransactionMatch(command, nomatchRequest)).thenReturn(false);
  ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, matcher);
  transaction.setFuture(transactionFuture);
  assertEquals(transactionFuture, transaction.getFuture());
  transaction.commandReceived(nomatchRequest);
  assertFalse(transactionFuture.isDone());
  assertFalse(transactionFuture.isCancelled());
  transaction.commandReceived(matchRequest);
  assertTrue(transactionFuture.isDone());
  assertFalse(transactionFuture.isCancelled());
}

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Test
  public void getTimeout() {
    ZigBeeTransaction transaction = new ZigBeeTransaction(null, null, null);

    int timeout = transaction.getTimeout();
    transaction.setTimeout(timeout + 23);
    assertEquals(timeout + 23, transaction.getTimeout());
  }
}

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Test
public void receive() {
  ZigBeeNetworkManager networkManager = Mockito.mock(ZigBeeNetworkManager.class);
  ZigBeeTransactionManager transactionManager = new ZigBeeTransactionManager(networkManager);
  ZigBeeTransaction transactionListener = Mockito.mock(ZigBeeTransaction.class);
  transactionManager.addTransactionListener(transactionListener);
  ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
  transactionManager.receive(command);
  Mockito.verify(transactionListener, Mockito.timeout(TIMEOUT)).commandReceived(command);
  transactionManager.receiveCommandStatus(123, ZigBeeTransportProgressState.RX_ACK);
  Mockito.verify(transactionListener, Mockito.timeout(TIMEOUT))
      .commandStatusReceived(ZigBeeTransportProgressState.RX_ACK, 123);
  transactionManager.removeTransactionListener(null);
  transactionManager.removeTransactionListener(transactionListener);
  transactionManager.removeTransactionListener(transactionListener);
  // Send another command and make sure the commandReceived method is not called again
  transactionManager.receive(command);
  Mockito.verify(transactionListener, Mockito.times(1)).commandReceived(command);
}

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

/**
 * Called by the transaction manager when a {@link ZigBeeCommand} is received. The transaction should check this
 * command to see if it completes the transaction.
 *
 * @param receivedCommand the incoming {@link ZigBeeCommand}
 */
public void commandReceived(ZigBeeCommand receivedCommand) {
  // Ensure that received command is not processed before command is sent
  // and hence transaction ID for the command set.
  synchronized (command) {
    if (responseMatcher.isTransactionMatch(command, receivedCommand)) {
      completeTransaction(receivedCommand);
    }
  }
}

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Test
public void testSendOnly() {
  ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
  ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
  Mockito.when(command.getTransactionId()).thenReturn(12);
  ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
  ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, null);
  transaction.setFuture(transactionFuture);
  transaction.send();
  Mockito.verify(transactionManager, Mockito.times(1)).scheduleTask(ArgumentMatchers.any(Runnable.class),
      ArgumentMatchers.anyLong());
  Mockito.verify(transactionManager, Mockito.times(1)).send(command);
  Mockito.verify(transactionManager, Mockito.times(0)).addTransactionListener(transaction);
  // Wrong TID so gets ignored
  transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_NAK, 123);
  assertFalse(transactionFuture.isDone());
  assertFalse(transactionFuture.isCancelled());
  // Correct TID
  transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_ACK, 12);
  Mockito.verify(transactionManager, Mockito.times(0)).removeTransactionListener(transaction);
  assertTrue(transactionFuture.isDone());
  assertFalse(transactionFuture.isCancelled());
}

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Test
public void testTxNak() {
  ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
  ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
  Mockito.when(command.getTransactionId()).thenReturn(12);
  ZigBeeTransactionMatcher matcher = Mockito.mock(ZigBeeTransactionMatcher.class);
  ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
  ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, matcher);
  transaction.setFuture(transactionFuture);
  transaction.send();
  Mockito.verify(transactionManager, Mockito.times(1)).scheduleTask(ArgumentMatchers.any(Runnable.class),
      ArgumentMatchers.anyLong());
  Mockito.verify(transactionManager, Mockito.times(1)).addTransactionListener(transaction);
  Mockito.verify(transactionManager, Mockito.times(1)).send(ArgumentMatchers.any(ZigBeeCommand.class));
  // Wrong TID so gets ignored
  transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_NAK, 123);
  assertFalse(transactionFuture.isDone());
  assertFalse(transactionFuture.isCancelled());
  // Correct TID
  transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_NAK, 12);
  Mockito.verify(transactionManager, Mockito.times(1)).removeTransactionListener(transaction);
  assertTrue(transactionFuture.isDone());
  assertTrue(transactionFuture.isCancelled());
}

代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee

@Test
public void testTimeout() {
  ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
  ScheduledFuture timerFuture = Mockito.mock(ScheduledFuture.class);
  ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
  ZigBeeTransactionMatcher matcher = Mockito.mock(ZigBeeTransactionMatcher.class);
  ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
  ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, matcher);
  transaction.setFuture(transactionFuture);
  ArgumentCaptor<Runnable> timerCaptor = ArgumentCaptor.forClass(Runnable.class);
  Mockito.when(transactionManager.scheduleTask(timerCaptor.capture(), ArgumentMatchers.anyLong()))
      .thenReturn(timerFuture);
  transaction.send();
  Mockito.verify(transactionManager, Mockito.times(1)).addTransactionListener(transaction);
  Mockito.verify(transactionManager, Mockito.times(1)).send(command);
  Runnable timeout = timerCaptor.getValue();
  assertNotNull(timeout);
  assertFalse(transactionFuture.isDone());
  assertFalse(transactionFuture.isCancelled());
  timeout.run();
  Mockito.verify(transactionManager, Mockito.times(1)).removeTransactionListener(transaction);
  assertTrue(transactionFuture.isDone());
  assertTrue(transactionFuture.isCancelled());
}

相关文章