package com.wmdigit.transfer;

import android.util.Log;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ScaleTransfer {

    private final String TAG = ScaleTransfer.this.getClass().getSimpleName();

    private ServerSocket serverSocket;

    private static class ScaleTransferHolder {
        public static ScaleTransfer instance = new ScaleTransfer();

        private ScaleTransferHolder() {
        }
    }

    public static ScaleTransfer getInstance() {
        return ScaleTransferHolder.instance;
    }

    public void startLoadPluData(ScaleTransferListener scaleTransferListener, int port) {
        ThreadCacheManager.getExecutorService().execute(new Runnable() {


            public final void run() {
                String str = "Transfer";
                try {
                    serverSocket = new ServerSocket(port);
                    Log.d(TAG, port + "");
                    Socket accept = null;
                    while (true) {
                         accept = serverSocket.accept();

                        System.out.println("New connection accepted " +
                                accept.getInetAddress() + ":" +accept.getPort());
                        Log.i(TAG, "服务开启");
                        if (scaleTransferListener != null) {
                            scaleTransferListener.onConnected();
                        }
                        ThreadCacheManager.getExecutorService().execute(new SocketHandler(accept, scaleTransferListener));
                    }

                } catch (IOException e) {
                    if (scaleTransferListener != null) {
                        scaleTransferListener.onIOException(e.getLocalizedMessage());
                    }

                    StringBuilder sb = new StringBuilder();
                    sb.append("Exception listening port 3001.==");
                    sb.append(e.getLocalizedMessage());
                    Log.e(str, sb.toString());
                } catch (Throwable th2) {
//                    r3.addSuppressed(th2);
                }
            }
        });
    }

    public void destroy() {
        try {
            this.serverSocket.close();
        } catch (IOException var2) {
            var2.printStackTrace();
        }

    }

}