/******************************************************************************* * Copyright (c) 2010 protos software gmbh (http://www.protos.de). * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.eclipse.etrice.runtime.java.modelbase; import org.eclipse.etrice.runtime.java.messaging.AbstractMessageReceiver; import org.eclipse.etrice.runtime.java.messaging.Address; import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver; import org.eclipse.etrice.runtime.java.messaging.MessageService; import org.eclipse.etrice.runtime.java.messaging.RTServices; /** * The abstract base class for actor class interface items like ports and saps. * * @author Henrik Rentz-Reichert * */ public abstract class InterfaceItemBase extends AbstractMessageReceiver { private IMessageReceiver ownMsgReceiver; private IMessageReceiver peerMsgReceiver; private int localId; private int idx; private Address peerAddress; public InterfaceItemBase (IEventReceiver actor, String name, int localId, int idx, Address ownAddress, Address peerAddress){ super(actor, ownAddress, name); this.ownMsgReceiver = RTServices.getInstance().getMsgSvcCtrl().getMsgSvc(ownAddress.threadID); this.peerMsgReceiver = RTServices.getInstance().getMsgSvcCtrl().getMsgSvc(peerAddress.threadID); this.localId = localId; this.idx = idx; this.peerAddress = peerAddress; if (getAddress()!=null && this.ownMsgReceiver instanceof MessageService) { MessageService ms = (MessageService) this.ownMsgReceiver; // register at the own dispatcher to receive messages ms.getMessageDispatcher().addMessageReceiver(this); } } protected IMessageReceiver getMsgReceiver() { return ownMsgReceiver; } protected IMessageReceiver getPeerMsgReceiver() { return peerMsgReceiver; } public void setMsgReceiver(IMessageReceiver msgReceiver) { this.ownMsgReceiver = msgReceiver; } public IEventReceiver getActor() { return (IEventReceiver) getParent(); } public int getLocalId() { return localId; } public int getIdx() { return idx; } protected Address getPeerAddress() { return peerAddress; } }