- private ScheduledFuture<?> scheduledFuture;
- private YangInstanceIdentifier idListWithKey;
- private DOMDataTreeProducer itemProducer;
-
- public ProduceTransactionsHandler(final DOMDataTreeService domDataTreeService,
- final ProduceTransactionsInput input) {
-
- this.domDataTreeService = domDataTreeService;
-
- timeToTake = input.getSeconds() * SECOND_AS_NANO;
- delay = SECOND_AS_NANO / input.getTransactionsPerSecond();
- id = input.getId();
- }
-
- @Override
- public void run() {
- final long current = System.nanoTime();
-
- futures.add(execWrite());
-
- maybeFinish(current);
- }
-
- public void start(final SettableFuture<RpcResult<ProduceTransactionsOutput>> settableFuture) {
-
- if (ensureListExists(completionFuture) && fillInitialList(completionFuture)) {
- startTime = System.nanoTime();
- completionFuture = settableFuture;
- scheduledFuture = executor.scheduleAtFixedRate(this, 0, delay, TimeUnit.NANOSECONDS);
- } else {
- executor.shutdown();
- }
- }
-
- private boolean ensureListExists(final SettableFuture<RpcResult<ProduceTransactionsOutput>> settableFuture) {
-
- final MapEntryNode entry = ImmutableNodes.mapEntryBuilder(ID_INTS, ID, id)
- .withChild(ImmutableNodes.mapNodeBuilder(ITEM).build())
- .build();
- final MapNode mapNode =
- ImmutableNodes.mapNodeBuilder(ID_INTS)
- .withChild(entry)
- .build();
-
- final DOMDataTreeProducer producer = domDataTreeService.createProducer(Collections.singleton(
- new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY)));
-
- final DOMDataTreeCursorAwareTransaction tx = producer.createTransaction(false);
-
- final DOMDataTreeWriteCursor cursor =
- tx.createCursor(new DOMDataTreeIdentifier(
- LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY));
-
- idListWithKey = ID_INTS_YID.node(entry.getIdentifier());
-
- cursor.merge(mapNode.getIdentifier(), mapNode);
- cursor.close();