package com.eactive.eai.control;

import java.util.Properties;

import com.eactive.eai.adapter.ElinkAdapter;
import com.eactive.eai.adapter.ElinkAdapterFactory;
import com.eactive.eai.common.util.Logger;

public class WebSocketSender {
	static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
	static final String SOCK_CONTROL_ERROR = "RECEAIOSC001";
    
    public static byte[] callService(String adapterGroupName, Properties prop,  Object message, Properties tempProp) throws java.lang.Exception
    {
        byte[] resBytes;        
        try {
        	//new socket 과 old socket을 분기 하기 위해서
        	String protocol = (String)prop.getProperty("protocol");
        	
            ElinkAdapterFactory factory = ElinkAdapterFactory.newInstance();            
            ElinkAdapter adapter = null;
//            if(protocol == null || protocol.trim().length() ==0) {
//            	adapter = factory.getWLIAdapter(com.eactive.eai.adapter.Keys.TYPE_NET);
//        	}
//            else {
            	adapter = factory.getElinkAdapter(com.eactive.eai.adapter.Keys.TYPE_WSK);
//            }
            if(prop==null) {
                prop = new Properties();
            }
            if(tempProp==null) {
            	tempProp = new Properties();
            }
            if(tempProp.getProperty("ADAPTER_GROUP_NAME") == null) {            
            	tempProp.setProperty("ADAPTER_GROUP_NAME", adapterGroupName);
            }
            resBytes = (byte[])adapter.callService(adapterGroupName, prop, message, tempProp);
        } catch(Exception e) {
        	if (logger.isError()) logger.error(e.getMessage(),e);
        	//throw new Exception(ExceptionUtil.getErrorCode(e, SOCK_CONTROL_ERROR));
            throw e;
        }
        return resBytes;
    }
}
