Android Open Source - sdl_tester_android Sdl Response Tracker






From Project

Back to project page sdl_tester_android.

License

The source code is released under:

Copyright (c) 2014, Ford Motor Company All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are m...

If you think the Android project sdl_tester_android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.livio.sdl;
//from   w  w w . ja  v  a  2  s. co  m
import android.util.SparseArray;

import com.livio.sdl.utils.Timeout;
import com.smartdevicelink.proxy.RPCRequest;

/**
 * Tracks outgoing requests to core and sets a timeout for when the response
 * should come back from core.  If a request isn't received by the time
 * the timeout expires, it should be assumed that SDL core disconnected.
 *
 * @author Mike Burke
 *
 */
public class SdlResponseTracker {

  /**
   * Listener interface for SdlResponseTracker.  Contains callback method
   * for when any request times out.
   *
   * @author Mike Burke
   *
   */
  public interface Listener{
    public void onRequestTimedOut();
  }
  
  /**
   * Default timeout to receive a response for a typical request.
   */
  public static final int DEFAULT_TIMEOUT = 5000; // 5 seconds
  
  private SparseArray<RPCRequest> requests = new SparseArray<RPCRequest>();
  private SparseArray<Timeout> timeouts = new SparseArray<Timeout>();
  
  private Listener listener;
  
  public SdlResponseTracker(Listener l) {
    this.listener = l;
  }
  
  /**
   * Adds a request to the tracker with a default timeout.
   * 
   * @param request The request to track
   */
  public void add(RPCRequest request){
    add(request, DEFAULT_TIMEOUT);
  }
  
  /**
   * Adds a request to the tracker with a specified timeout.
   * 
   * @param request The request to track
   * @param duration The timeout duration (in ms)
   */
  public void add(RPCRequest request, int duration){
    int corrId = request.getCorrelationID();
    requests.put(corrId, request);
    
    Timeout timeout = new Timeout(duration, new Timeout.Listener() {
      @Override public void onTimeoutCancelled() {}
      
      @Override
      public void onTimeoutCompleted() {
        notifyRequestTimedOut();
      }
    });
    timeout.start();
    timeouts.put(corrId, timeout);
  }
  
  /**
   * Removes the specified correlation id from the tracker.  Also automatically
   * cancels the associated timer for the specified correlation id.
   * 
   * @param corrId The correlation id to stop tracking
   * @return The request that was removed
   */
  public RPCRequest remove(int corrId){
    timeouts.get(corrId).cancel();
    timeouts.remove(corrId);
    
    RPCRequest result = requests.get(corrId);
    requests.remove(corrId);
    return result;
  }
  
  /**
   * Clears all requests being tracked and cancels their associated timeouts.
   */
  public void clear(){
    if(requests != null){
      // loop through requests and remove each one
      for(int numItems = requests.size()-1; numItems >= 0; numItems--){
        RPCRequest request = requests.valueAt(numItems);
        remove(request.getCorrelationID());
      }
    }
  }
  
  private void notifyRequestTimedOut(){
    if(listener != null){
      listener.onRequestTimedOut();
    }
  }

}




Java Source Code List

com.livio.sdl.IdGenerator.java
com.livio.sdl.IpAddress.java
com.livio.sdl.SdlConstants.java
com.livio.sdl.SdlImageItem.java
com.livio.sdl.SdlLogMessage.java
com.livio.sdl.SdlRequestFactory.java
com.livio.sdl.SdlResponseFactory.java
com.livio.sdl.SdlResponseTracker.java
com.livio.sdl.SdlService.java
com.livio.sdl.adapters.SdlImageAdapter.java
com.livio.sdl.adapters.SdlMessageAdapter.java
com.livio.sdl.dialogs.BaseAlertDialog.java
com.livio.sdl.dialogs.BaseImageListDialog.java
com.livio.sdl.dialogs.BaseMultipleListViewDialog.java
com.livio.sdl.dialogs.BaseOkCancelDialog.java
com.livio.sdl.dialogs.BaseSingleListViewDialog.java
com.livio.sdl.dialogs.ImageListDialog.java
com.livio.sdl.dialogs.IndeterminateProgressDialog.java
com.livio.sdl.dialogs.JsonFlipperDialog.java
com.livio.sdl.dialogs.ListViewDialog.java
com.livio.sdl.dialogs.MultipleListViewDialog.java
com.livio.sdl.dialogs.SingleJsonDialog.java
com.livio.sdl.dialogs.TextViewAlertDialog.java
com.livio.sdl.dialogs.TextViewOkCancelDialog.java
com.livio.sdl.enums.EnumClickListener.java
com.livio.sdl.enums.EnumComparator.java
com.livio.sdl.enums.SdlButton.java
com.livio.sdl.enums.SdlCommand.java
com.livio.sdl.enums.SdlImageType.java
com.livio.sdl.enums.SdlInteractionMode.java
com.livio.sdl.enums.SdlLanguage.java
com.livio.sdl.enums.SdlSpeechCapability.java
com.livio.sdl.enums.SdlSystemAction.java
com.livio.sdl.enums.SdlTextAlignment.java
com.livio.sdl.enums.SdlTransportType.java
com.livio.sdl.enums.SdlUpdateMode.java
com.livio.sdl.enums.SdlVehicleData.java
com.livio.sdl.menu.CommandButton.java
com.livio.sdl.menu.MenuItem.java
com.livio.sdl.menu.MenuManager.java
com.livio.sdl.menu.SubmenuButton.java
com.livio.sdl.utils.AndroidUtils.java
com.livio.sdl.utils.ApplicationPreferences.java
com.livio.sdl.utils.Counter.java
com.livio.sdl.utils.DownCounter.java
com.livio.sdl.utils.MathUtils.java
com.livio.sdl.utils.SdlUtils.java
com.livio.sdl.utils.StringUtils.java
com.livio.sdl.utils.Timeout.java
com.livio.sdl.utils.UpCounter.java
com.livio.sdl.utils.WifiUtils.java
com.livio.sdl.viewhelpers.MinMaxInputFilter.java
com.livio.sdl.viewhelpers.SeekBarCalculator.java
com.livio.sdltester.HelpActivity.java
com.livio.sdltester.LivioSdlTesterPreferences.java
com.livio.sdltester.MainActivity.java
com.livio.sdltester.SdlTesterImageResource.java
com.livio.sdltester.dialogs.AddCommandDialog.java
com.livio.sdltester.dialogs.AddSubMenuDialog.java
com.livio.sdltester.dialogs.ButtonSubscriptionDialog.java
com.livio.sdltester.dialogs.ButtonUnsubscriptionDialog.java
com.livio.sdltester.dialogs.ChangeRegistrationDialog.java
com.livio.sdltester.dialogs.ChoiceItemDialog.java
com.livio.sdltester.dialogs.CreateInteractionChoiceSetDialog.java
com.livio.sdltester.dialogs.DeleteCommandDialog.java
com.livio.sdltester.dialogs.DeleteFileDialog.java
com.livio.sdltester.dialogs.DeleteInteractionDialog.java
com.livio.sdltester.dialogs.DeleteSubmenuDialog.java
com.livio.sdltester.dialogs.GetDtcsDialog.java
com.livio.sdltester.dialogs.PerformInteractionDialog.java
com.livio.sdltester.dialogs.PutFileDialog.java
com.livio.sdltester.dialogs.ReadDidsDialog.java
com.livio.sdltester.dialogs.ScrollableMessageDialog.java
com.livio.sdltester.dialogs.SdlAlertDialog.java
com.livio.sdltester.dialogs.SdlConnectionDialog.java
com.livio.sdltester.dialogs.SetAppIconDialog.java
com.livio.sdltester.dialogs.SetMediaClockTimerDialog.java
com.livio.sdltester.dialogs.ShowDialog.java
com.livio.sdltester.dialogs.SliderDialog.java
com.livio.sdltester.dialogs.SoftButtonItemDialog.java
com.livio.sdltester.dialogs.SoftButtonListDialog.java
com.livio.sdltester.dialogs.SpeakDialog.java