# cProxyGate Class Reference
[Parallel simulation support]

A gate that belongs to a cross-partition link and represents the remote gate on the local partition. More...

`#include <cproxygate.h>`

Inheritance diagram for cProxyGate:

List of all members.

## Public Member Functions

Constructor, destructor, copying
| cProxyGate (const char *name, char tp)
| cProxyGate (const cProxyGate &gate)
virtual | ~cProxyGate ()
Redefined cObject member functions
virtual cPolymorphic * | dup () const
cProxyGate & | operator= (const cProxyGate &gate)
virtual std::string | info () const
Redefined cGate member functions
virtual bool | deliver (cMessage *msg, simtime_t at)
Address of remote gate
void | setRemoteGate (int procId, int moduleId, int gateId)
int | getRemoteProcId ()
int | getRemoteModuleId ()
int | getRemoteGateId ()
cParsimPartition pointer
void | setPartition (cParsimPartition *seg)
cParsimPartition * | getPartition ()
Generic associated data pointer
void | setSynchData (void *data)
void * | getSynchData ()

## Detailed Description

A gate that belongs to a cross-partition link and represents the remote gate on the local partition.

cProxyGate's belong to cPlaceHolderModule objects, which represent a "remote" module in the local partition.

This class basically exists so that we can override the deliver() method of cGate so that it doesn't pass arriving messages to the module object but to parallel simulation layer (cParsimPartition) instead -- so cParsimPartition can deliver them to the remote partition.

cProxyGate contains the address of the corresponding remote gate as a (procId, moduleId, gateId) triplet:

- procId is a partition identifier (also used by cParsimCommunications; in the MPI implementation of cParsimCommunications it maps to MPI_rank)

- moduleId and gateId identify the target ("to-") gate on the remote partition.

## Constructor & Destructor Documentation

cProxyGate::cProxyGate | ( | const char * | name,
|  | char | tp
| ) |

| Constructor.

cProxyGate::cProxyGate | ( | const cProxyGate & | gate | ) |

| Copy constructor.

virtual cProxyGate::~cProxyGate | ( |  | ) | `[inline, virtual]`

| Destructor.

## Member Function Documentation

virtual bool cProxyGate::deliver | ( | cMessage * | msg,
|  | simtime_t | at
| ) | `[virtual]`

| Redefined to pass message to the parallel simulation layer, cParsimPartition. Invokes the cParsimPartition::processOutgoingMessage() method to transmit the message, then deletes the message object. Reimplemented from cGate.

virtual cPolymorphic* cProxyGate::dup | ( |  | ) | const`[inline, virtual]`

| Duplicates the gate object. Reimplemented from cGate.

cParsimPartition* cProxyGate::getPartition | ( |  | ) | `[inline]`

| Returns pointer to cParsimPartition object.

int cProxyGate::getRemoteGateId | ( |  | ) | `[inline]`

| Returns Id of remote gate in remote partition and remote module.

int cProxyGate::getRemoteModuleId | ( |  | ) | `[inline]`

| Returns module Id in remote partition where remote gate resides.

int cProxyGate::getRemoteProcId | ( |  | ) | `[inline]`

| Returns partition where remote gate resides.

void* cProxyGate::getSynchData | ( |  | ) | `[inline]`

| Returns the data pointer in this object.

virtual std::string cProxyGate::info | ( |  | ) | const`[virtual]`

| Redefined here to display remoteProcId, remoteModId and remoteGateId. Reimplemented from cGate.

cProxyGate& cProxyGate::operator= | ( | const cProxyGate & | gate | ) |

| Assigment operator.

void cProxyGate::setPartition | ( | cParsimPartition * | seg | ) | `[inline]`

| Sets cParsimPartition object.

void cProxyGate::setRemoteGate | ( | int | procId,
|  | int | moduleId,
|  | int | gateId
| ) |

| Sets remote gate address.

void cProxyGate::setSynchData | ( | void * | data | ) | `[inline]`

| Sets the data pointer in this object. This pointer is used by the parallel simulation synchronizaton layer (cParsimSynchronizer) to store additional information about the gate.

The documentation for this class was generated from the following file:

- cproxygate.h