Skip to content
5 changes: 3 additions & 2 deletions java/org/denovogroup/rangzen/BUCK
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ android_library(
'FriendStore.java',
'HotspotPeerNetwork.java',
'LocationStore.java',
'MessageStore.java',
'DbCountMonitor.java',
'RangzenMessageStore.java',
'Peer.java',
'PeerConnectionCallback.java',
'PeerManager.java',
Expand All @@ -23,7 +24,7 @@ android_library(
'StorageBase.java',
'WifiDirectFrameworkGetter.java',
'WifiDirectPeerNetwork.java',
'WifiDirectSpeaker.java',
'WifiDirectSpeaker.java'
],
visibility = [ 'PUBLIC' ],
deps = [
Expand Down
7 changes: 1 addition & 6 deletions java/org/denovogroup/rangzen/BluetoothSpeaker.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,9 @@
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.content.Context;
import android.util.Log;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Date;
import java.util.UUID;
import java.util.regex.Pattern;

Expand Down Expand Up @@ -288,7 +283,7 @@ private void acceptConnection() throws IOException {
mSocket.getOutputStream(),
false,
new FriendStore(mContext, StorageBase.ENCRYPTION_DEFAULT),
new MessageStore(mContext, StorageBase.ENCRYPTION_DEFAULT),
RangzenMessageStore.getInstance(mContext),
mContext.mExchangeCallback);
//mExchange.execute((Boolean) null);
// Start the exchange.
Expand Down
8 changes: 4 additions & 4 deletions java/org/denovogroup/rangzen/CryptographicExchange.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,17 @@
*/
package org.denovogroup.rangzen;

import android.util.Log;

import org.denovogroup.rangzen.Crypto.PrivateSetIntersection;
import org.denovogroup.rangzen.Crypto.PrivateSetIntersection.ServerReplyTuple;

import java.io.InputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;

import android.util.Log;

import okio.ByteString;

/**
Expand Down Expand Up @@ -266,7 +266,7 @@ private ServerReplyTuple getSRTFromServerTuple() {
* Pass-through constructor to superclass constructor.
*/
public CryptographicExchange(InputStream in, OutputStream out, boolean asInitiator,
FriendStore friendStore, MessageStore messageStore,
FriendStore friendStore, RangzenMessageStore messageStore,
ExchangeCallback callback) throws IllegalArgumentException {
super(in, out, asInitiator, friendStore, messageStore, callback);
}
Expand Down
85 changes: 85 additions & 0 deletions java/org/denovogroup/rangzen/DbCountMonitor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package org.denovogroup.rangzen;

import android.os.Handler;
import android.os.Looper;

import java.util.ArrayList;
import java.util.List;

/**
* Helper class for notifying listeners when changes occur.
*/
public class DbCountMonitor {

/** Handler to the Android main thread */
private final Handler mHandler = new Handler(Looper.getMainLooper());

/** List of db-listeners */
private final List<DbListener> mDbListeners = new ArrayList<>();

/**
* Add a CursorListener to be notified when the DB is changed, this call must be
* done on the main thread.
*
* @param dbListener
*/
public void addListener(final DbListener dbListener) {
if (!isOnMainThread()) {
throw new RuntimeException("listeners must be added on the UI thread");
}

mDbListeners.add(dbListener);
}

/**
* Remove a CursorListener, this call must be done on the main thread.
*
* @param cursorListener
*/
public void removeListener(final DbListener cursorListener) {
if (!isOnMainThread()) {
throw new RuntimeException("listeners must be removed on the UI thread");
}

mDbListeners.remove(cursorListener);
}

/**
* Helper method, notifies all listeners on the Android main thread when a change occurs.
* This method can be called from any thread.
*/
public void notifyAllListeners() {
mHandler.post(new Runnable() {
@Override
public void run() {
if (!mDbListeners.isEmpty()) {
for (DbListener cursorListener : mDbListeners) {
cursorListener.dbUpdated();
}
}
}
});
}

/**
* A DB listener
*/
public interface DbListener {

/**
* The Db this listener is listening to has been updated.
* This call comes on the main thread, no long running operations should be performed on it.
*/
void dbUpdated();
}

/**
* Helper method to determine if we are on the Android main thread.
*
* @return true if we are on the Android main thread.
*/
public static boolean isOnMainThread() {
return Looper.myLooper() == Looper.getMainLooper();
}

}
47 changes: 18 additions & 29 deletions java/org/denovogroup/rangzen/Exchange.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@
*/
package org.denovogroup.rangzen;

import com.squareup.wire.Wire;
import android.util.Log;

import com.squareup.wire.Message;
import com.squareup.wire.Wire;

import android.util.Log;
import org.denovogroup.rangzen.RangzenMessageStore.RangzenAppMessage;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
Expand All @@ -55,7 +56,7 @@ public class Exchange implements Runnable {
/** Store of friends to use in this exchange. */
/* package */ FriendStore friendStore;
/** Store of messages to use in this exchange. */
/* package */ MessageStore messageStore;
/* package */ RangzenMessageStore messageStore;
/** Input stream connected to the remote communication partner. */
/* package */ InputStream in;
/** Output stream connected to the remote communication partner. */
Expand Down Expand Up @@ -143,7 +144,7 @@ enum Status {
* @param messageStore A store of messages to exchange with the remote peer.
*/
public Exchange(InputStream in, OutputStream out, boolean asInitiator,
FriendStore friendStore, MessageStore messageStore,
FriendStore friendStore, RangzenMessageStore messageStore,
ExchangeCallback callback) throws IllegalArgumentException {
this.in = in;
this.out = out;
Expand Down Expand Up @@ -198,19 +199,13 @@ private void sendFriends() {
* return them. If no messages, returns a empty list.
*
* @return The top NUM_MESSAGES_TO_SEND in the MessageStore.
* @see NUM_MESSAGES_TO_SEND;
* @see {@link Exchange#NUM_MESSAGES_TO_SEND};
*/
/* package */ List<RangzenMessage> getMessages() {
List<RangzenMessage> messages = new ArrayList<RangzenMessage>();
for (int k=0; k<NUM_MESSAGES_TO_SEND; k++) {
MessageStore.Message messageFromStore = messageStore.getKthMessage(k, 0, null);
if (messageFromStore == null) {
break;
}
messages.add(new RangzenMessage.Builder()
.text(messageFromStore.getMessage())
.priority(messageFromStore.getPriority())
.build());
/* package */ List<RangzenMessage> getMessages() {
final List<RangzenAppMessage> messagesFromDb = messageStore.getKMessages(NUM_MESSAGES_TO_SEND);
final List<RangzenMessage> messages = new ArrayList<RangzenMessage>(messagesFromDb.size());
for (RangzenAppMessage appMessage : messagesFromDb) {
messages.add(new RangzenMessage(appMessage.mMessage, appMessage.mPriority));
}
return messages;
}
Expand All @@ -220,18 +215,12 @@ private void sendFriends() {
* object, and write that Message out to the output stream.
*/
private void sendMessages() {
List<RangzenMessage> messages = new ArrayList<RangzenMessage>();
for (int k=0; k<NUM_MESSAGES_TO_SEND; k++) {
MessageStore.Message messageFromStore = messageStore.getKthMessage(k, 0, null);
if (messageFromStore == null) {
break;
}
messages.add(new RangzenMessage.Builder()
.text(messageFromStore.getMessage())
.priority(messageFromStore.getPriority())
.build());
final List<RangzenAppMessage> messagesFromDb = messageStore.getKMessages(NUM_MESSAGES_TO_SEND);
final List<RangzenMessage> messages = new ArrayList<RangzenMessage>(messagesFromDb.size());
for (RangzenAppMessage appMessage : messagesFromDb) {
messages.add(new RangzenMessage(appMessage.mMessage, appMessage.mPriority));
}
CleartextMessages messagesMessage = new CleartextMessages.Builder()
final CleartextMessages messagesMessage = new CleartextMessages.Builder()
.messages(messages)
.build();
lengthValueWrite(out, messagesMessage);
Expand Down
Loading