package test;

import org.omg.PortableInterceptor.ClientRequestInterceptor;
import org.omg.PortableInterceptor.ClientRequestInfo;

class ClientInterceptor extends org.omg.CORBA.LocalObject implements
	ClientRequestInterceptor
{
    int count;
    
    public ClientInterceptor() {
        count = 0;
    }
    
    public String name()
    {
	return "ipc.ClientInterceptor";
    }

    public void destroy()
    {
    }

    public void send_request(ClientRequestInfo ri)
    {
    }
    public void send_poll(ClientRequestInfo ri)
    {
    }

    public void receive_reply(ClientRequestInfo ri)
    {
    }

    public void receive_other(ClientRequestInfo ri)
    {
    }

    public void receive_exception(ClientRequestInfo ri)
	    throws org.omg.PortableInterceptor.ForwardRequest
    {
	if (!Test.ready) {
	    return;
	}
	
	System.out.println("receive_exception " + ri.received_exception_id());
	if (count != 0) {
	    System.out.println("receive_exception " + ri.received_exception_id() + " count = " + count + " just return");
	    return;
	}
		
	System.out.println("receive_exception " + ri.received_exception_id() + " count = " + count + " throw ForwardRequest");
	++count;
	throw new org.omg.PortableInterceptor.ForwardRequest(Test.object);
    }
}
