Files
IM-server-new/wildfire_jmeter/src/main/java/net/xmeter/samplers/SendMessageCallback.java
T

55 lines
1.4 KiB
Java
Executable File

package net.xmeter.samplers;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
import org.apache.log.Priority;
import org.fusesource.mqtt.client.Callback;
public class SendMessageCallback implements Callback<byte[]>{
private static Logger logger = LoggingManager.getLoggerForClass();
private boolean successful = false;
private Object connLock;
private int errorCode;
public SendMessageCallback(Object connLock) {
this.connLock = connLock;
}
@Override
public void onSuccess(byte[] value) {
//If QoS == 0, then the current thread is the same thread of caller thread.
//Else if QoS == 1 | 2, then the current thread is hawtdispatch-DEFAULT-x
if (value != null && value.length > 0) {
errorCode = value[0]&0xff;
} else {
onFailure(new Throwable("Send message with invalid data back"));
return;
}
if (errorCode != 0) {
onFailure(new Throwable("Send message failure with error code(" + errorCode + ")"));
return;
}
synchronized (connLock) {
this.successful = true;
connLock.notify();
}
}
@Override
public void onFailure(Throwable value) {
synchronized (connLock) {
this.successful = false;
logger.log(Priority.ERROR, value.getMessage(), value);
connLock.notify();
}
}
public boolean isSuccessful() {
return successful;
}
public int getErrorCode() {
return errorCode;
}
}