package org.overture.interpreter.messages.rtlog;
import org.overture.interpreter.scheduler.CPUResource;
import org.overture.interpreter.scheduler.ISchedulableThread;
import org.overture.interpreter.scheduler.InitThread;
import org.overture.interpreter.scheduler.MainThread;
import org.overture.interpreter.values.ObjectValue;
public abstract class RTThreadMessage extends RTMessage
{
public ISchedulableThread thread;
public CPUResource cpuNumber;
String objRef;
String clnm = "nil";
public RTThreadMessage(ISchedulableThread thread, CPUResource cpuNumber)
{
this.thread = thread;
this.cpuNumber = cpuNumber;
}
protected String objRefString(ISchedulableThread thread)
{
try
{
ObjectValue obj = thread.getObject();
if (obj == null && objRef == null)
{
objRef = "nil";
if (thread instanceof InitThread)
{
clnm = "INIT";
objRef = getStaticId(clnm, cpuNumber).toString();
} else if (thread instanceof MainThread)
{
clnm = "ENTRY";
objRef = getStaticId(clnm, cpuNumber).toString();
}
} else if (objRef == null)
{
objRef = "" + obj.objectReference;
clnm = obj.type.toString();
}
} catch (Exception e)
{
e.printStackTrace();
}
return " objref: " + objRef + " clnm: \"" + clnm + "\"";
}
@Override
public void generateStaticDeploys()
{
ObjectValue obj = thread.getObject();
try
{
if (obj == null)
{
if (thread instanceof InitThread)
{
clnm = "INIT";
objRef = getStaticId(clnm, cpuNumber).toString();
} else if (thread instanceof MainThread)
{
clnm = "ENTRY";
objRef = getStaticId(clnm, cpuNumber).toString();
}
}
} catch (Exception e)
{
e.printStackTrace();
}
}
public ISchedulableThread getThread()
{
return this.thread;
}
}