📄 rendezvousconnectionmetric.java
字号:
* @return time in ms (see note above) **/ public long getTotalTimeConnected() { return totalTimeConnected; } /** Get the total time this peer has been connected. If it is currently * connected, then the total time is adjusted to include the time since the transition time * to become connected until the provided time * @param adjustmentTime The time of this metric will be adjusted to * @see #getTotalTimeConnected() * @return time in ms (see note above) **/ public long getTotalTimeConnected(long adjustmentTime) { long result = totalTimeConnected; if (isConnected()) { result += (adjustmentTime - this.transitionTime); } return result; } /** Get the duration of current connection relative to local clock (from transition time) * <BR><BR> * <B>Note:</B> This assumes the clocks are in sync with the reporting peer * @see #getTotalTimeConnected(long) * @return time in ms (see note above) or 0 if not connected **/ public long getTimeConnected() { return getTimeConnected(System.currentTimeMillis()); } /** Get the duration of current connection until the specified time * @param adjustmentTime The time of this metric will be computed until * @see #getTimeConnected() * @return time in ms (see note above) or 0 if not connected **/ public long getTimeConnected(long adjustmentTime) { if (isConnected()) { return (adjustmentTime - this.transitionTime); } else { return 0; } } private void resetState(String state, long transitionTime) { if (isConnected()) { totalTimeConnected += (System.currentTimeMillis() - this.transitionTime); } this.state = state; this.transitionTime = transitionTime; } void beginConnection(long transitionTime) { resetState(CONNECTING, transitionTime); this.numConnectionsBegun++; } void connectionEstablished(long transitionTime, long timeToConnectTime, long lease) { resetState(CONNECTED, transitionTime); this.totalTimesToConnect += timeToConnectTime; this.numConnectionsEstablished++; this.lease = lease; } void leaseRenewed(long lastLeaseRenewalTime, long lease) { this.numLeaseRenewals++; this.lastLeaseRenewalTime = lastLeaseRenewalTime; this.lease = lease; if (!isConnected()) { resetState(CONNECTED, lastLeaseRenewalTime); } } void connectionRefused(long transitionTime) { resetState(REFUSED, lastLeaseRenewalTime); numConnectionsRefused++; } void connectionDisconnected(long transitionTime) { resetState(DISCONNECTED, lastLeaseRenewalTime); numDisconnects++; } public boolean equals(Object obj) { if (obj instanceof RendezvousConnectionMetric) { RendezvousConnectionMetric other = (RendezvousConnectionMetric) obj; return (peerID.equals(other.peerID)); } else { return false; } } public int hashCode() { return peerID.hashCode(); } public void serializeTo(Element element) throws DocumentSerializationException { if (peerID != null) { DocumentSerializableUtilities.addString(element, "peerID", peerID.toString()); } if (state != null) { DocumentSerializableUtilities.addString(element, "state", state); } if (transitionTime != 0) { DocumentSerializableUtilities.addLong(element, "transitionTime", transitionTime); } if (lease != 0) { DocumentSerializableUtilities.addLong(element, "lease", lease); } if (numConnectionsBegun != 0) { DocumentSerializableUtilities.addInt(element, "numConnectionsBegun", numConnectionsBegun); } if (numConnectionsEstablished != 0) { DocumentSerializableUtilities.addInt(element, "numConnectionsEstablished", numConnectionsEstablished); } if (numConnectionsRefused != 0) { DocumentSerializableUtilities.addInt(element, "numConnectionsRefused", numConnectionsRefused); } if (totalTimesToConnect != 0) { DocumentSerializableUtilities.addLong(element, "totalTimesToConnect", totalTimesToConnect); } if (totalTimeConnected != 0) { DocumentSerializableUtilities.addLong(element, "totalTimeConnected", totalTimeConnected); } if (lastLeaseRenewalTime != 0) { DocumentSerializableUtilities.addLong(element, "lastLeaseRenewalTime", lastLeaseRenewalTime); } if (numLeaseRenewals != 0) { DocumentSerializableUtilities.addInt(element, "numLeaseRenewals", numLeaseRenewals); } if (numDisconnects != 0) { DocumentSerializableUtilities.addInt(element, "numDisconnects", numDisconnects); } } public void initializeFrom(Element element) throws DocumentSerializationException { for (Enumeration e = element.getChildren(); e.hasMoreElements();) { Element childElement = (TextElement) e.nextElement(); String tagName = (String) childElement.getKey(); if (tagName.equals("peerID")) { String peerIDText = DocumentSerializableUtilities.getString(childElement); peerID = MetricUtilities.getPeerIdFromString(peerIDText); } else if (tagName.equals("state")) { state = DocumentSerializableUtilities.getString(childElement); } else if (tagName.equals("transitionTime")) { transitionTime = DocumentSerializableUtilities.getLong(childElement); } else if (tagName.equals("lease")) { lease = DocumentSerializableUtilities.getLong(childElement); } else if (tagName.equals("numConnectionsBegun")) { numConnectionsBegun = DocumentSerializableUtilities.getInt(childElement); } else if (tagName.equals("numConnectionsEstablished")) { numConnectionsEstablished = DocumentSerializableUtilities.getInt(childElement); } else if (tagName.equals("numConnectionsRefused")) { numConnectionsRefused = DocumentSerializableUtilities.getInt(childElement); } else if (tagName.equals("totalTimesToConnect")) { totalTimesToConnect = DocumentSerializableUtilities.getLong(childElement); } else if (tagName.equals("totalTimeConnected")) { totalTimeConnected = DocumentSerializableUtilities.getLong(childElement); } else if (tagName.equals("lastLeaseRenewalTime")) { lastLeaseRenewalTime = DocumentSerializableUtilities.getLong(childElement); } else if (tagName.equals("numLeaseRenewals")) { numLeaseRenewals = DocumentSerializableUtilities.getInt(childElement); } else if (tagName.equals("numDisconnects")) { numDisconnects = DocumentSerializableUtilities.getInt(childElement); } } } public void mergeMetrics(RendezvousConnectionMetric otherRendezvousConnectionMetric) { if (otherRendezvousConnectionMetric == null) { return; } if (otherRendezvousConnectionMetric.state != null) { state = otherRendezvousConnectionMetric.state; } if (otherRendezvousConnectionMetric.transitionTime != 0) { transitionTime = otherRendezvousConnectionMetric.transitionTime; } if (otherRendezvousConnectionMetric.lastLeaseRenewalTime != 0) { lastLeaseRenewalTime = otherRendezvousConnectionMetric.transitionTime; } lease = otherRendezvousConnectionMetric.lease; numConnectionsBegun += otherRendezvousConnectionMetric.numConnectionsBegun; numConnectionsEstablished += otherRendezvousConnectionMetric.numConnectionsEstablished; numConnectionsRefused += otherRendezvousConnectionMetric.numConnectionsRefused; totalTimeConnected += otherRendezvousConnectionMetric.totalTimeConnected; numLeaseRenewals += otherRendezvousConnectionMetric.numLeaseRenewals; numDisconnects += otherRendezvousConnectionMetric.numDisconnects; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -