blob: 1e6bfec722e906a0b5a248ec0bdc94d6c7390d79 [file] [log] [blame]
package room.basic.service.tcp;
import org.eclipse.etrice.runtime.java.messaging.Message;
import org.eclipse.etrice.runtime.java.modelbase.EventMessage;
import org.eclipse.etrice.runtime.java.modelbase.EventWithDataMessage;
import org.eclipse.etrice.runtime.java.modelbase.IInterfaceItemOwner;
import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
import org.eclipse.etrice.runtime.java.modelbase.PortBase;
import org.eclipse.etrice.runtime.java.modelbase.ReplicatedPortBase;
import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
public class PTcpControl {
// message IDs
public static final int MSG_MIN = 0;
public static final int OUT_established = 1;
public static final int OUT_error = 2;
public static final int IN_open = 3;
public static final int IN_close = 4;
public static final int MSG_MAX = 5;
private static String messageStrings[] = {"MIN", "established","error", "open","close","MAX"};
public String getMessageString(int msg_id) {
if (msg_id<MSG_MIN || msg_id>MSG_MAX+1){
// id out of range
return "Message ID out of range";
}
else{
return messageStrings[msg_id];
}
}
// port class
static public class PTcpControlPort extends PortBase {
// constructors
public PTcpControlPort(IInterfaceItemOwner actor, String name, int localId) {
this(actor, name, localId, 0);
}
public PTcpControlPort(IInterfaceItemOwner actor, String name, int localId, int idx) {
super(actor, name, localId, idx);
DebuggingService.getInstance().addPortInstance(this);
}
public void destroy() {
DebuggingService.getInstance().removePortInstance(this);
super.destroy();
}
@Override
public void receive(Message m) {
if (!(m instanceof EventMessage))
return;
EventMessage msg = (EventMessage) m;
if (0 < msg.getEvtId() && msg.getEvtId() < MSG_MAX) {
DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);
if (msg instanceof EventWithDataMessage)
getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());
else
getActor().receiveEvent(this, msg.getEvtId(), null);
}
}
// sent messages
public void established() {
DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[OUT_established]);
if (getPeerAddress()!=null)
getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), OUT_established));
}
public void error() {
DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[OUT_error]);
if (getPeerAddress()!=null)
getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), OUT_error));
}
}
// replicated port class
static public class PTcpControlReplPort extends ReplicatedPortBase {
public PTcpControlReplPort(IInterfaceItemOwner actor, String name, int localId) {
super(actor, name, localId);
}
public int getReplication() {
return getNInterfaceItems();
}
public int getIndexOf(InterfaceItemBase ifitem){
return ifitem.getIdx();
}
public PTcpControlPort get(int idx) {
return (PTcpControlPort) getInterfaceItem(idx);
}
protected InterfaceItemBase createInterfaceItem(IInterfaceItemOwner rcv, String name, int lid, int idx) {
return new PTcpControlPort(rcv, name, lid, idx);
}
// outgoing messages
public void established(){
for (InterfaceItemBase item : getItems()) {
((PTcpControlPort)item).established();
}
}
public void error(){
for (InterfaceItemBase item : getItems()) {
((PTcpControlPort)item).error();
}
}
}
// port class
static public class PTcpControlConjPort extends PortBase {
// constructors
public PTcpControlConjPort(IInterfaceItemOwner actor, String name, int localId) {
this(actor, name, localId, 0);
}
public PTcpControlConjPort(IInterfaceItemOwner actor, String name, int localId, int idx) {
super(actor, name, localId, idx);
DebuggingService.getInstance().addPortInstance(this);
}
public void destroy() {
DebuggingService.getInstance().removePortInstance(this);
super.destroy();
}
@Override
public void receive(Message m) {
if (!(m instanceof EventMessage))
return;
EventMessage msg = (EventMessage) m;
if (0 < msg.getEvtId() && msg.getEvtId() < MSG_MAX) {
DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);
if (msg instanceof EventWithDataMessage)
getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());
else
getActor().receiveEvent(this, msg.getEvtId(), null);
}
}
// sent messages
public void open(DTcpControl transitionData) {
DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[IN_open]);
if (getPeerAddress()!=null)
getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), IN_open, transitionData.deepCopy()));
}
public void open(String IPAddr, int TcpPort) {
open(new DTcpControl(IPAddr, TcpPort));
}
public void close() {
DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[IN_close]);
if (getPeerAddress()!=null)
getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), IN_close));
}
}
// replicated port class
static public class PTcpControlConjReplPort extends ReplicatedPortBase {
public PTcpControlConjReplPort(IInterfaceItemOwner actor, String name, int localId) {
super(actor, name, localId);
}
public int getReplication() {
return getNInterfaceItems();
}
public int getIndexOf(InterfaceItemBase ifitem){
return ifitem.getIdx();
}
public PTcpControlConjPort get(int idx) {
return (PTcpControlConjPort) getInterfaceItem(idx);
}
protected InterfaceItemBase createInterfaceItem(IInterfaceItemOwner rcv, String name, int lid, int idx) {
return new PTcpControlConjPort(rcv, name, lid, idx);
}
// incoming messages
public void open(DTcpControl transitionData){
for (InterfaceItemBase item : getItems()) {
((PTcpControlConjPort)item).open( transitionData);
}
}
public void close(){
for (InterfaceItemBase item : getItems()) {
((PTcpControlConjPort)item).close();
}
}
}
}