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

📄 orbmonitorthread.java

📁 CORBA orb implement
💻 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 + -