/**
   * Called after a {@link net.robotmedia.billing.BillingRequest} is sent.
   *
   * @param requestId the id the request.
   * @param request the billing request.
   */
  protected static void onRequestSent(long requestId, BillingRequest request) {
    debug("Request " + requestId + " of type " + request.getRequestType() + " sent");

    if (request.isSuccess()) {
      pendingRequests.put(requestId, request);
    } else if (request.hasNonce()) {
      Security.removeNonce(request.getNonce());
    }
  }
 /**
  * @see com.jdroid.android.billing.BillingManager#checkResponseCode(long,
  *     com.jdroid.android.billing.BillingResponseCode)
  */
 @Override
 public void checkResponseCode(long requestId, BillingResponseCode responseCode) {
   BillingRequest request = sentRequests.get(requestId);
   if (request != null) {
     Log.d(TAG, request.getClass().getSimpleName() + " response code: " + responseCode);
     request.responseCodeReceived(responseCode);
   }
   sentRequests.remove(requestId);
 }
  /**
   * Called after a {@link net.robotmedia.billing.BillingRequest} is sent.
   *
   * @param context
   * @param requestId the id of the request.
   * @param responseCode the response code.
   * @see net.robotmedia.billing.request.ResponseCode
   */
  protected static void onResponseCode(Context context, long requestId, int responseCode) {
    final BillingRequest.ResponseCode response = BillingRequest.ResponseCode.valueOf(responseCode);
    debug("Request " + requestId + " received response " + response);

    final BillingRequest request = pendingRequests.get(requestId);
    if (request != null) {
      pendingRequests.remove(requestId);
      request.onResponseCode(response);
    }
  }
 private void checkResponseCode(long requestId, ResponseCode responseCode) {
   BillingRequest request = (BillingRequest) mSentRequests.get(Long.valueOf(requestId));
   if (request != null) {
     Log.d(
         "Billing Service - [Don]",
         new StringBuilder(String.valueOf(request.getClass().getSimpleName()))
             .append(": ")
             .append(responseCode)
             .toString());
     request.responseCodeReceived(responseCode);
   }
   mSentRequests.remove(Long.valueOf(requestId));
 }
 /**
  * Runs any pending requests that are waiting for a connection to the service to be established.
  * This runs in the main UI thread.
  */
 private void runPendingRequests() {
   BillingRequest request;
   while ((request = pendingRequests.peek()) != null) {
     if (request.runIfConnected()) {
       // Remove the request
       pendingRequests.remove();
     } else {
       // The service crashed, so restart it. Note that this leaves the current request on the
       // queue.
       bindToMarketBillingService();
       return;
     }
   }
 }
 private void runRequest(BillingRequest request) {
   try {
     final long requestId = request.run(mService);
     BillingController.onRequestSent(requestId, request);
   } catch (RemoteException e) {
     Log.w(this.getClass().getSimpleName(), "Remote billing service crashed");
     // TODO: Retry?
   }
 }
 private void runPendingRequests() {
   BillingRequest request;
   int maxStartId = -1;
   while ((request = mPendingRequests.peek()) != null) {
     if (mService != null) {
       runRequest(request);
       mPendingRequests.remove();
       if (maxStartId < request.getStartId()) {
         maxStartId = request.getStartId();
       }
     } else {
       bindMarketBillingService();
       return;
     }
   }
   if (maxStartId >= 0) {
     stopSelf(maxStartId);
   }
 }
 private void runPendingRequests() {
   int maxStartId = -1;
   while (true) {
     BillingRequest request = (BillingRequest) mPendingRequests.peek();
     if (request == null) {
       if (maxStartId >= 0) {
         Log.i(
             TAG, new StringBuilder("stopping service, startId: ").append(maxStartId).toString());
         stopSelf(maxStartId);
         return;
       } else {
         return;
       }
     } else if (request.runIfConnected()) {
       mPendingRequests.remove();
       if (maxStartId < request.getStartId()) {
         maxStartId = request.getStartId();
       }
     } else {
       bindToMarketBillingService();
       return;
     }
   }
 }
 @Override
 protected void onRemoteException(RemoteException e) {
   super.onRemoteException(e);
   Security.removeNonce(nonce);
 }
 protected void onRemoteException(RemoteException e) {
   super.onRemoteException(e);
   Security.removeNonce(this.mNonce);
 }