blob: cce3401801836649a113c3ffc5d5f5ed8a06514e [file] [log] [blame]
package net.floodlightcontroller.flowcache;
import java.util.Arrays;
import net.floodlightcontroller.devicemanager.IDevice;
import net.floodlightcontroller.flowcache.IFlowCacheService.FCQueryEvType;
/**
* The Class FCQueryObj.
*/
public class FCQueryObj {
/** The caller of the flow cache query. */
public IFlowQueryHandler fcQueryHandler;
/** The application instance name. */
public String applInstName;
/** The vlan Id. */
public Short[] vlans;
/** The destination device. */
public IDevice dstDevice;
/** The source device. */
public IDevice srcDevice;
/** The caller name */
public String callerName;
/** Event type that triggered this flow query submission */
public FCQueryEvType evType;
/** The caller opaque data. Returned unchanged in the query response
* via the callback. The type of this object could be different for
* different callers */
public Object callerOpaqueObj;
/**
* Instantiates a new flow cache query object
*/
public FCQueryObj(IFlowQueryHandler fcQueryHandler,
String applInstName,
Short vlan,
IDevice srcDevice,
IDevice dstDevice,
String callerName,
FCQueryEvType evType,
Object callerOpaqueObj) {
this.fcQueryHandler = fcQueryHandler;
this.applInstName = applInstName;
this.srcDevice = srcDevice;
this.dstDevice = dstDevice;
this.callerName = callerName;
this.evType = evType;
this.callerOpaqueObj = callerOpaqueObj;
if (vlan != null) {
this.vlans = new Short[] { vlan };
} else {
if (srcDevice != null) {
this.vlans = srcDevice.getVlanId();
} else if (dstDevice != null) {
this.vlans = dstDevice.getVlanId();
}
}
}
@Override
public String toString() {
return "FCQueryObj [fcQueryCaller=" + fcQueryHandler
+ ", applInstName="
+ applInstName + ", vlans=" + Arrays.toString(vlans)
+ ", dstDevice=" + dstDevice + ", srcDevice="
+ srcDevice + ", callerName=" + callerName + ", evType="
+ evType + ", callerOpaqueObj=" + callerOpaqueObj + "]";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
FCQueryObj other = (FCQueryObj) obj;
if (applInstName == null) {
if (other.applInstName != null)
return false;
} else if (!applInstName.equals(other.applInstName))
return false;
if (callerName == null) {
if (other.callerName != null)
return false;
} else if (!callerName.equals(other.callerName))
return false;
if (callerOpaqueObj == null) {
if (other.callerOpaqueObj != null)
return false;
} else if (!callerOpaqueObj.equals(other.callerOpaqueObj))
return false;
if (dstDevice == null) {
if (other.dstDevice != null)
return false;
} else if (!dstDevice.equals(other.dstDevice))
return false;
if (evType != other.evType)
return false;
if (fcQueryHandler != other.fcQueryHandler)
return false;
if (srcDevice == null) {
if (other.srcDevice != null)
return false;
} else if (!srcDevice.equals(other.srcDevice))
return false;
if (!Arrays.equals(vlans, other.vlans))
return false;
return true;
}
}