package de.blinkt.openvpn;

import java.util.LinkedList;
import java.util.Vector;

public class OpenVPN {
	private static final int MAXLOGENTRIES = 200;


	public static LinkedList<String> logbuffer = new LinkedList<String>();
	
	private static Vector<LogListener> logListener=new Vector<OpenVPN.LogListener>();
	private static String[] mBconfig;

	public interface LogListener {
		void newLog(String logmessage);
	}
	

	synchronized static void logMessage(int level,String prefix, String message)
	{
		logbuffer.addLast(prefix +  message);
		if(logbuffer.size()>MAXLOGENTRIES)
			logbuffer.removeFirst();
		
		for (LogListener ll : logListener) {
			ll.newLog(prefix + message);
		}

	}

	synchronized static void clearLog() {
		logbuffer.clear();
	}

	synchronized static void addLogListener(LogListener ll){
		logListener.add(ll);
	}

	synchronized static void removeLogListener(LogListener ll) {
		logListener.remove(ll);
	}


	synchronized public static String[] getlogbuffer() {

		// The stoned way of java to return an array from a vector
		// brought to you by eclipse auto complete
		return (String[]) logbuffer.toArray(new String[logbuffer.size()]);

	}
	public static void logBuilderConfig(String[] bconfig) {
		mBconfig =bconfig;
	}
	public static void triggerLogBuilderConfig() {
		if(mBconfig==null) {
			logMessage(0, "", "No active interface");
		} else {
			for (String item : mBconfig) {
				logMessage(0, "", item);
			}	
		}

	}
}