本文整理了Java中com.zsmartsystems.zigbee.transaction.ZigBeeTransactionManager
类的一些代码示例,展示了ZigBeeTransactionManager
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZigBeeTransactionManager
类的具体详情如下:
包路径:com.zsmartsystems.zigbee.transaction.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);
}
内容来源于网络,如有侵权,请联系作者删除!