Added a new #isConnected() method to allow an external party to query the current status of the connection

develop
Nelson R. Perez 2018-05-02 19:03:17 -05:00
parent b8c0ed6163
commit 04560c0caf
1 changed files with 18 additions and 10 deletions

View File

@ -90,10 +90,12 @@ public class NetworkService extends Service {
}
public int sendMessage(String message){
if(mWebSocket.send(message)){
Log.v(TAG,"> " + message);
if(mWebSocket != null){
if(mWebSocket.send(message)){
Log.v(TAG,"> " + message);
}
}else{
Log.w(TAG,"Message not enqueued");
throw new RuntimeException("Websocket connection has not yet been established");
}
return mCurrentId;
}
@ -106,15 +108,20 @@ public class NetworkService extends Service {
ApiCall call = apiCallable.toApiCall(apiId, ++mCurrentId);
if(mWebSocket.send(call.toJsonString())){
Log.v(TAG,"-> "+call.toJsonString());
}else{
Log.w(TAG,"Message not enqueued");
}
return mCurrentId;
}
/**
* Method used to inform any external party a clue about the current connectivity status
* @return True if the service is currently connected and logged in, false otherwise.
*/
public boolean isConnected(){
return mWebSocket != null && isLoggedIn;
}
@Override
public void onDestroy() {
Log.d(TAG,"onDestroy");
if(mWebSocket != null)
mWebSocket.close(NORMAL_CLOSURE_STATUS, null);
}
@ -148,6 +155,7 @@ public class NetworkService extends Service {
@Override
public void onOpen(WebSocket webSocket, Response response) {
super.onOpen(webSocket, response);
Log.d(TAG,"onOpen");
mWebSocket = webSocket;
// Notifying all listeners about the new connection status
@ -173,11 +181,11 @@ public class NetworkService extends Service {
// We will only handle messages that relate to the login and API accesses here.
if(response.result != null){
if(response.result instanceof Double || response.result instanceof Boolean){
if(mLastCall == RPC.CALL_LOGIN){
if(mLastCall.equals(RPC.CALL_LOGIN)){
isLoggedIn = true;
checkNextRequestedApiAccess();
}else if(mLastCall == RPC.CALL_DATABASE){
}else if(mLastCall.equals(RPC.CALL_DATABASE)){
// Deserializing integer response
Type IntegerJsonResponse = new TypeToken<JsonRpcResponse<Integer>>(){}.getType();
JsonRpcResponse<Integer> apiIdResponse = gson.fromJson(text, IntegerJsonResponse);
@ -186,7 +194,7 @@ public class NetworkService extends Service {
mApiIds.put(ApiAccess.API_DATABASE, apiIdResponse.result);
checkNextRequestedApiAccess();
}else if(mLastCall == RPC.CALL_HISTORY){
}else if(mLastCall.equals(RPC.CALL_HISTORY)){
// Deserializing integer response
Type IntegerJsonResponse = new TypeToken<JsonRpcResponse<Integer>>(){}.getType();
JsonRpcResponse<Integer> apiIdResponse = gson.fromJson(text, IntegerJsonResponse);
@ -195,7 +203,7 @@ public class NetworkService extends Service {
mApiIds.put(ApiAccess.API_HISTORY, apiIdResponse.result);
checkNextRequestedApiAccess();
}else if(mLastCall == RPC.CALL_NETWORK_BROADCAST){
}else if(mLastCall.equals(RPC.CALL_NETWORK_BROADCAST)){
// Deserializing integer response
Type IntegerJsonResponse = new TypeToken<JsonRpcResponse<Integer>>(){}.getType();
JsonRpcResponse<Integer> apiIdResponse = gson.fromJson(text, IntegerJsonResponse);