/**
** Copyright (C) SAS Institute, All rights reserved.
** General Public License: http://www.opensource.org/licenses/gpl-license.php
**/
package org.safs.android.messenger.client;
import java.io.CharArrayReader;
import java.io.IOException;
import java.util.Properties;
import org.safs.android.messenger.MessageUtil;
import org.safs.android.messenger.MultipleParcelsHandler;
import android.os.Message;
import android.os.Parcelable;
/**
*
* @see org.safs.android.messenger.client.MessengerRunner
* @author Carl Nagle, SAS Institute, Inc.
* @since FEB 04, 2012 (CANAGL) Initial version
* <br> APR 25, 2013 (LeiWang) Handle message of big size.
*/
public class MessengerHandler extends MultipleParcelsHandler{
MessengerListener listener = null;
public MessengerHandler(MessengerListener listener) {
super(listener);
this.listener = listener;
}
protected void debug(String message){
if(listener!=null){
listener.onReceiveDebug(message);
}else{
System.err.println(message);
}
}
@Override
public void handleWholeMessage(Message msg){
listener.prepareNotification(msg.what);
switch (msg.what){
case MessageUtil.ID_ENGINE_DISPATCHPROPS:
try{
Properties props = new Properties();
props.load(new CharArrayReader(MessageUtil.getParcelableProps((Parcelable)msg.obj)));
listener.onRemoteDispatchProps(props);
}catch(NullPointerException x){
debug("DispatchProps message did NOT have required Properties Parcel!");
}catch(IOException x){
debug("DispatchProps IOException "+ x.getMessage());
}
break;
case MessageUtil.ID_ENGINE_DISPATCHFILE:
listener.onRemoteDispatchFile(MessageUtil.getParcelableMessage((Parcelable)msg.obj));
break;
case MessageUtil.ID_ENGINE_SHUTDOWN:
listener.onRemoteEngineShutdown();
break;
case MessageUtil.ID_SERVER_SHUTDOWN:
listener.onServiceShutdown();
break;
case MessageUtil.ID_ENGINE_MESSAGE:
listener.onRemoteMessage(MessageUtil.getParcelableMessage((Parcelable)msg.obj));
break;
case MessageUtil.ID_SERVER_CONNECTED:
listener.onRemoteConnected();
break;
case MessageUtil.ID_SERVER_DISCONNECTED:
listener.onRemoteDisconnected();
break;
}
}
}