13 changed files with 143 additions and 129 deletions
-
4src/main/java/com/corundumstudio/socketio/AckCallback.java
-
8src/main/java/com/corundumstudio/socketio/AckManager.java
-
76src/main/java/com/corundumstudio/socketio/BroadcastAckCallback.java
-
83src/main/java/com/corundumstudio/socketio/BroadcastOperations.java
-
33src/main/java/com/corundumstudio/socketio/ClientOperations.java
-
35src/main/java/com/corundumstudio/socketio/SocketIOClient.java
-
2src/main/java/com/corundumstudio/socketio/SocketIONamespace.java
-
2src/main/java/com/corundumstudio/socketio/SocketIOServer.java
-
4src/main/java/com/corundumstudio/socketio/namespace/Namespace.java
-
1src/main/java/com/corundumstudio/socketio/parser/Decoder.java
-
5src/main/java/com/corundumstudio/socketio/transport/FlashPolicyHandler.java
-
8src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java
-
11src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java
@ -0,0 +1,76 @@ |
|||
/** |
|||
* Copyright 2012 Nikita Koksharov |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0 |
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package com.corundumstudio.socketio; |
|||
|
|||
import java.util.concurrent.atomic.AtomicBoolean; |
|||
import java.util.concurrent.atomic.AtomicInteger; |
|||
|
|||
public class BroadcastAckCallback<T> { |
|||
|
|||
final AtomicBoolean loopFinished = new AtomicBoolean(); |
|||
final AtomicInteger counter = new AtomicInteger(); |
|||
final AtomicBoolean successExecuted = new AtomicBoolean(); |
|||
final Class<T> resultClass; |
|||
|
|||
public BroadcastAckCallback(Class<T> resultClass) { |
|||
this.resultClass = resultClass; |
|||
} |
|||
|
|||
final AckCallback<T> createClientCallback(final SocketIOClient client) { |
|||
counter.getAndIncrement(); |
|||
return new AckCallback<T>(resultClass) { |
|||
@Override |
|||
public void onSuccess(T result) { |
|||
counter.getAndDecrement(); |
|||
onClientSuccess(client, result); |
|||
executeSuccess(); |
|||
} |
|||
|
|||
@Override |
|||
public void onTimeout() { |
|||
onClientTimeout(client); |
|||
} |
|||
|
|||
}; |
|||
} |
|||
|
|||
protected void onClientTimeout(SocketIOClient client) { |
|||
|
|||
} |
|||
|
|||
protected void onClientSuccess(SocketIOClient client, T result) { |
|||
|
|||
} |
|||
|
|||
protected void onAllSuccess() { |
|||
|
|||
} |
|||
|
|||
private void executeSuccess() { |
|||
if (loopFinished.get() |
|||
&& counter.get() == 0 |
|||
&& successExecuted.compareAndSet(false, true)) { |
|||
onAllSuccess(); |
|||
} |
|||
} |
|||
|
|||
void loopFinished() { |
|||
loopFinished.set(true); |
|||
executeSuccess(); |
|||
} |
|||
|
|||
} |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue