#include <ProxyMgr.h>
Static Public Member Functions | |
| ProxyResultVarsizeMsg * | getANewMsg (NodeID nid, PatchID pid, int prioSize, ForceList *fls) |
Public Attributes | |
| NodeID | node |
| PatchID | patch |
| int | flLen [Results::maxNumForces] |
| Force * | forceArr |
| char * | isZero |
| char | padding [(8-(sizeof(envelope)+sizeof(NodeID)+sizeof(PatchID)+sizeof(int)*Results::maxNumForces+2 *sizeof(void *))%8)%8] |
|
||||||||||||||||||||
|
Definition at line 133 of file ProxyMgr.C. References ResizeArray< Elem >::begin(), flLen, Force, forceArr, ForceList, isZero, node, patch, ResizeArray< Elem >::size(), Vector::x, Vector::y, and Vector::z. 00133 {
00134
00135 //1. decide the length of forceArr and iszero field.
00136 int tmpLen[Results::maxNumForces];
00137 int iszeroLen = 0;
00138 for (int i=0; i<Results::maxNumForces; i++){
00139 tmpLen[i] = fls[i].size();
00140 iszeroLen += tmpLen[i];
00141 }
00142 char *tmpIszero = new char[iszeroLen];
00143 char *iszeroPtr = tmpIszero;
00144 int fArrLen = 0;
00145 for(int i=0; i<Results::maxNumForces; i++) {
00146 Force *fiPtr = fls[i].begin();
00147 for(int j=0; j<tmpLen[i]; j++, fiPtr++, iszeroPtr++) {
00148 if(fiPtr->x!=0.0 || fiPtr->y!=0.0 || fiPtr->z!=0) {
00149 *iszeroPtr=0;
00150 fArrLen++;
00151 }else{
00152 *iszeroPtr=1;
00153 }
00154 }
00155 }
00156
00157 //2. Ready to create the msg, and set all fields
00158 ProxyResultVarsizeMsg *retmsg = new(fArrLen, iszeroLen, prioSize)ProxyResultVarsizeMsg;
00159 retmsg->node = nid;
00160 retmsg->patch = pid;
00161 memcpy(retmsg->flLen, tmpLen, sizeof(int)*Results::maxNumForces);
00162 iszeroPtr = tmpIszero;
00163 Force *forcePtr = retmsg->forceArr;
00164 for(int i=0; i<Results::maxNumForces; i++) {
00165 Force *fiPtr = fls[i].begin();
00166 for(int j=0; j<tmpLen[i]; j++, fiPtr++, iszeroPtr++) {
00167 if((*iszeroPtr)!=1) {
00168 forcePtr->x = fiPtr->x;
00169 forcePtr->y = fiPtr->y;
00170 forcePtr->z = fiPtr->z;
00171 forcePtr++;
00172 }
00173 }
00174 }
00175 memcpy(retmsg->isZero, tmpIszero, sizeof(char)*iszeroLen);
00176 delete [] tmpIszero;
00177 return retmsg;
00178 }
|
|
|
Definition at line 120 of file ProxyMgr.h. Referenced by getANewMsg(), and HomePatch::receiveResults(). |
|
|
Definition at line 122 of file ProxyMgr.h. Referenced by getANewMsg(), and HomePatch::receiveResults(). |
|
|
Definition at line 125 of file ProxyMgr.h. Referenced by getANewMsg(), and HomePatch::receiveResults(). |
|
|
Definition at line 118 of file ProxyMgr.h. Referenced by getANewMsg(), and HomePatch::receiveResults(). |
|
|
Definition at line 131 of file ProxyMgr.h. |
|
|
Definition at line 119 of file ProxyMgr.h. Referenced by getANewMsg(), ProxyMgr::recvResults(), and ProxyMgr::sendResults(). |
1.3.9.1