aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Android_Studio
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Android_Studio')
-rw-r--r--Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java16
-rw-r--r--Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/ITransporter.java58
-rw-r--r--Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/PendingResponse.java29
-rw-r--r--Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessage.java4
-rw-r--r--Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessageBase.java25
-rw-r--r--Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransporterBase.java225
6 files changed, 83 insertions, 274 deletions
diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java
index 99e2293ae..4788a8082 100644
--- a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java
+++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java
@@ -5,8 +5,6 @@ import android.net.DhcpInfo;
import android.net.wifi.WifiManager;
import android.os.StrictMode;
import android.os.SystemClock;
-import android.provider.SyncStateContract.Constants;
-import android.util.Log;
import com.elvishew.xlog.XLog;
import com.google.protobuf.GeneratedMessageV3;
@@ -21,7 +19,6 @@ import com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType;
import com.twine.tango.pmr.integration.ExternalBridgeUdpDiscoveryPacketOuterClass.ExternalBridgeUdpDiscoveryPacket;
import com.twine.tango.pmr.integration.ExternalClientLoginRequestOuterClass.ExternalClientLoginRequest;
import com.twine.tango.pmr.integration.ExternalClientLoginResponseOuterClass.ExternalClientLoginResponse;
-import com.twine.tango.transport.ITransportAdapter;
import com.twine.tango.transport.ResponseErrorException;
import com.twine.tango.transport.adapters.TcpTransportAdapter;
import com.twine.tango.transport.transporters.ProtoTransporter;
@@ -170,14 +167,13 @@ public class ExternalBridgeService extends ProtoTransporter implements IExternal
if (newSocket != null)
{
- for (ITransportAdapter adapter : getAdapters())
+ if (getAdapter() != null)
{
- adapter.disconnect().blockingAwait();
+ getAdapter().disconnect().blockingAwait();
}
- getAdapters().clear();
TcpTransportAdapter adapter = new TcpTransportAdapter(newSocket);
adapter.setAuthenticated(false);
- getAdapters().add(adapter);
+ setAdapter(adapter);
connect().blockingAwait();
}
@@ -205,7 +201,7 @@ public class ExternalBridgeService extends ProtoTransporter implements IExternal
ExternalClientLoginRequest request = MessageFactory.parseMessageFromContainer(container);
if (request.getPassword().equals("Aa123456")) //TODO: Compare with global machine settings password...
{
- getAdapters().get(0).setAuthenticated(true);
+ getAdapter().setAuthenticated(true);
sendResponse(MessageFactory.createTangoMessage(
ExternalClientLoginResponse.class,
ExternalClientLoginResponse.newBuilder().setAuthenticated(true).build(),
@@ -213,7 +209,7 @@ public class ExternalBridgeService extends ProtoTransporter implements IExternal
}
else
{
- getAdapters().get(0).setAuthenticated(false);
+ getAdapter().setAuthenticated(false);
sendResponse(MessageFactory.createTangoMessage(
ExternalClientLoginResponse.class,
ExternalClientLoginResponse.newBuilder().setAuthenticated(false).build(),
@@ -223,7 +219,7 @@ public class ExternalBridgeService extends ProtoTransporter implements IExternal
return;
}
- if (getAdapters().get(0).isAuthenticated())
+ if (getAdapter().isAuthenticated())
{
GeneratedMessageV3 message = MessageFactory.parseMessageFromContainerAgnostic(container);
diff --git a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/ITransporter.java b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/ITransporter.java
index 82328ef18..5531f69c9 100644
--- a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/ITransporter.java
+++ b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/ITransporter.java
@@ -20,32 +20,28 @@ public interface ITransporter extends ITransportComponent
{
/**
- * Gets the collection of adapters.
+ * Gets the adapter.
*
- * @return the adapters
+ * @return the adapter
*/
- ObservableCollection<ITransportAdapter> getAdapters();
+ ITransportAdapter getAdapter();
/**
- * Send a request to all adapters.
+ * Sets the adapter.
*
- * @param <Request> the type parameter
- * @param <Response> the type parameter
- * @param request the request
- * @return the single
+ * @param adapter the adapter
*/
- <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request);
+ void setAdapter(ITransportAdapter adapter);
/**
- * Sends a request on the specified adapter.
+ * Send a request to all adapters.
*
* @param <Request> the type parameter
* @param <Response> the type parameter
* @param request the request
- * @param adapter the adapter
* @return the single
*/
- <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request, ITransportAdapter adapter);
+ <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request);
/**
* Send a request to all adapters.
@@ -59,18 +55,6 @@ public interface ITransporter extends ITransportComponent
<Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request, Period timeout);
/**
- * Sends a request on the specified adapter.
- *
- * @param <Request> the type parameter
- * @param <Response> the type parameter
- * @param request the request
- * @param adapter the adapter
- * @param timeout the timeout
- * @return the single
- */
- <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request, ITransportAdapter adapter, Period timeout);
-
- /**
* Sends a continuous request on all adapters.
*
* @param <Request> the type parameter
@@ -81,17 +65,6 @@ public interface ITransporter extends ITransportComponent
<Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Observable<TangoMessage<Response>> sendContinuousRequest(TangoMessage<Request> request);
/**
- * Sends a continuous request on the specified adapter.
- *
- * @param <Request> the type parameter
- * @param <Response> the type parameter
- * @param request the request
- * @param adapter the adapter
- * @return the observable
- */
- <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Observable<TangoMessage<Response>> sendContinuousRequest(TangoMessage<Request> request, ITransportAdapter adapter);
-
- /**
* Sends a response.
*
* @param <Response> the type parameter
@@ -158,19 +131,4 @@ public interface ITransporter extends ITransportComponent
* @return the fails with adapter
*/
boolean getFailsWithAdapter();
-
- /**
- * Sets a value indicating whether the transporter should remove an adapter when it fails.
- *
- * @param value the value
- */
- void setRemoveAdaptersOnFailed(boolean value);
-
- /**
- * Gets a value indicating whether the transporter should remove an adapter when it fails.
- *
- * @return the remove adapters on fail
- */
- boolean getRemoveAdaptersOnFail();
-
}
diff --git a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/PendingResponse.java b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/PendingResponse.java
index bb4f2505a..91106aba0 100644
--- a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/PendingResponse.java
+++ b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/PendingResponse.java
@@ -4,30 +4,10 @@ package com.twine.tango.transport;
/**
* Represents a pending response waiting to be returned to the request sender.
*/
-public class PendingResponse {
-
- private ITransportAdapter adapter;
- private boolean isContinuous;
-
- /**
- * Gets adapter.
- *
- * @return the adapter
- */
- public ITransportAdapter getAdapter()
- {
- return adapter;
- }
+public class PendingResponse
+{
- /**
- * Sets adapter.
- *
- * @param adapter the adapter
- */
- public void setAdapter(ITransportAdapter adapter)
- {
- this.adapter = adapter;
- }
+ private boolean isContinuous;
/**
* Is continuous boolean.
@@ -55,9 +35,8 @@ public class PendingResponse {
* @param adapter the adapter
* @param isContinuous is continuous
*/
- public PendingResponse(ITransportAdapter adapter, boolean isContinuous)
+ public PendingResponse(boolean isContinuous)
{
- this.adapter = adapter;
this.isContinuous = isContinuous;
}
}
diff --git a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessage.java b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessage.java
index 2acf2da85..a787d62ff 100644
--- a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessage.java
+++ b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessage.java
@@ -25,9 +25,9 @@ public class TransportMessage<T> extends TransportMessageBase
* @param serialize the serialize
* @param publishSubject the publish subject
*/
- public TransportMessage(ITransportAdapter adapter, String token, Object message, TransportMessageDirection direction, Func<byte[]> serialize, PublishSubject<T> publishSubject)
+ public TransportMessage(String token, Object message, TransportMessageDirection direction, Func<byte[]> serialize, PublishSubject<T> publishSubject)
{
- super(adapter, token, message, direction, serialize);
+ super(token, message, direction, serialize);
this.publishSubject = publishSubject;
}
diff --git a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessageBase.java b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessageBase.java
index 718a1c66b..49d2fd31a 100644
--- a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessageBase.java
+++ b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessageBase.java
@@ -8,8 +8,6 @@ import com.twine.tango.core.Func;
*/
public abstract class TransportMessageBase
{
-
- private ITransportAdapter adapter;
private boolean isContinuous;
private String token;
private TransportMessageDirection direction;
@@ -32,26 +30,6 @@ public abstract class TransportMessageBase
protected abstract void setException(Exception error);
/**
- * Gets adapter.
- *
- * @return the adapter
- */
- public ITransportAdapter getAdapter()
- {
- return adapter;
- }
-
- /**
- * Sets adapter.
- *
- * @param adapter the adapter
- */
- public void setAdapter(ITransportAdapter adapter)
- {
- this.adapter = adapter;
- }
-
- /**
* Is continuous boolean.
*
* @return the boolean
@@ -160,9 +138,8 @@ public abstract class TransportMessageBase
* @param direction the direction
* @param serialize the serialize
*/
- public TransportMessageBase(ITransportAdapter adapter, String token, Object message, TransportMessageDirection direction, Func<byte[]> serialize)
+ public TransportMessageBase(String token, Object message, TransportMessageDirection direction, Func<byte[]> serialize)
{
- this.adapter = adapter;
this.token = token;
this.direction = direction;
this.serialize = serialize;
diff --git a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransporterBase.java b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransporterBase.java
index 92ecf1220..8901b4c20 100644
--- a/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransporterBase.java
+++ b/Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransporterBase.java
@@ -2,16 +2,14 @@ package com.twine.tango.transport;
import android.os.AsyncTask;
import android.os.SystemClock;
-import android.util.Pair;
import com.elvishew.xlog.XLog;
import com.google.protobuf.GeneratedMessageV3;
import com.google.protobuf.InvalidProtocolBufferException;
import com.twine.tango.core.Event;
-import com.twine.tango.core.IEventHandler;
import com.twine.tango.core.Func;
+import com.twine.tango.core.IEventHandler;
import com.twine.tango.core.ObjectDisposedException;
-import com.twine.tango.core.ObservableCollection;
import com.twine.tango.pmr.MessageFactory;
import com.twine.tango.pmr.TangoMessage;
import com.twine.tango.pmr.common.ErrorCodeOuterClass.ErrorCode;
@@ -47,17 +45,16 @@ public abstract class TransporterBase implements ITransporter
private ConcurrentLinkedQueue<TransportMessageBase> sendingQueue;
private List<TransportMessageBase> pendingRequests;
- private ConcurrentLinkedQueue<Pair<ITransportAdapter, byte[]>> arrivedResponses;
+ private ConcurrentLinkedQueue<byte[]> arrivedResponses;
private Thread pushThread;
private Thread pullThread;
private Thread keepAliveThread;
- private ObservableCollection<ITransportAdapter> adapters;
+ private ITransportAdapter adapter;
private Map<String, PendingResponse> pendingResponses;
private TransportComponentState state;
private Period requestTimeout;
private boolean useKeepAlive;
private boolean failsWithAdapter;
- private boolean removeAdaptersOnFailed;
//region Events
@@ -69,29 +66,30 @@ public abstract class TransporterBase implements ITransporter
//region Properties
@Override
- public ObservableCollection<ITransportAdapter> getAdapters()
+ public ITransportAdapter getAdapter()
{
- return adapters;
+ return adapter;
}
- /**
- * Sets adapters.
- *
- * @param adapters the adapters
- */
- protected void setAdapters(ObservableCollection<ITransportAdapter> adapters)
+ @Override
+ public void setAdapter(ITransportAdapter adapter)
{
+ this.adapter = adapter;
- if (this.adapters != null)
- {
- adapters.clearOnChangeListener();
- }
-
- this.adapters = adapters;
+ XLog.i("Adapter changed:");
- if (this.adapters != null)
+ if (this.adapter != null)
{
- adapters.setOnChangeListener(this::onAdaptersChanged);
+ XLog.i(adapter.getClass().getName() + ", " + adapter.getAddress() + ", " + adapter.getState());
+
+ adapter.removeStateChangedListener(this::onAdapterStateChanged);
+ adapter.addStateChangedListener(this::onAdapterStateChanged);
+ adapter.setDataAvailableListener(this::onAdapterDataAvailable);
+
+ if (this.getState() == TransportComponentState.Connected && adapter.getState() == TransportComponentState.Disconnected)
+ {
+ adapter.connect().subscribe();
+ }
}
}
@@ -148,63 +146,21 @@ public abstract class TransporterBase implements ITransporter
return failsWithAdapter;
}
- @Override
- public void setRemoveAdaptersOnFailed(boolean value)
- {
- removeAdaptersOnFailed = value;
- }
-
- @Override
- public boolean getRemoveAdaptersOnFail()
- {
- return removeAdaptersOnFailed;
- }
-
//endregion
//region Protected Methods
- /**
- * On adapters changed.
- */
- protected void onAdaptersChanged()
- {
-
- XLog.i("Adapters collection changed, Listing adapters:");
-
- for (ITransportAdapter adapter : adapters)
- {
-
- XLog.i(adapter.getClass().getName() + ", " + adapter.getAddress() + ", " + adapter.getState());
-
- adapter.removeStateChangedListener(this::onAdapterStateChanged);
- adapter.addStateChangedListener(this::onAdapterStateChanged);
- adapter.setDataAvailableListener(this::onAdapterDataAvailable);
-
- if (this.getState() == TransportComponentState.Connected && adapter.getState() == TransportComponentState.Disconnected)
- {
- adapter.connect().subscribe();
- }
- }
- }
-
private void onAdapterDataAvailable(Object sender, byte[] data)
{
- arrivedResponses.add(new Pair<>((ITransportAdapter) sender, data));
+ arrivedResponses.add(data);
}
private void onAdapterStateChanged(Object sender, TransportComponentState state)
{
-
- if (state == TransportComponentState.Failed && removeAdaptersOnFailed)
- {
- adapters.remove((ITransportAdapter) sender);
- }
-
if (state == TransportComponentState.Failed && failsWithAdapter)
{
- onFailed(new ObjectDisposedException("One of the transporter adapters has failed. Going into a failed state..."));
+ onFailed(new ObjectDisposedException("The adapter has failed. Going into a failed state..."));
}
}
@@ -303,7 +259,6 @@ public abstract class TransporterBase implements ITransporter
public TransporterBase()
{
stateChangedEvent = new Event<>();
- setAdapters(new ObservableCollection<>());
pendingResponses = new HashMap<>();
sendingQueue = new ConcurrentLinkedQueue<>();
pendingRequests = new ArrayList<>();
@@ -319,7 +274,7 @@ public abstract class TransporterBase implements ITransporter
public TransporterBase(ITransportAdapter adapter)
{
this();
- adapters.add(adapter);
+ this.adapter = adapter;
}
//endregion
@@ -353,12 +308,7 @@ public abstract class TransporterBase implements ITransporter
{
throwIfDisposed();
- if (adapters.size() == 0)
- {
- throw new IllegalArgumentException("This transporter has zero adapters.");
- }
-
- for (ITransportAdapter adapter : adapters)
+ if (adapter != null)
{
adapter.connect().blockingAwait();
}
@@ -368,8 +318,7 @@ public abstract class TransporterBase implements ITransporter
XLog.i("Transporter connected...");
x.onComplete();
- }
- catch (Exception e)
+ } catch (Exception e)
{
XLog.e("Error connecting transporter", e);
x.onError(e);
@@ -386,7 +335,7 @@ public abstract class TransporterBase implements ITransporter
{
throwIfDisposed();
- for (ITransportAdapter adapter : adapters)
+ if (adapter != null)
{
adapter.disconnect().blockingAwait();
}
@@ -396,8 +345,7 @@ public abstract class TransporterBase implements ITransporter
XLog.i("Transporter disconnected...");
x.onComplete();
- }
- catch (Exception e)
+ } catch (Exception e)
{
x.onError(e);
}
@@ -408,29 +356,17 @@ public abstract class TransporterBase implements ITransporter
@Override
public <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request)
{
- return sendRequest(request, null, getRequestTimeout());
- }
-
- @Override
- public <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request, ITransportAdapter adapter)
- {
- return sendRequest(request, adapter, getRequestTimeout());
+ return sendRequest(request, getRequestTimeout());
}
@Override
public <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request, Period timeout)
{
- return sendRequest(request, null, timeout);
- }
-
- @Override
- public <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Single<TangoMessage<Response>> sendRequest(TangoMessage<Request> request, ITransportAdapter adapter, Period timeout)
- {
- XLog.i("Queuing request message: " + request.getClass().getSimpleName() + " Token: " + request.getContainer().getToken() + " on adapter: " + (adapter != null ? adapter.getAddress() : "ALL"));
+ XLog.i("Queuing request message: " + request.getContainer().getType() + " Token: " + request.getContainer().getToken());
XLog.i("Expected response: " + Response.Builder.class.getSimpleName());
PublishSubject<TangoMessage<Response>> subject = PublishSubject.create();
- TransportMessage<TangoMessage<Response>> message = new TransportMessage<>(adapter, request.getContainer().getToken(), request, TransportMessageDirection.Request, onSerializingMessage(request), subject);
+ TransportMessage<TangoMessage<Response>> message = new TransportMessage<>(request.getContainer().getToken(), request, TransportMessageDirection.Request, onSerializingMessage(request), subject);
sendingQueue.add(message);
Completable.timer(getRequestTimeout().getSeconds(), TimeUnit.SECONDS)
@@ -451,20 +387,14 @@ public abstract class TransporterBase implements ITransporter
@Override
public <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Observable<TangoMessage<Response>> sendContinuousRequest(TangoMessage<Request> request)
{
- return sendContinuousRequest(request, null);
- }
-
- @Override
- public <Request extends GeneratedMessageV3, Response extends GeneratedMessageV3> Observable<TangoMessage<Response>> sendContinuousRequest(TangoMessage<Request> request, ITransportAdapter adapter)
- {
- XLog.i("Queuing continuous response request message: " + request.getClass().getSimpleName() + " Token: " + request.getContainer().getToken() + " on adapter: " + (adapter != null ? adapter.getAddress() : "ALL"));
+ XLog.i("Queuing continuous response request message: " + request.getContainer().getType() + " Token: " + request.getContainer().getToken());
XLog.i("Expected response: " + Response.Builder.class.getSimpleName());
request.getContainer().setContinuous(true);
request.getContainer().setCompleted(false);
PublishSubject<TangoMessage<Response>> subject = PublishSubject.create();
- TransportMessage<TangoMessage<Response>> message = new TransportMessage<>(adapter, request.getContainer().getToken(), request, TransportMessageDirection.Request, onSerializingMessage(request), subject);
+ TransportMessage<TangoMessage<Response>> message = new TransportMessage<>(request.getContainer().getToken(), request, TransportMessageDirection.Request, onSerializingMessage(request), subject);
message.setContinuous(true);
sendingQueue.add(message);
@@ -486,7 +416,6 @@ public abstract class TransporterBase implements ITransporter
XLog.i("Queuing response message: " + response.getClass().getSimpleName());
PendingResponse pendingResponse = null;
- ITransportAdapter adapter = null;
XLog.i("Searching for matching request token: " + token);
@@ -494,21 +423,18 @@ public abstract class TransporterBase implements ITransporter
if (pendingResponse != null)
{
- adapter = pendingResponse.getAdapter();
XLog.i("Found matching request token: " + token + " on adapter: " + adapter.getAddress());
if (!pendingResponse.isContinuous())
{
XLog.i("Removing matching request token...");
pendingResponses.remove(token);
- }
- else if (response.getContainer().getCompleted())
+ } else if (response.getContainer().getCompleted())
{
XLog.i("Response completed. Removing matching request token...");
pendingResponses.remove(token);
}
- }
- else
+ } else
{
//This should never happen.
XLog.w("Matching request token was not found...");
@@ -516,7 +442,7 @@ public abstract class TransporterBase implements ITransporter
}
PublishSubject<Response> subject = PublishSubject.create();
- TransportMessage<Response> message = new TransportMessage<>(adapter, token, response, TransportMessageDirection.Response, onSerializingMessage(response), subject);
+ TransportMessage<Response> message = new TransportMessage<>(token, response, TransportMessageDirection.Response, onSerializingMessage(response), subject);
sendingQueue.add(message);
return subject.singleOrError().toCompletable();
@@ -571,7 +497,7 @@ public abstract class TransporterBase implements ITransporter
while (getState() == TransportComponentState.Connected)
{
- if (sendingQueue.size() > 0)
+ if (adapter != null && sendingQueue.size() > 0)
{
TransportMessageBase message = null;
message = sendingQueue.poll();
@@ -580,36 +506,20 @@ public abstract class TransporterBase implements ITransporter
{
try
{
- if (message.getAdapter() == null)
+ if (adapter.getState() == TransportComponentState.Connected)
{
- for (ITransportAdapter adapter : adapters)
- {
- if (adapter.getState() == TransportComponentState.Connected)
- {
- adapter.write(message.getSerialize().invoke());
- XLog.i("message sent on adapter: " + adapter.getAddress() + "...");
- }
- }
- }
- else
- {
- if (message.getAdapter().getState() == TransportComponentState.Connected)
- {
- message.getAdapter().write(message.getSerialize().invoke());
- XLog.i("message sent on adapter: " + message.getAdapter().getAddress() + "...");
- }
+ adapter.write(message.getSerialize().invoke());
+ XLog.i("message sent on adapter: " + adapter.getAddress() + "...");
}
if (message.getDirection() == TransportMessageDirection.Request)
{
pendingRequests.add(message);
- }
- else
+ } else
{
message.setResult(new Object(), true);
}
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
message.setException(ex);
}
@@ -619,8 +529,7 @@ public abstract class TransporterBase implements ITransporter
SystemClock.sleep(10);
}
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
onFailed(ex);
}
@@ -640,24 +549,23 @@ public abstract class TransporterBase implements ITransporter
while (getState() == TransportComponentState.Connected)
{
- Pair<ITransportAdapter, byte[]> data;
+ byte[] data;
- if (arrivedResponses.size() > 0)
+ if (adapter != null && arrivedResponses.size() > 0)
{
data = arrivedResponses.poll();
if (data != null)
{
- XLog.i("Message received on adapter: " + data.first.getAddress());
+ XLog.i("Message received on adapter: " + adapter.getAddress());
XLog.i("Parsing message container...");
MessageContainer container;
try
{
- container = onParseContainer(data.second);
- }
- catch (Exception e)
+ container = onParseContainer(data);
+ } catch (Exception e)
{
XLog.e("Invalid message container received!", e);
continue;
@@ -681,21 +589,18 @@ public abstract class TransporterBase implements ITransporter
if (container.getError() == ErrorCode.NONE)
{
XLog.i("Response has returned with error: " + container.getError().toString());
- request.setResult(onParseTangoMessage(data.second), true);
- }
- else
+ request.setResult(onParseTangoMessage(data), true);
+ } else
{
XLog.i("Parsing inner response message and setting pending request task result...");
- request.setException(new ResponseErrorException(container.getError(), onParseTangoMessage(data.second)));
+ request.setException(new ResponseErrorException(container.getError(), onParseTangoMessage(data)));
}
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
XLog.e("Error parsing inner message", ex);
request.setException(ex);
}
- }
- else
+ } else
{
XLog.i("Pending request was identified as 'continuous response'. keeping pending request.");
@@ -708,29 +613,26 @@ public abstract class TransporterBase implements ITransporter
{
XLog.i("Continuous sequence completed.");
}
- request.setResult(onParseTangoMessage(data.second), container.getCompleted());
- }
- else
+ request.setResult(onParseTangoMessage(data), container.getCompleted());
+ } else
{
XLog.i("Response has returned with error: " + container.getError().toString());
- request.setException(new ResponseErrorException(container.getError(), onParseTangoMessage(data.second)));
+ request.setException(new ResponseErrorException(container.getError(), onParseTangoMessage(data)));
}
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
XLog.e("Error parsing inner message", ex);
request.setException(ex);
}
}
- }
- else
+ } else
{
XLog.i("Message was identified as a new request message: " + container.getType().toString());
try
{
- XLog.i("Saving request token and adapter: " + container.getToken() + ", " + data.first.getAddress());
- pendingResponses.put(container.getToken(), new PendingResponse(data.first, container.getContinuous()));
+ XLog.i("Saving request token: " + container.getToken());
+ pendingResponses.put(container.getToken(), new PendingResponse(container.getContinuous()));
if (container.getType() == MessageType.KeepAliveRequest)
{
@@ -741,14 +643,12 @@ public abstract class TransporterBase implements ITransporter
{
//ex.printStackTrace();
});
- }
- else
+ } else
{
XLog.i("Invoking RequestReceived event...");
AsyncTask.execute(() -> onRequestReceived(container));
}
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
//Ignore any exception that might occur on the event handler side...
}
@@ -759,8 +659,7 @@ public abstract class TransporterBase implements ITransporter
SystemClock.sleep(10);
}
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
onFailed(ex);
}