Skip to content

Commit 3f81520

Browse files
author
Ian Craggs
committed
Merge branch 'develop'
Conflicts: org.eclipse.paho.android.service/org.eclipse.paho.android.service/pom.xml
2 parents 5cf880b + 5174fa5 commit 3f81520

7 files changed

Lines changed: 58 additions & 46 deletions

File tree

org.eclipse.paho.android.service/org.eclipse.paho.android.service/AndroidManifest.xml

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,31 @@
33
android:versionCode="1"
44
android:versionName="1.0" >
55

6+
<!-- Permissions the Application Requires -->
7+
<uses-permission android:name="android.permission.WAKE_LOCK" />
8+
<uses-permission android:name="android.permission.INTERNET" />
9+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
10+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
11+
612
<uses-sdk
713
android:minSdkVersion="9"
814
android:targetSdkVersion="19" />
15+
<!-- Permissions the Application Requires -->
16+
<uses-permission android:name="android.permission.WAKE_LOCK" />
17+
<uses-permission android:name="android.permission.INTERNET" />
18+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
19+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
920

1021
<application
1122
android:allowBackup="true"
1223
android:icon="@drawable/ic_launcher"
1324
android:label="@string/app_name"
1425
android:theme="@style/AppTheme" >
26+
27+
<!-- Mqtt Service -->
28+
<service android:name="org.eclipse.paho.android.service.MqttService" >
29+
</service>
30+
1531
</application>
1632

17-
<!-- Permissions the Application Requires -->
18-
<uses-permission android:name="android.permission.WAKE_LOCK" />
19-
<uses-permission android:name="android.permission.INTERNET" />
20-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
21-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
22-
23-
<!-- Mqtt Service -->
24-
<service android:name="org.eclipse.paho.android.service.MqttService" >
25-
</service>
26-
27-
</manifest>
33+
</manifest>

org.eclipse.paho.android.service/org.eclipse.paho.android.service/pom.xml

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,19 @@
5858
</build>
5959

6060
<dependencies>
61-
<dependency>
62-
<groupId>org.eclipse.paho</groupId>
63-
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
64-
<version>1.0.1</version>
65-
</dependency>
66-
67-
<dependency>
68-
<groupId>com.google.android</groupId>
69-
<artifactId>android</artifactId>
70-
</dependency>
61+
<dependency>
62+
<groupId>org.eclipse.paho</groupId>
63+
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
64+
<version>1.0.1</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>com.google.android</groupId>
68+
<artifactId>android</artifactId>
69+
</dependency>
70+
<dependency>
71+
<groupId>com.google.android</groupId>
72+
<artifactId>support-v4</artifactId>
73+
<version>r7</version>
74+
</dependency>
7175
</dependencies>
7276
</project>

org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttAndroidClient.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import android.content.ServiceConnection;
5050
import android.os.Bundle;
5151
import android.os.IBinder;
52+
import android.support.v4.content.LocalBroadcastManager;
5253
import android.util.SparseArray;
5354

5455
/**
@@ -441,7 +442,7 @@ public void run() {
441442
private void registerReceiver(BroadcastReceiver receiver) {
442443
IntentFilter filter = new IntentFilter();
443444
filter.addAction(MqttServiceConstants.CALLBACK_TO_ACTIVITY);
444-
myContext.registerReceiver(receiver, filter);
445+
LocalBroadcastManager.getInstance(myContext).registerReceiver(receiver, filter);
445446
registerReceiver = true;
446447
}
447448

@@ -1595,7 +1596,7 @@ public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout)
15951596
public void unregisterResources(){
15961597
if(myContext != null && registerReceiver){
15971598
synchronized (MqttAndroidClient.this) {
1598-
myContext.unregisterReceiver(this);
1599+
LocalBroadcastManager.getInstance(myContext).unregisterReceiver(this);
15991600
registerReceiver = false;
16001601
}
16011602
if(bindedService){

org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import android.os.IBinder;
3838
import android.os.PowerManager;
3939
import android.os.PowerManager.WakeLock;
40+
import android.support.v4.content.LocalBroadcastManager;
4041
import android.util.Log;
4142

4243
/**
@@ -277,7 +278,7 @@ void callbackToActivity(String clientHandle, Status status,
277278
if (dataBundle != null) {
278279
callbackIntent.putExtras(dataBundle);
279280
}
280-
sendBroadcast(callbackIntent);
281+
LocalBroadcastManager.getInstance(this).sendBroadcast(callbackIntent);
281282
}
282283

283284
// The major API implementation follows :-

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal/ClientState.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,9 +315,11 @@ protected void restoreState() throws MqttException {
315315
if (persistence.containsKey(getSendConfirmPersistenceKey(sendMessage))) {
316316
MqttPersistable persistedConfirm = persistence.get(getSendConfirmPersistenceKey(sendMessage));
317317
// QoS 2, and CONFIRM has already been sent...
318+
// NO DUP flag is allowed for 3.1.1 spec while it's not clear for 3.1 spec
319+
// So we just remove DUP
318320
MqttPubRel confirmMessage = (MqttPubRel) restoreMessage(key, persistedConfirm);
319321
if (confirmMessage != null) {
320-
confirmMessage.setDuplicate(true);
322+
// confirmMessage.setDuplicate(true); // REMOVED
321323
//@TRACE 605=outbound QoS 2 pubrel key={0} message={1}
322324
log.fine(CLASS_NAME,methodName, "605", new Object[]{key,message});
323325

@@ -375,11 +377,12 @@ private void restoreInflightMessages() {
375377
Enumeration keys = outboundQoS2.keys();
376378
while (keys.hasMoreElements()) {
377379
Object key = keys.nextElement();
378-
Object msg = outboundQoS2.get(key);
380+
MqttWireMessage msg = (MqttWireMessage) outboundQoS2.get(key);
379381
if (msg instanceof MqttPublish) {
380382
//@TRACE 610=QoS 2 publish key={0}
381383
log.fine(CLASS_NAME,methodName, "610", new Object[]{key});
382-
384+
// set DUP flag only for PUBLISH, but NOT for PUBREL (spec 3.1.1)
385+
msg.setDuplicate(true);
383386
insertInOrder(pendingMessages, (MqttPublish)msg);
384387
} else if (msg instanceof MqttPubRel) {
385388
//@TRACE 611=QoS 2 pubrel key={0}
@@ -392,6 +395,7 @@ private void restoreInflightMessages() {
392395
while (keys.hasMoreElements()) {
393396
Object key = keys.nextElement();
394397
MqttPublish msg = (MqttPublish)outboundQoS1.get(key);
398+
msg.setDuplicate(true);
395399
//@TRACE 612=QoS 1 publish key={0}
396400
log.fine(CLASS_NAME,methodName, "612", new Object[]{key});
397401

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal/CommsCallback.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ private void handleActionComplete(MqttToken token)
212212

213213
// Set notified so we don't tell the user again about this action.
214214
if ( token.isComplete() ){
215-
if ( token instanceof MqttDeliveryToken || token.getActionCallback() instanceof ConnectActionListener ) {
215+
if ( token instanceof MqttDeliveryToken || token.getActionCallback() instanceof IMqttActionListener ) {
216216
token.internalTok.setNotified(true);
217217
}
218218
}

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal/wire/MqttWireMessage.java

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ public abstract class MqttWireMessage {
6060

6161
protected boolean duplicate = false;
6262

63-
private byte[] encodedHeader = null;
6463

6564
public MqttWireMessage(byte type) {
6665
this.type = type;
@@ -114,24 +113,21 @@ public String getKey() {
114113
}
115114

116115
public byte[] getHeader() throws MqttException {
117-
if (encodedHeader == null) {
118-
try {
119-
int first = ((getType() & 0x0f) << 4) ^ (getMessageInfo() & 0x0f);
120-
byte[] varHeader = getVariableHeader();
121-
int remLen = varHeader.length + getPayload().length;
116+
try {
117+
int first = ((getType() & 0x0f) << 4) ^ (getMessageInfo() & 0x0f);
118+
byte[] varHeader = getVariableHeader();
119+
int remLen = varHeader.length + getPayload().length;
122120

123-
ByteArrayOutputStream baos = new ByteArrayOutputStream();
124-
DataOutputStream dos = new DataOutputStream(baos);
125-
dos.writeByte(first);
126-
dos.write(encodeMBI(remLen));
127-
dos.write(varHeader);
128-
dos.flush();
129-
encodedHeader = baos.toByteArray();
130-
} catch(IOException ioe) {
131-
throw new MqttException(ioe);
132-
}
133-
}
134-
return encodedHeader;
121+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
122+
DataOutputStream dos = new DataOutputStream(baos);
123+
dos.writeByte(first);
124+
dos.write(encodeMBI(remLen));
125+
dos.write(varHeader);
126+
dos.flush();
127+
return baos.toByteArray();
128+
} catch(IOException ioe) {
129+
throw new MqttException(ioe);
130+
}
135131
}
136132

137133
protected abstract byte[] getVariableHeader() throws MqttException;

0 commit comments

Comments
 (0)