package com.aberdyne.droidnavi.client;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.content.Context;
import android.content.SharedPreferences;
import pctelelog.events.AbstractEvent;
public class NetworkDispatch {
public static final String MULTI_IS_NETWORK_TESTED_SETTING = "multiNetworkTested";
public static final String MULTI_NETWORK_TEST_RESULT_SETTING = "multiNetworkTestResult";
private static final Logger logger = LoggerFactory.getLogger(NetworkDispatch.class);
private Context m_context = null;
public NetworkDispatch(Context context) {
m_context = context;
}
public boolean hasMulticast() {
// Check if we have tested multicast before
SharedPreferences pref = m_context.getSharedPreferences("settings", Context.MODE_PRIVATE);
if(pref.getBoolean(MULTI_IS_NETWORK_TESTED_SETTING, false)) {
// If we have then return the result of that
boolean result = pref.getBoolean(MULTI_NETWORK_TEST_RESULT_SETTING, false);
return result;
}
else {
return MulticastSender.checkMulticastAvailability();
}
}
public boolean sendEvent(AbstractEvent event) {
if(hasMulticast()) {
return MulticastSender.sendEvent(event);
}
logger.error("Event dispatch failed: No multicast");
return false;
}
public boolean sendEvent(AbstractEvent event, ServerConnection relayServer) {
boolean result = false;
if(hasMulticast()) {
result = MulticastSender.sendEvent(event);
}
else if(relayServer != null) {
result = relayServer.sendEvent(event);
}
else {
logger.error("Event dispatch failed: No multicast or server");
return false;
}
return result;
}
}