public Dispatcher(Vector<GPRMC> myQueue, Vector<String> myLogQueue, Vector<GPRMC> myInsertQueue, Vector<GPRMC> myPushQueue)
	{
		packetQueue=myQueue;
		logQueue=myLogQueue;
		insertQueue=myInsertQueue;
		pushQueue=myPushQueue;
    	Properties prop = new Properties();
    	 
    	try {
            //load a properties file
    		prop.load(new FileInputStream("config.properties"));
 
             //get the property value and assign it
    		JDBCURL=prop.getProperty("jdbcURL");
    		dbUser=prop.getProperty("dbUser");
    		dbPass=prop.getProperty("dbPass");
    		dbDriver=prop.getProperty("jdbcDriver");
    		table=prop.getProperty("table");
    		SIRI_IPS_TABLE=prop.getProperty("SIRI_IPS_TABLE");
    		SIRI_META_TABLE=prop.getProperty("SIRI_META_TABLE");
    		latitude=prop.getProperty("latitude");
    		longitude=prop.getProperty("longitude");
    		reportedTime=prop.getProperty("reportedTime");
    		socketTime=prop.getProperty("socketTime");
    		navigationReceiverWarning=prop.getProperty("navigationReceiverWarning");
    		speedOverGround=prop.getProperty("speedOverGround");
    		course=prop.getProperty("course");
    		magneticVariation=prop.getProperty("magneticVariation");
    		checksum=prop.getProperty("checksum");
    		sentence=prop.getProperty("sentence");
    		nmeaIP=prop.getProperty("nmeaIP");
    		prefixedData=prop.getProperty("prefixedData");
    		nmeaPort=prop.getProperty("nmeaPort");
    		SIRI_IPS_COL_NAME=prop.getProperty("SIRI_IPS_COL_NAME");
    		SIRI_META_IP=prop.getProperty("SIRI_META_IP");
    		SIRI_META_VEH_ID=prop.getProperty("SIRI_META_VEH_ID");
    		SIRI_META_OPERATOR=prop.getProperty("SIRI_META_OPERATOR");
    		SIRI_META_ADDITIONAL=prop.getProperty("SIRI_META_ADDITIONAL");
    		SIRI_META_STATUS=prop.getProperty("SIRI_META_STATUS");
    		SIRI_PUSH_SERVER=prop.getProperty("SIRI_PUSH_SERVER");
    		
    		MAX_INSERT_THREADS=Integer.parseInt(prop.getProperty("MAX_INSERT_THREADS"));
    		MAX_DECODER_THREADS=Integer.parseInt(prop.getProperty("MAX_DECODER_THREADS"));
    		THRESHOLD_INCREMENTER=Integer.parseInt(prop.getProperty("THRESHOLD_INCREMENTER"));
    		SUPPRESS_BAD_FIXES=Integer.parseInt(prop.getProperty("SUPPRESS_BAD_FIXES"));
    		SUPPRESS_ODD_SENTENCES=Integer.parseInt(prop.getProperty("SUPPRESS_ODD_SENTENCES"));
    		MAX_SOCKET_FAILURES=Integer.parseInt(prop.getProperty("MAX_SOCKET_FAILURES"));
    		MAX_SOCKETS=Integer.parseInt(prop.getProperty("MAX_SOCKETS"));
    		SOCKET_START_PORT=Integer.parseInt(prop.getProperty("SOCKET_START_PORT"));
    		SIRI_IP_UPDATE_INTERVAL=Integer.parseInt(prop.getProperty("SIRI_IP_UPDATE_INTERVAL"));
    		SIRI_PUSH_PORT=Integer.parseInt(prop.getProperty("SIRI_PUSH_PORT"));
    		SIRI_PUSH_THRESHOLD=Integer.parseInt(prop.getProperty("SIRI_PUSH_THRESHOLD"));
    		SIRI_GET_STATUS_MS=Integer.parseInt(prop.getProperty("SIRI_GET_STATUS_MS"));
    		SIRI_SOCKET_TIMEOUT_MS=Integer.parseInt(prop.getProperty("SIRI_SOCKET_TIMEOUT_MS"));
    		
 
    	} catch (IOException ex) {
    		logQueue.add("Could not open " + (new File("config.properties").getAbsolutePath()));
        }
    	catch (NumberFormatException ex2)
    	{
    		logQueue.add("Could not read at least one option from " + (new File("config.properties").getAbsolutePath()) + " ; using defaults");
    	}
    	if (!testString(JDBCURL) || !testString(dbUser) || !testString(dbPass) || !testString(table) || !testString(dbDriver) )
    	{
    		logQueue.add("Missing JDBC driver, url, username, password, or table in config file! No point in continuing so exiting!");
    		System.exit(0);
    	}
    	
    	processSiri=(testString(SIRI_META_TABLE) && testString(SIRI_IPS_TABLE));
    	
	}