package com.grendelscan.commons.flex.messages;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.grendelscan.commons.flex.AbstractAmfData;
import com.grendelscan.commons.flex.AbstractAmfDataContainer;
import com.grendelscan.commons.flex.AmfOutputStream;
import com.grendelscan.commons.flex.dataTypeDefinitions.AmfDataType;
import com.grendelscan.commons.flex.output.AmfOutputStreamRegistry;
import com.grendelscan.commons.http.dataHandling.data.Data;
import com.grendelscan.commons.http.dataHandling.references.DataReference;
import com.grendelscan.commons.http.dataHandling.references.SingleChildReference;
import com.grendelscan.commons.flex.AmfUtils;
public class AmfOperation extends AbstractAmfData
{
private static final Logger LOGGER = LoggerFactory.getLogger(AmfOperation.class);
private static final long serialVersionUID = 1L;
private CommandMessageTypeEnum commandType;
public AmfOperation(String name, AbstractAmfDataContainer<?> parent, int transactionId)
{
super(name, AmfDataType.kCommandType, parent, false, transactionId);
commandType = CommandMessageTypeEnum.UNKNOWN_OPERATION;
}
public AmfOperation(String name, CommandMessageTypeEnum commandType, AbstractAmfDataContainer<?> parent,
int transactionId)
{
super(name, AmfDataType.kCommandType, parent, false, transactionId);
this.commandType = commandType;
}
@Override
public ArrayList<AbstractAmfData> getChildren()
{
return null;
}
public CommandMessageTypeEnum getCommandType()
{
return commandType;
}
public String getDescription()
{
return commandType.getDescription();
}
public int getValue()
{
return commandType.getValue();
}
@Override
public boolean isNameLocked()
{
return true;
}
@Override
public boolean isTypeLocked()
{
return true;
}
public void setCommandType(CommandMessageTypeEnum commandType)
{
this.commandType = commandType;
}
@Override
public void writeBytes(OutputStream out)
{
AmfOutputStream outputStream = AmfOutputStreamRegistry.getStream(out);
try
{
AmfUtils.writeAMFInt(outputStream, commandType.getValue(), useAmf3Code);
}
catch (IOException e)
{
LOGGER.error("Problem writing AMF: " + e.toString(), e);
}
}
}