package test.interceptor.ctx_passing;

import org.omg.PortableInterceptor.*;

import org.omg.IOP.Codec;
import org.omg.IOP.ServiceContext;

/**
 * ClientInterceptor.java
 *
 *
 * Created: Fri Oct 26 11:04:19 2001
 *
 * @author Nicolas Noffke
 * @version $Id: ClientInterceptor.java,v 1.3 2001-11-22 15:59:41 prism Exp $
 */

public class ClientInterceptor 
    extends org.omg.CORBA.LocalObject 
    implements ClientRequestInterceptor
{    
    private int slot_id = -1;
    private Codec codec = null;

    public ClientInterceptor(int slot_id, Codec codec)
    {
        this.slot_id = slot_id;
        this.codec = codec;    
    }

    public String name() 
    {
        return "ClientInterceptor";
    }

    public void destroy()
    {
    }

    public void send_request( ClientRequestInfo ri ) 
        throws ForwardRequest
    {
        System.out.println("ClientInterceptor: send_request()");
        
        try
        {
            org.omg.CORBA.Any any = ri.get_slot( slot_id );
      
            if( any.type().kind().value() != org.omg.CORBA.TCKind._tk_null )
            {
                ServiceContext ctx = 
                    new ServiceContext(4711, codec.encode( any ));

                ri.add_request_service_context( ctx, false );
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    public void send_poll(ClientRequestInfo ri)
    {
    }

    public void receive_reply(ClientRequestInfo ri)
    {
    }

    public void receive_exception(ClientRequestInfo ri) 
        throws ForwardRequest
    {
    }

    public void receive_other(ClientRequestInfo ri) 
        throws ForwardRequest
    {
    }
}// ClientInterceptor
