⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmppinputstream.java

📁 短信网关发送接受平台。
💻 JAVA
字号:
import java.lang.*;
import java.net.*;
import java.io.*;

import CMPPThread;
import CMPPPacketCircle;

import CMPPSynchronizedIO;

public class CMPPInputStream extends CMPPThread
{
	final static int DEFAULT_READ_TIMEOUT		= 5000;
	
	boolean m_bBlocking = false;
	
	CMPPSynchronizedIO m_io = null;
	CMPPPacketCircle m_pc = null;
	
	public CMPPInputStream(CMPPSynchronizedIO io,CMPPPacketCircle pc)
		throws CMPPException
	{
		if(io == null)
		{
			throw new CMPPException("CMPPInputStream.CMPPInputStream : null synchronized io!");
		}
		m_io = io;
		
		//设置读取超时
		m_io.setSoTimeout(DEFAULT_READ_TIMEOUT);
		
		if(pc == null)
		{
			throw new CMPPException("CMPPInputStream.CMPPInputStream : null packetcircle!");
		}
		m_pc = pc;
	}
	
	public void run ()
	{
		CMPPPacket packet = null;
		
		try
		{
			m_nStatus = THREAD_RUNNING;
			while(isRunning())
			{
				//进入阻塞状态
				m_bBlocking = true;
				//输入数据包
				packet = m_io.read();
				//退出阻塞状态
				m_bBlocking = false;
				
				if(packet == null)
				{
					continue;
				}
				
				//异步数据环
				while(isRunning() && !m_pc.isWritable())//无法写入
				{
					Thread.sleep(5);//等待
				}
				
				//写入数据包
				if(m_pc.isWritable() && !m_pc.write(packet))
				{
					//写入失败数据包丢失!
					CMPPLog.log("CMPPInputStream.run : packet lost !",
						LogRequest.LOG_EXCEPTION | CMPPLog.LOG_CMPP_INPUT_STREAM);
				}
			}
		}
		catch(Exception e)
		{
			CMPPLog.log(e.getMessage(),
				LogRequest.LOG_EXCEPTION | CMPPLog.LOG_CMPP_INPUT_STREAM);
			CMPPLog.log("CMPPInputStream.run : unexpected exit !",
				LogRequest.LOG_EXCEPTION | CMPPLog.LOG_CMPP_INPUT_STREAM);
		}
		
		m_nStatus = THREAD_STOPPED;
		CMPPLog.log("CMPPInputStream.run : thread stopped !",
			CMPPLog.LOG_CMPP_INPUT_STREAM);
	}
	
	public boolean isBlocking()
	{
		if(m_pc.isWritable())
		{
			return m_bBlocking;
		}
		
		return true;
	}
	
	public void startup()
	{
		super.startup();
		
		CMPPLog.log("CMPPInputStream.startup : inputstream startup !",
			CMPPLog.LOG_CMPP_INPUT_STREAM);
	}
	
	public void shutdown()
	{
		super.shutdown();
		
		CMPPLog.log("CMPPInputStream.shutdown : inputstream shutdown !",
			CMPPLog.LOG_CMPP_INPUT_STREAM);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -