Пример #1
0
int 
UDP_Socket::recvObj(int commitTag,
    MovableObject &theObject, FEM_ObjectBroker &theBroker, 
    ChannelAddress *theAddress)
{
    int res = theObject.recvSelf(commitTag, *this, theBroker);
    if (res < 0) 
        return res;
    
    // check the address that message came from was correct
    if (theAddress != 0) {
        SocketAddress *theSocketAddress = 0;
        
        if (theAddress->getType() == SOCKET_TYPE) {
            theSocketAddress = (SocketAddress *)theAddress;
            
            if (memcmp((char *) &theSocketAddress->address.addr, (char *) &other_Addr.addr, 
                theSocketAddress->addrLength) != 0) {
                    opserr << "UDP_Socket::recvObj() - a UDP_Socket ";
                    opserr << "can only look at first incoming message\n"; 
                    opserr << "The last message did not come from write scource\n";
                    return -1;
            }
        }
        else {
            opserr << "UDP_Socket::recvObj() - a UDP_Socket ";
            opserr << "can only communicate with a UDP_Socket";
            opserr << " address given is not of type SocketAddress\n";
            return -1;
        }
    }
    
    return 0;
}
Пример #2
0
int 
TCP_Socket::recvObj(int commitTag,
    MovableObject &theObject, FEM_ObjectBroker &theBroker, 
    ChannelAddress *theAddress)
{
    // first check address is the only address a TCP_socket can send to
    SocketAddress *theSocketAddress = 0;
    if (theAddress != 0) {
        if (theAddress->getType() == SOCKET_TYPE) 
            theSocketAddress = (SocketAddress *)theAddress;
        else {
            opserr << "TCP_Socket::recvObj() - a TCP_Socket ";
            opserr << "can only communicate with a TCP_Socket";
            opserr << " address given is not of type SocketAddress\n"; 
            return -1;	    
        }		    
        if (bcmp((char *) &other_Addr.addr_in, (char *) &theSocketAddress->address.addr, 
            theSocketAddress->addrLength) != 0) {

                opserr << "TCP_Socket::recvObj() - a TCP_Socket ";
                opserr << "can only communicate with one other TCP_Socket\n"; 
                return -1;
        }
    }

    return theObject.recvSelf(commitTag, *this, theBroker);
}
Пример #3
0
int 
FE_Datastore::recvObj(int commitTag,
		      MovableObject &theObject, 
		      FEM_ObjectBroker &theNewBroker,
		      ChannelAddress *theAddress)
{
  return theObject.recvSelf(commitTag, *this, theNewBroker);
}
Пример #4
0
int FileChannel::recvObj(int commitTag,
			MovableObject &theObject, 
			FEM_ObjectBroker &theBroker,
						  ChannelAddress *theAddress) {
  if ( !theFile )
	return -1;


  setCommitStep( commitTag );
  return theObject.recvSelf(commitTag, *this, theBroker);
}
Пример #5
0
int 
MPI_Channel::recvObj(int commitTag,
		     MovableObject &theObject, 
		     FEM_ObjectBroker &theBroker, 
		     ChannelAddress *theAddress)
{
    // first check address is the only address a MPI_Channel can send to
    MPI_ChannelAddress *theMPI_ChannelAddress = 0;
    if (theAddress != 0) {
      if (theAddress->getType() == MPI_TYPE) {
	theMPI_ChannelAddress = (MPI_ChannelAddress *)theAddress;
	otherTag = theMPI_ChannelAddress->otherTag;
	otherComm= theMPI_ChannelAddress->otherComm;
      } else {
	opserr << "MPI_Channel::recvObj() - a MPI_Channel ";
	opserr << "can only communicate with a MPI_Channel";
	opserr << " address given is not of type MPI_ChannelAddress\n"; 
	return -1;	    
      }		    
    }
    return theObject.recvSelf(commitTag, *this, theBroker);
}