Package TCM_MPI.CheckClasses

Source Code of TCM_MPI.CheckClasses.CheckData_JvmTcp

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package TCM_MPI.CheckClasses;

import TCM_MPI.Buffer.BufferInfo;
import TCM_MPI.Buffer.Events.BufferEvent;
import TCM_MPI.Buffer.Events.FragmentBufferListener;
import TCM_MPI.Buffer.FragmentBuffer;
import TCM_MPI.Buffer.FragmentFileBuffer;
import TCM_MPI.CLS.CONST;
import TCM_MPI.Interfaces.InterfaceItemReceived;
import TCM_MPI.Sockets.Interfaces.ISocketTcm;
import TCM_MPI.Sockets.SocketJvm;
import java.io.PrintStream;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicBoolean;

/**
*
* @author beecluster
*/
public class CheckData_JvmTcp implements Runnable,FragmentBufferListener,ILogger,IStopable{
   
    private ISocketTcm _SOCKET;
    private PrintStream _SAIDA_TEXTO;
    private BufferInfo BUFFER;
    private FragmentBuffer FRAG_DATA;
    private FragmentFileBuffer FRAG_FILE;
   
    private ExecutorService THREAD_POOL;
   
    private AtomicBoolean BOOL = new AtomicBoolean(true);
   
    @SuppressWarnings("LeakingThisInConstructor")
    public CheckData_JvmTcp(Socket JVM_SKT,BufferInfo N_BUFFER,ExecutorService POOL) throws Exception{
       
        this._SOCKET = new SocketJvm(JVM_SKT);
       
        this.THREAD_POOL = POOL;
        this.BUFFER = N_BUFFER;
        this.FRAG_FILE = new FragmentFileBuffer();
        this.FRAG_DATA = new FragmentBuffer(this.BUFFER);
        this.FRAG_DATA.addFragmentBufferListener(this);
       
    }
   
    @SuppressWarnings("LeakingThisInConstructor")
    public CheckData_JvmTcp(ISocketTcm JVM_SKT,BufferInfo N_BUFFER,ExecutorService POOL) throws Exception{
       
        this._SOCKET = JVM_SKT;
       
        this.THREAD_POOL = POOL;
        this.BUFFER = N_BUFFER;
        this.FRAG_DATA = new FragmentBuffer(this.BUFFER);
        this.FRAG_DATA.addFragmentBufferListener(this);
       
        this._SAIDA_TEXTO = System.out;
       
    }
   
    void CHECK_DATA() throws Exception{
       
        if(this._SOCKET.PollDataAvaliable()){
           
            byte[] BYTE_RECV = this._SOCKET.ReceiveBytesN(CONST.BYTES_PER_PACKAGE + CONST.HEADER_SIZE);
           
            if(BYTE_RECV.length == 0){
                return;
            }
           
            InterfaceItemReceived ITEM = new ItemReceived();
            ITEM.setFragBuffer(this.FRAG_DATA);
            ITEM.setData(BYTE_RECV);
           
            ProcessReceiveData proc_d = new ProcessReceiveData(ITEM);
           
            this.THREAD_POOL.submit(proc_d);
           
        }
       
    }
   
    @Override
    @SuppressWarnings("SleepWhileInLoop")
    public void run() {
       
        while( this.BOOL.get() ){
            try {
               
                this.CHECK_DATA();
                Thread.sleep(CONST.SLEEP_CHECK_TIME);
               
            } catch (Exception ex) {
                System.err.println(ex.getMessage());
            }
        }
       
    }

    @Override
    public void FragmentCreated(BufferEvent e, String key) {
        if(this._SAIDA_TEXTO != null){
            this._SAIDA_TEXTO.println("FragmentBufferData >> fragmento criado { " + key + " }");
        }
    }

    @Override
    public void FragmentUpdate(BufferEvent e, String key) {
        if(this._SAIDA_TEXTO != null){
            this._SAIDA_TEXTO.println("FragmentBufferData >> fragmento modificado { " + key + " }");
        }
    }
   
    @Override
    public void FragmentComplete(BufferEvent e, String key) {
        if(this._SAIDA_TEXTO != null){
            this._SAIDA_TEXTO.println("FragmentBufferData >> fragmento completo { " + key + " }");
        }
    }

    @Override
    public void EnableLogExit() {
        this._SAIDA_TEXTO = System.out;
    }
   
    @Override
    public void DisableLogExit() {
        this._SAIDA_TEXTO = null;
    }

    @Override
    public void SendStopCommand() {
        this.BOOL.set(false);
    }
   
    @Override
    public boolean IsStoped() {
        return (this.BOOL.get() == false);
    }
   
}
TOP

Related Classes of TCM_MPI.CheckClasses.CheckData_JvmTcp

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.