Skip to content

Commit

Permalink
fixed performance issue for eventual concurrency
Browse files Browse the repository at this point in the history
The protocol should treat POST responses containing 0 entries as valid,
a common occurrence for eventual concurrency. This is already
implemented correctly in the iOS client, and an oversight in the
Android client.
  • Loading branch information
Michael Farb committed Sep 4, 2014
1 parent d4de39a commit 4f07070
Showing 1 changed file with 35 additions and 40 deletions.
75 changes: 35 additions & 40 deletions src/edu/cmu/cylab/starslinger/exchange/ExchangeController.java
Original file line number Diff line number Diff line change
Expand Up @@ -269,17 +269,15 @@ private boolean syncCommitments() {
offset += 4;
tmpBuf = new byte[theirs.limit() - offset];
theirs.get(tmpBuf, 0, theirs.remaining());
if (mNumUsersCommit == 0) {
return handleError(new String(tmpBuf));
}

usridList = appendServerUserIds(usridList, tmpBuf);
commitList = appendServerBytes(commitList, tmpBuf);

if (mNumUsersCommit > mNumUsers) {
return handleError(R.string.error_MoreDataThanUsers);
} else if (mNumUsersCommit == mNumUsers) {
commitRet = 1;
if (mNumUsersCommit > 0) {
usridList = appendServerUserIds(usridList, tmpBuf);
commitList = appendServerBytes(commitList, tmpBuf);

if (mNumUsersCommit > mNumUsers) {
return handleError(R.string.error_MoreDataThanUsers);
} else if (mNumUsersCommit == mNumUsers) {
commitRet = 1;
}
}

// make sure we aren't waiting forever
Expand Down Expand Up @@ -352,16 +350,15 @@ private boolean syncData() {
offset += 4;
byte tmpBuf[] = new byte[theirs.limit() - offset];
theirs.get(tmpBuf, 0, theirs.remaining());
if (mNumUsersData == 0)
return handleError(new String(tmpBuf));

usridList = appendServerUserIds(usridList, tmpBuf);
dataList = appendServerBytes(dataList, tmpBuf);

if (mNumUsersData > mNumUsers) {
return handleError(R.string.error_MoreDataThanUsers);
} else if (mNumUsersData == mNumUsers) {
dataRet = 1;
if (mNumUsersData > 0) {
usridList = appendServerUserIds(usridList, tmpBuf);
dataList = appendServerBytes(dataList, tmpBuf);

if (mNumUsersData > mNumUsers) {
return handleError(R.string.error_MoreDataThanUsers);
} else if (mNumUsersData == mNumUsers) {
dataRet = 1;
}
}

// make sure we aren't waiting forever
Expand Down Expand Up @@ -544,16 +541,15 @@ private boolean syncSigs(byte[] sig) {
offset += 4;
byte tmpBuf[] = new byte[theirs.limit() - offset];
theirs.get(tmpBuf, 0, theirs.remaining());
if (mNumUsersSigs == 0)
return handleError(new String(tmpBuf));

usridList = appendServerUserIds(usridList, tmpBuf);
sigsList = appendServerBytes(sigsList, tmpBuf);
if (mNumUsersSigs > 0) {
usridList = appendServerUserIds(usridList, tmpBuf);
sigsList = appendServerBytes(sigsList, tmpBuf);

if (mNumUsersSigs > mNumUsers) {
return handleError(R.string.error_MoreDataThanUsers);
} else if (mNumUsersSigs == mNumUsers) {
dataRet = 1;
if (mNumUsersSigs > mNumUsers) {
return handleError(R.string.error_MoreDataThanUsers);
} else if (mNumUsersSigs == mNumUsers) {
dataRet = 1;
}
}

// make sure we aren't waiting forever
Expand Down Expand Up @@ -723,16 +719,15 @@ private boolean syncMatchNonce(byte[] nonceData) {
offset += 4;
byte tmpBuf[] = new byte[theirs.limit() - offset];
theirs.get(tmpBuf, 0, theirs.remaining());
if (mNumUsersMatchNonces == 0)
return handleError(new String(tmpBuf));

usridList = appendServerUserIds(usridList, tmpBuf);
nonceList = appendServerBytes(nonceList, tmpBuf);

if (mNumUsersMatchNonces > mNumUsers) {
return handleError(R.string.error_MoreDataThanUsers);
} else if (mNumUsersMatchNonces == mNumUsers) {
dataRet = 1;
if (mNumUsersMatchNonces > 0) {
usridList = appendServerUserIds(usridList, tmpBuf);
nonceList = appendServerBytes(nonceList, tmpBuf);

if (mNumUsersMatchNonces > mNumUsers) {
return handleError(R.string.error_MoreDataThanUsers);
} else if (mNumUsersMatchNonces == mNumUsers) {
dataRet = 1;
}
}

// make sure we aren't waiting forever
Expand Down

0 comments on commit 4f07070

Please sign in to comment.