WatcherWebService2

来源:互联网 发布:淘宝上面卖什么好 编辑:程序博客网 时间:2024/05/16 09:58
package com.omniteaching.otscale.system.webservices.Watcher;import com.google.gson.Gson;import com.omniteaching.otscale.model.webservices.PRecord;import com.omniteaching.otscale.model.webservices.WebServicesRespone;import com.omniteaching.otscale.utils.Globals;import java.util.HashMap;import java.util.Map;import java.util.concurrent.LinkedBlockingDeque;/** * Created by OMS on 2016/12/19. */public class WatcherWebService extends WatcherScaleWebService{    private static final String DEAFULT_TOKEN = "md5(omsiden16)"; // 获取物料token    private String WatcherID;    private static final String Method_WatcherRecord = "WatcherRecord";    public static final int STATE_SUCCESS = 1; // 成功    public static final int STATE_Fail = 0; // 失败    private boolean isRecevice = true;    private WebThread mWebThread;    private int timeOut = 0;    private boolean frist;    private static final int zero = 0;    private boolean send = true;    private LinkedBlockingDeque<PRecord> sendMsgQuene;    private interface WatcherLinkStateListen    {        void successful(String guid, WatcherWebService watcherWebService);        void failure(String guid, WatcherWebService watcherWebService);        void onException(String guid, WatcherWebService watcherWebService, String exception);    }    private WatcherLinkStateListen mLinkStateListen;    private WatcherReceiveListen mWatcherReceiveListen;    public WatcherWebService(String guid)    {        WatcherID = guid;        closeWebThread();        send = true;        if(sendMsgQuene==null)        {        sendMsgQuene = new LinkedBlockingDeque<PRecord>();        }        if(mWebThread==null)        {            mWebThread = new WebThread();        }        if(!mWebThread.isAlive())        {            mWebThread.start();        }    }    /**     * 呼叫启动WebServer     *     * @param Record     */    private void callRecord(PRecord Record, String watcherID)    {        Gson gson = new Gson();        String jsonRecord = gson.toJson(Record);        Globals.log("2 sendDataWebThread sendWatcherWebService ", "发送数据->jsonRecord : " + jsonRecord);        Map<String, Object> params = new HashMap<String, Object>();        params.put("pToken", DEAFULT_TOKEN);        params.put("pRecord", jsonRecord);        try        {            WebServicesRespone respone = (WebServicesRespone) callServer(Method_WatcherRecord, params);//            String szData = (String) decodeRespone(respone.getValue());              String szData = respone.getValue().toString();            Globals.log("3 sendDataWebThread sendWatcherWebService-> ", "发送数据-> szData " + szData);            // 有内容            if (!NULL_CONTENT.equals(szData))            {                Integer i = Integer.valueOf(szData);                switch (i)                {                    case STATE_SUCCESS:                        Globals.log("4 sendDataWebThread sendWatcherWebService-> ", "发送成功-> szData " + szData);                        if (mLinkStateListen != null)                            mLinkStateListen.successful(watcherID, this);                        break;                    case STATE_Fail:                        if (mLinkStateListen != null)                            mLinkStateListen.failure(watcherID, this);                        break;                }                return;            }            if (mLinkStateListen != null)                mLinkStateListen.failure(watcherID, this);        } catch (Exception e)        {            e.printStackTrace();            if (mLinkStateListen != null)                mLinkStateListen.onException(watcherID, this, e.getMessage());        }    }    public String getWatcherID()    {        return WatcherID;    }    public void setWatcherID(String watcherID)    {        WatcherID = watcherID;    }    /**     * 内部监听器回调     *     * @param linkStateListen     */    private synchronized void setLinkStateListen(WatcherLinkStateListen linkStateListen)    {        mLinkStateListen = linkStateListen;    }    private class WebThread extends Thread    {        private PRecord mRecord;        private String mWatcherID;        private WebThread(PRecord Record, String watcherID)        {            mRecord = Record;            mWatcherID = watcherID;        }        private WebThread()        {            if(!this.isAlive())            {                this.start();            }        }        @Override        public void run()        {            super.run();            setLinkStateListen(new WatcherLinkStateListen()            {                @Override                public void successful(String guid, WatcherWebService watcherWebService)                {                    timeOut = 0;                    if (mWatcherReceiveListen != null)                        mWatcherReceiveListen.successful(guid, watcherWebService);                    Globals.log("5 sendWatcherWebService-> ", "发送数据-> guid:  " + guid);                }                @Override                public void failure(String guid, WatcherWebService watcherWebService)                {                    timeOut = 0;                    if (mWatcherReceiveListen != null)                        mWatcherReceiveListen.failure(guid, watcherWebService);                    Globals.log("失败 sendWatcherWebService-> 发送数据->", "");                }                @Override                public void onException(String guid, WatcherWebService watcherWebService, String exception)                {                    timeOut = 0;                    Globals.log("sendDataWebThread sendWatcherWebService-> 发送数据-> 错误 :", exception);                    if (mWatcherReceiveListen != null)                        mWatcherReceiveListen.onException(guid, watcherWebService, exception);                }            });                while (send)                {                    try                    {                        PRecord take = sendMsgQuene.take();//                        setRecevice(false,8);                        callRecord(take, take.getWatcherID());                    } catch (InterruptedException e)                    {                        closeWebThread();                        e.printStackTrace();                        return;                    }                }        }    }    public void sendDataWebThread(PRecord Record, String watcherID)    {        send = true;        if (isRecevice())        {            Globals.log("11 sendWatcherWebService-> ", "sendDataWebThread watcherID : " );            try            {                sendMsgQuene.put(Record);                setRecevice(false,9);            } catch (InterruptedException e)            {                Globals.log("异常 11 sendWatcherWebService-> ", "sendDataWebThread watcherID : " );                e.printStackTrace();            }//            getBytesToHexString(msg);        }    }    public void closeWebThread()    {        Globals.log("closeWebThread sendDataWebThread ");        send = false;        if (mWebThread != null)        {            mWebThread.interrupt();            mWebThread = null;            if (mLinkStateListen != null)                setLinkStateListen(null);//            setFrist(true);        }            setRecevice(true,1);        if (sendMsgQuene!=null)        {            sendMsgQuene.clear();            sendMsgQuene = null;        }    }    /**     * 设置连接监听回调     *     * @param watcherReceiveListen     */    public void setWatcherReceiveListen(WatcherReceiveListen watcherReceiveListen)    {        mWatcherReceiveListen = watcherReceiveListen;    }    public  boolean isRecevice()    {        return isRecevice;    }    public synchronized void setRecevice(boolean flag, int a)    {        Globals.log("sendDataWebThread OMSwatcher setRecevice : ", "" + flag + " a : " + a);        isRecevice = flag;    }}
0 0
原创粉丝点击