用作queue, 值追加到尾节点的最后, 满则追加一个尾节点。
(V value)
| 306 | * 用作queue, 值追加到尾节点的最后, 满则追加一个尾节点。 |
| 307 | */ |
| 308 | public void add(V value) { |
| 309 | var root = getOrAddRoot(); |
| 310 | var tailNodeKey = root.getTailNodeKey(); |
| 311 | var tail = tailNodeKey.getNodeId() != 0 ? getNode(tailNodeKey) : null; // 比起直接访问快一些。 |
| 312 | if (tail == null || tail.getValues().size() >= nodeSize) { |
| 313 | var newNodeId = root.getLastNodeId() + 1; |
| 314 | root.setLastNodeId(newNodeId); |
| 315 | var newNodeKey = new BQueueNodeKey(name, newNodeId); |
| 316 | root.setTailNodeKey(newNodeKey); |
| 317 | if (root.getHeadNodeKey().getNodeId() == 0) |
| 318 | root.setHeadNodeKey(newNodeKey); |
| 319 | if (tail != null) |
| 320 | tail.setNextNodeKey(newNodeKey); |
| 321 | module._tQueueNodes.insert(newNodeKey, tail = new BQueueNode()); |
| 322 | root.setCount(root.getCount() + 1); |
| 323 | } |
| 324 | var nodeValue = new BQueueNodeValue(); |
| 325 | nodeValue.setTimestamp(System.currentTimeMillis()); |
| 326 | nodeValue.getValue().setBean(value); |
| 327 | tail.getValues().add(nodeValue); |
| 328 | } |
| 329 | |
| 330 | /** |
| 331 | * 用作stack, 值追加到头节点的首位, 满则追加一个头节点 |
nothing calls this directly
no test coverage detected