gpt4 book ai didi

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

转载 作者:知者 更新时间:2024-03-13 10:47:07 28 4
gpt4 key购买 nike

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

ZigBeeTransactionManager介绍

[英]The centralised transaction manager
[中]集中交易经理

代码示例

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

@Override
  public void receiveCommandStatus(int transactionId, ZigBeeTransportProgressState status) {
    transactionManager.receiveCommandStatus(transactionId, status);
  }
}

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

private void startTimer(int timeout) {
  if (timeoutTask != null) {
    timeoutTask.cancel(false);
  }
  // Schedule a task to timeout the transaction
  timeoutTask = transactionManager.scheduleTask(new Runnable() {
    @Override
    public void run() {
      cancelTransaction();
    }
  }, timeout);
}

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

/**
 * Sends a command without waiting for a response
 *
 * @param command the {@link ZigBeeCommand} to send
 */
public void sendTransaction(ZigBeeCommand command) {
  sendTransaction(command, null);
}

代码示例来源: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 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

/**
 * Sends {@link ZigBeeCommand} command and uses the {@link ZigBeeTransactionMatcher} to match the response.
 * The task will be timed out if there is no response.
 *
 * @return the {@link CommandResult} future.
 */
public void send() {
  logger.debug("Sending transaction: {} ==== {}", command, responseMatcher);
  synchronized (command) {
    // If we have no response matcher then we don't worry about adding the listener, or starting the
    if (responseMatcher != null) {
      transactionManager.addTransactionListener(this);
      // Schedule a task to timeout the transaction
      startTimer(timeout);
    } else {
      // Wait for the transport layer to confirm the command was sent
      startTimer(TRANSACTION_TIMER_BEFORE_TX);
    }
    transactionManager.send(command);
  }
}

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

@Test
public void sendTransaction() {
  ZigBeeNetworkManager networkManager = Mockito.mock(ZigBeeNetworkManager.class);
  ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
  Mockito.when(command.getDestinationAddress()).thenReturn(new ZigBeeEndpointAddress(123));
  ZigBeeTransactionMatcher responseMatcher = Mockito.mock(ZigBeeTransactionMatcher.class);
  ZigBeeNode node = Mockito.mock(ZigBeeNode.class);
  Mockito.when(node.getIeeeAddress()).thenReturn(new IeeeAddress("1234567890ABCDEF"));
  Mockito.when(networkManager.getNode(123)).thenReturn(node);
  ZigBeeTransactionManager transactionManager = new ZigBeeTransactionManager(networkManager);
  transactionManager.sendTransaction(command);
  Future<CommandResult> cmdResult = transactionManager.sendTransaction(command, responseMatcher);
  assertNotNull(cmdResult);
  ZigBeeCommand unknownCommand = Mockito.mock(ZigBeeCommand.class);
  Mockito.when(unknownCommand.getDestinationAddress()).thenReturn(new ZigBeeEndpointAddress(456));
  cmdResult = transactionManager.sendTransaction(unknownCommand, responseMatcher);
  // assertNull(cmdResult);
}

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

private void cancelTransaction() {
  if (timeoutTask != null) {
    timeoutTask.cancel(false);
  }
  logger.debug("Transaction cancelled: {}", command);
  if (transactionFuture != null) {
    synchronized (transactionFuture) {
      transactionFuture.cancel(false);
      transactionFuture.notify();
    }
  }
  if (responseMatcher != null) {
    transactionManager.removeTransactionListener(this);
  }
  state = TransactionState.FAILED;
}

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

/**
 * Constructor which configures serial port and ZigBee network.
 *
 * @param transport the dongle
 */
public ZigBeeNetworkManager(final ZigBeeTransportTransmit transport) {
  Map<ZigBeeTransportState, Set<ZigBeeTransportState>> transitions = new HashMap<ZigBeeTransportState, Set<ZigBeeTransportState>>();
  transitions.put(null, new HashSet<>(Arrays.asList(ZigBeeTransportState.UNINITIALISED)));
  transitions.put(ZigBeeTransportState.UNINITIALISED,
      new HashSet<>(Arrays.asList(ZigBeeTransportState.INITIALISING, ZigBeeTransportState.OFFLINE)));
  transitions.put(ZigBeeTransportState.INITIALISING,
      new HashSet<>(Arrays.asList(ZigBeeTransportState.ONLINE, ZigBeeTransportState.OFFLINE)));
  transitions.put(ZigBeeTransportState.ONLINE, new HashSet<>(Arrays.asList(ZigBeeTransportState.OFFLINE)));
  transitions.put(ZigBeeTransportState.OFFLINE, new HashSet<>(Arrays.asList(ZigBeeTransportState.ONLINE)));
  validStateTransitions = Collections.unmodifiableMap(new HashMap<>(transitions));
  this.transport = transport;
  transport.setZigBeeTransportReceive(this);
  transactionManager = new ZigBeeTransactionManager(this);
}

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

command = transactionManager.receive(command);
if (command == null) {
  return;

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

/**
 * Processes a received frame within the transaction manager, and returns the frame that is to fed up the stack. The
 * transaction manager may return null from this command if it should not be processed up the stack.
 *
 * @param command the received {@link ZigBeeCommand}
 * @return the {@link ZigBeeCommand} to be used within the library or null if the frame is not to be fed into the
 *         rest of the system
 */
public ZigBeeCommand receive(final ZigBeeCommand command) {
  notifyTransactionCommand(command);
  return command;
}

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

/**
 * Callback from the transport layer when it has progressed the state of the transaction.
 *
 * @param transactionId the transaction ID whose state is updated
 * @param status the updated {@link ZigBeeTransportProgressState} for the transaction
 */
public void receiveCommandStatus(int transactionId, ZigBeeTransportProgressState status) {
  notifyTransactionProgress(transactionId, status);
}

代码示例来源: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());
}

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

private void completeTransaction(ZigBeeCommand receivedCommand) {
  if (timeoutTask != null) {
    timeoutTask.cancel(false);
  }
  logger.debug("Transaction complete: {}", command);
  if (transactionFuture != null) {
    synchronized (transactionFuture) {
      transactionFuture.set(new CommandResult(receivedCommand));
      transactionFuture.notify();
    }
  }
  if (responseMatcher != null) {
    transactionManager.removeTransactionListener(this);
  }
  state = TransactionState.COMPLETE;
}

代码示例来源: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

@Override
public Future<CommandResult> sendTransaction(ZigBeeCommand command, ZigBeeTransactionMatcher responseMatcher) {
  return transactionManager.sendTransaction(command, responseMatcher);
}

代码示例来源: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

@Override
public void sendTransaction(ZigBeeCommand command) {
  transactionManager.sendTransaction(command);
}

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com