content: /*
   * CDDL HEADER START
   *
   * The contents of this file are subject to the terms of the Common Development
   * and Distribution License (the "License").
   * You may not use this file except in compliance with the License.
   *
   * You can obtain a copy of the license at
   * src/com/vodafone360/people/VODAFONE.LICENSE.txt or
   * http://github.com/360/360-Engine-for-Android
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   * When distributing Covered Code, include this CDDL HEADER in each file and
   * include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
   * If applicable, add the following below this CDDL HEADER, with the fields
   * enclosed by brackets "[]" replaced with your own identifying information:
   * Portions Copyright [yyyy] [name of copyright owner]
   *
   * CDDL HEADER END
   *
   * Copyright 2010 Vodafone Sales & Services Ltd.  All rights reserved.
   * Use is subject to license terms.
   */
  
  package com.vodafone360.people.tests;
  
  import java.util.List;
  
  import android.util.Log;
  
  import com.vodafone360.people.service.io.QueueManager;
  import com.vodafone360.people.service.io.Request;
  import com.vodafone360.people.service.transport.IConnection;
  import com.vodafone360.people.service.transport.IQueueListener;
  
  public class PeopleTestConnectionThread implements Runnable, IQueueListener, IConnection{
  	
  	private volatile boolean mIsConnectionRunning;
  	private Object mRunLock = new Object();
  	IPeopleTestFramework mTestFramework;
  	
  	public PeopleTestConnectionThread(IPeopleTestFramework testFramework){
  		mTestFramework = testFramework;
  	}
  	
  	public synchronized void startThread() {
  		Log.d("TAG", "PeopleTestConnectionThread.startThread");
  		mIsConnectionRunning = true;
  		Thread t = new Thread(this);
  		t.start();
  		
  	}
  
  	public synchronized void stopThread() {
  		synchronized(mRunLock) {
  			mIsConnectionRunning = false;
  			mRunLock.notify();
  		}
  	}
  	
  	public void run() {
  		Log.d("TAG", "PeopleTestConnectionThread.run");
  		while (mIsConnectionRunning) {
  			Log.d("TAG", "PeopleTestConnectionThread.run running");
  			List<Request> requests = QueueManager.getInstance().getRpgRequests();
  			if (requests.size() > 0) {
  				// report back to test frame work
  				Log.d("TAG", "PeopleTestConnectionThread.run report back");
  				Request req = requests.get(0);
  				mTestFramework.reportBackToFramework(req.getRequestId(), req.mEngineId);
  			}
  			else {
  				try {	
  					Log.d("TAG", "PeopleTestConnectionThread.run wait");
  					synchronized(mRunLock) {
  						if (mIsConnectionRunning) {
  							mRunLock.wait();
  						}
  					}
  				} catch (InterruptedException ie) {
  					Log.e(getClass().getName(), "Wait was interrupted: " + ie);
  				}
  			}
  		}
  	}
  	
  	@Override
  	public void notifyOfItemInRequestQueue() {
  		Log.d("TAG", "PeopleTestConnectionThread.notifyOfItemInRequestQueue");
  		synchronized(mRunLock) {
  			mRunLock.notify();	
  		}
  	}
  
  	@Override
  	public boolean getIsConnected() {
  		// TODO Auto-generated method stub
  		return false;
  	}
  
  	@Override
  	public boolean getIsRpgConnectionActive() {
  		// TODO Auto-generated method stub
  		return false;
  	}
  
  	@Override
  	public void notifyOfRegainedNetworkCoverage() {
  		// TODO Auto-generated method stub
  		
  	}
  
  	@Override
  	public void onLoginStateChanged(boolean isLoggedIn) {
  		// TODO Auto-generated method stub
  		
  	}
  
  	@Override
  	public void notifyOfUiActivity() {
  		// TODO Auto-generated method stub
  		
  	}
  }
  
  
  
  