#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 144 of file ProxyMgr.C. References ResizeArray< Elem >::begin(), flLen, Force, forceArr, ForceList, isZero, j, node, patch, ResizeArray< Elem >::size(), Vector::x, Vector::y, and Vector::z. 00144 {
00145
00146 //1. decide the length of forceArr and iszero field.
00147 int tmpLen[Results::maxNumForces];
00148 int iszeroLen = 0;
00149 for (int i=0; i<Results::maxNumForces; i++){
00150 tmpLen[i] = fls[i].size();
00151 iszeroLen += tmpLen[i];
00152 }
00153 char *tmpIszero = new char[iszeroLen];
00154 char *iszeroPtr = tmpIszero;
00155 int fArrLen = 0;
00156 for(int i=0; i<Results::maxNumForces; i++) {
00157 Force *fiPtr = fls[i].begin();
00158 for(int j=0; j<tmpLen[i]; j++, fiPtr++, iszeroPtr++) {
00159 if(fiPtr->x!=0.0 || fiPtr->y!=0.0 || fiPtr->z!=0) {
00160 *iszeroPtr=0;
00161 fArrLen++;
00162 }else{
00163 *iszeroPtr=1;
00164 }
00165 }
00166 }
00167
00168 //2. Ready to create the msg, and set all fields
00169 ProxyResultVarsizeMsg *retmsg = new(fArrLen, iszeroLen, prioSize)ProxyResultVarsizeMsg;
00170 retmsg->node = nid;
00171 retmsg->patch = pid;
00172 memcpy(retmsg->flLen, tmpLen, sizeof(int)*Results::maxNumForces);
00173 iszeroPtr = tmpIszero;
00174 Force *forcePtr = retmsg->forceArr;
00175 for(int i=0; i<Results::maxNumForces; i++) {
00176 Force *fiPtr = fls[i].begin();
00177 for(int j=0; j<tmpLen[i]; j++, fiPtr++, iszeroPtr++) {
00178 if((*iszeroPtr)!=1) {
00179 forcePtr->x = fiPtr->x;
00180 forcePtr->y = fiPtr->y;
00181 forcePtr->z = fiPtr->z;
00182 forcePtr++;
00183 }
00184 }
00185 }
00186 memcpy(retmsg->isZero, tmpIszero, sizeof(char)*iszeroLen);
00187 delete [] tmpIszero;
00188 return retmsg;
00189 }
|
|
|
Definition at line 148 of file ProxyMgr.h. Referenced by getANewMsg(), and HomePatch::receiveResults(). |
|
|
Definition at line 150 of file ProxyMgr.h. Referenced by getANewMsg(), and HomePatch::receiveResults(). |
|
|
Definition at line 153 of file ProxyMgr.h. Referenced by getANewMsg(), and HomePatch::receiveResults(). |
|
|
Definition at line 146 of file ProxyMgr.h. Referenced by getANewMsg(), and HomePatch::receiveResults(). |
|
|
Definition at line 159 of file ProxyMgr.h. |
|
|
Definition at line 147 of file ProxyMgr.h. Referenced by getANewMsg(), ProxyMgr::recvResults(), and ProxyMgr::sendResults(). |
1.3.9.1