PeerImpl.java
3.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
* Decompiled with CFR 0_118.
*/
package com.adobe.xfa.ut;
import com.adobe.xfa.ut.Peer;
public final class PeerImpl {
private static final int REALLOC_SIZE = 4;
private boolean mbDeaf;
private boolean mbMute;
private Peer[] mPeeredNodeList;
private Peer[] mPeerList;
private final Peer mSrc;
public PeerImpl(Peer src) {
this.mSrc = src;
}
public void addPeer(Peer peerNode) {
if (peerNode != null) {
peerNode.addPeeredNode(this.mSrc);
this.mPeerList = this.addToList(peerNode, this.mPeerList);
}
}
public void addPeeredNode(Peer peer) {
this.mPeeredNodeList = this.addToList(peer, this.mPeeredNodeList);
}
private Peer[] addToList(Peer peer, Peer[] peerList) {
if (peerList == null) {
peerList = new Peer[4];
peerList[0] = peer;
return peerList;
}
int nCnt = peerList.length;
for (int i = 0; i < nCnt; ++i) {
if (peerList[i] != null) continue;
peerList[i] = peer;
return peerList;
}
Peer[] newList = new Peer[nCnt + 4];
System.arraycopy(peerList, 0, newList, 0, nCnt);
newList[nCnt] = peer;
return newList;
}
public void clearPeers() {
int i;
Peer peer;
if (this.mPeeredNodeList != null) {
for (i = this.mPeeredNodeList.length - 1; i >= 0; --i) {
peer = this.mPeeredNodeList[i];
if (peer == null) continue;
peer.removePeer(this.mSrc);
}
}
if (this.mPeerList != null) {
for (i = 0; i < this.mPeerList.length; ++i) {
peer = this.mPeerList[i];
if (peer == null) continue;
peer.removePeeredNode(this.mSrc);
this.mPeerList[i] = null;
}
}
}
public void deafen() {
this.mbDeaf = true;
}
public Peer getPeer(int nPeer) {
if (this.mPeerList != null && nPeer < this.mPeerList.length) {
return this.mPeerList[nPeer];
}
return null;
}
public boolean isDeaf() {
return this.mbDeaf;
}
public boolean isMute() {
return this.mbMute;
}
public void mute() {
this.mbMute = true;
}
public void notifyPeers(int eventType, String arg1, Object arg2) {
Peer peer;
if (this.mbMute) {
return;
}
if (this.mPeerList == null) {
return;
}
for (int i = 0; i < this.mPeerList.length && (peer = this.mPeerList[i]) != null; ++i) {
if (peer.isDeaf()) continue;
peer.updateFromPeer(this.mSrc, eventType, arg1, arg2);
}
}
public void removeFromList(Peer peer, Peer[] peerList) {
if (peerList != null) {
int nCnt = peerList.length;
for (int i = 0; i < nCnt && peerList[i] != null; ++i) {
if (peerList[i] != peer) continue;
System.arraycopy(peerList, i + 1, peerList, i, nCnt - i - 1);
peerList[nCnt - 1] = null;
return;
}
}
}
public void removePeer(Peer peerNode) {
if (peerNode != null) {
this.removeFromList(peerNode, this.mPeerList);
peerNode.removePeeredNode(this.mSrc);
}
}
public void removePeeredNode(Peer peer) {
this.removeFromList(peer, this.mPeeredNodeList);
this.mSrc.peerRemoved(peer);
}
public void unDeafen() {
this.mbDeaf = false;
}
public void unMute() {
this.mbMute = false;
}
}