w3c.model.www.pep.extensions.remoteControl.Client

w3c.model.www.pep.extensions.remoteControl.Client

package w3c.model.www.pep.extensions.remoteControl;

import w3c.model.www.pep.*;
import w3c.model.www.pep.bags.*;
import w3c.model.www.pep.altlib.HTTPException;

public class Client extends Common 

    w3c.model.tools.basicweb.Client client;
    int instructionNumber = 0;
    String baseHeader;
    public Client (w3c.model.tools.basicweb.Client client, PEPAgent pepAgent) {
	this.client = client;
	baseHeader = pepAgent.nextFreeName(prefHeaderName, this, true);
    }

    public PEPExtensionInstance makeInstance (InstanceContext instanceContext, String cmd) {
	String headerName = baseHeader + String.valueOf(instructionNumber++);
	ClientInstance ret =  ClientInstance(headerName, cmd);
/* this extension self-adds it instances to the instanceContext for this mesage */
	instanceContext.addExtensionInstance(this, ret);
	return ret;
    }

    public PEPExtensionInstance makeInstance (String headerNames[], int headerNameCount, InstanceContext instanceContext) {
	throw  InternalError("illegal call to default remoteControl.Client.makeInstance("+headerNames[0]+").");
    }

    public boolean generateHeaders (InstanceContext instanceContext, int when) throws HTTPException{
	if (when != PEPExtension.CONNECT))
	    return false;
	String headerNames[] =  String[1];
	boolean wilds[] =  boolean[1];
	headerNames[0] = baseHeader;
	wilds[0] = true;
	ExtDecl extDecl =  ExtDecl(instanceContext, 
	     MapBag(instanceContext, URI, headerNames, wilds, 1), 
	     StrengthBag(instanceContext, true));
		
//	instanceContext.addExtensionInstance(this, makeInstance(headerNames, 1, instanceContext));
	instanceContext.addExtDecl(extDecl, PEPMessage.PEP);
	return super.generateHeaders(instanceContext, when);
    }

    void generateHeader (PEPExtensionInstance inst, InstanceContext instanceContext, PEPMessage message) {
    	ClientInstance clientInstance = (ClientInstance)inst;
	message.setHeaderValue(clientInstance.getHeaderName(), clientInstance.getCommand());
	instanceContext.setRequiredExtensions();
    }

    void handleHeader (PEPExtensionInstance inst, PEPMessage message) {
    	ClientInstance clientInstance = (ClientInstance)inst;
	String result = message.getHeaderValue(clientInstance.getHeaderName());
	if (result == null))
	    System.out.println("<!- Server didn't respond to "+clientInstance.getCommand()+" ->");
	elseSystem.out.println("<!- Server responded to ""+clientInstance.getCommand()+"" with ""+result+"" ->");
    }