📄 orbmonitorthread.java
字号:
// Developed by Kinva Network Inc. 2000
// Source File Name: OrbMonitorThread.java
package com.kinva.util.corb;
import com.kinva.util.misc.Log;
import com.kinva.util.thread.PoolThread;
import java.io.IOException;
import java.io.ObjectOutputStream;
// Referenced classes of package com.kinva.util.corb:
// CORBException, CORBSkeleton, Naming, Request,
// Result, ServerObjectInfo
class OrbMonitorThread extends PoolThread
{
public OrbMonitorThread(Log log1)
{
Id = nextId++;
log = log1;
log1.println(4, "{1} - {0,number}", Id, getClass());
}
public String toString()
{
return getClass().toString() + Id;
}
void set(Request request1)
{
request = request1;
}
public void service()
{
ServerObjectId serverobjectid = request.getServerId();
ServerObjectInfo serverobjectinfo = Naming.getServerObjectInfo(serverobjectid);
Result result = null;
log.println(5, "OrbMonitorThread{0,number} servicing {1}.", Id, request);
if(serverobjectinfo == null)
{
log.println(1, "Service: No Server Object Info for : {0}", serverobjectid);
if(!request.isOneWay())
{
result = new Result(request.getRequestId());
result.setStatus(2);
result.setResult(new CORBException("Server object not bound"));
writeResult(result);
}
return;
}
CORBSkeleton corbskeleton = null;
try
{
corbskeleton = (CORBSkeleton)serverobjectinfo.getSkeleton();
}
catch(CORBException corbexception)
{
if(!request.isOneWay())
{
result = new Result(request.getRequestId());
result.setStatus(2);
result.setResult(corbexception);
writeResult(result);
}
return;
}
result = corbskeleton.dispatch(request);
if(!request.isOneWay())
writeResult(result);
}
private void writeResult(Result result)
{
try
{
ObjectOutputStream objectoutputstream = request.getOutputStream();
synchronized(objectoutputstream)
{
objectoutputstream.writeObject(result);
objectoutputstream.flush();
objectoutputstream.reset();
}
log.println(5, "OrbMonitorThread SERVICED {0}", request);
return;
}
catch(IOException ioexception)
{
log.println(1, "{0}: Unable to write to output stream for {1}", this, request.getOutputStream());
ioexception.printStackTrace();
return;
}
}
private Log log;
private Request request;
private static int nextId;
private int Id;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -