A getSymKstack(void) { I n=K-MY;I *zp,i,s; C **ns=get_primlist(1,1); A z=gv(Et,n);zp=z->p; i=1; while(i<=n) { s=MY[i++]; if(0==s){*zp++=(I)aplus_nl;} else if(s>-9999&&s<6) { if(0>s)*zp++=(I)gi(-s); else *zp++=(I)gvi(Et,1,MS(si(ns[s]))); } else if(QV(s)) { *zp++=(I)gvi(Et,2,gsv(0,"file"),gsv(0,(C *)(s&~aplusMask))); *zp++=(I)gi(-MY[i++]); } else if(QS(s)) { *zp++=(I)gvi(Et,2,gsv(0,"expr"),gsv(0,(C *)(s&~aplusMask))); } else { A f=(A)s; sprintf((C *)ks_buf,"%s.%s",((CX)f->p[f->n+2])->s->n,XS(*f->d)->n); *zp++=(I)gvi(Et,2,gsv(0,"func"),gsv(0,(C *)ks_buf)); } } R z; }
ENTRYPOINT A ipcWhatis(I handle_) { AipcService *srvptr=lookupAnyHandle(handle_); ipcWarn(srvptr?srvptr->wrnlvl():0,"%t ipcWhatis\n"); if(srvptr==0) return gvi(Et,2,MS(si("")),MS(si(""))); return gvi(Et,2,MS(si(serviceNames[srvptr->serviceType()])), MS(si((char *)srvptr->protocol()))); }
A pString_Connection::syncSendCover(A msg_, A aTimeout) { struct timeval gameover, *tvp; I rc; ipcWarn(wrnlvl(),"%t pString_Connection::syncSend\n"); tvp = atotv(aTimeout, &gameover); if(writeChannel()==0) return syncErrorResult("nochan","channel is null"); /* put stuff on queue */ int dataSize = msg_->n; int bufferSize = HeaderLength +dataSize; int temp = htonl(dataSize); MSBuffer *sb=new MSBuffer( bufferSize); if(NULL==sb) return syncErrorResult("Buffer","new MSBuffer routine failed."); sb->stuff((char *)(&temp), HeaderLength); sb->stuff((const char *)msg_->p, dataSize); sendTheBuffer(sb); /* while loop on select() until timeout or write queue empty */ rc=syncWriteLoop(tvp); if(0>rc) return syncErrorResult(errorSymbol,errorMessage); else return gvi(Et,3,gsym("OK"),gi(rc),writeQueueStatus()); }
void AipcAttributes::init(void) { ipcWarn(0,"%t AipcAttributes::init\n"); _flagAttrs=_readPriority=_writePriority=_readBufsize=_writeBufsize= _listener=0; _clientData=(A)0; retry(MSTrue); if(0==SetableAttrs) SetableAttrs=gvi(Et,10,MS(si("noDelay")), MS(si("readPause")),MS(si("writePause")), MS(si("readPriority")),MS(si("writePriority")), MS(si("readBufsize")),MS(si("writeBufsize")), MS(si("retry")),MS(si("clientData")),MS(si("debug"))); if(0==NonsetableAttrs) NonsetableAttrs=gvi(Et,5,MS(si("fd")),MS(si("port")), MS(si("writeStatus")),MS(si("readStatus")), MS(si("listener"))); }
A getBeamMSyncMode(void) { if(msyncMode) { if(msyncFlag&MS_ASYNC && msyncFlag&MS_INVALIDATE) return gvi(Et,2,MS(si("MS_ASYNC")),MS(si("MS_INVALIDATE"))); else if(msyncFlag&MS_SYNC && msyncFlag&MS_INVALIDATE) return gvi(Et,2,MS(si("MS_SYNC")),MS(si("MS_INVALIDATE"))); else if(msyncFlag==MS_ASYNC) return gsym("MS_ASYNC"); else if(msyncFlag==MS_SYNC) return gsym("MS_SYNC"); else return gi(msyncFlag); } else return gsym("none"); }
A getAbsoluteTimeout(A aobj_) { struct timeval gameover, *tvp; ipcWarn(0,"%t getAbsoluteTimeout\n"); tvp = atotv(aobj_, &gameover); if (NULL==tvp) return(A)0; else return gvi(It,3,tvp->tv_sec,tvp->tv_usec,1); }
ENTRYPOINT A ipcAttrlists(I handle_) { AipcService *srvptr=lookupAnyHandle(handle_); ipcWarn(srvptr?srvptr->wrnlvl():0,"%t ipcAttrlists\n"); A z=(A)0; if(!srvptr)return z; switch(srvptr->serviceType()) { case 1: /* connection */ z=gvi(Et,2,((AipcConnection *)srvptr)->getableAttrlist(), ((AipcConnection *)srvptr)->setableAttrlist()); break; case 2: /* listener */ z=gvi(Et,2,((AipcListener *)srvptr)->getableAttrlist(), ((AipcListener *)srvptr)->setableAttrlist()); break; case 4: /* timer */ z=gvi(Et,2,((TimrConnection *)srvptr)->getableAttrlist(), ((TimrConnection *)srvptr)->setableAttrlist()); break; } return z; }
A pString_Connection::syncReadCover(A aTimeout) { struct timeval gameover, *tvp; A dataobj; ipcWarn(wrnlvl(),"%t pString_Connection::SyncRead\n"); tvp = atotv(aTimeout, &gameover); if(readChannel()==0) return syncErrorResult("nochan","channel is null"); /* while loop on select() until timeout or complete message received */ dataobj=syncReadLoop(tvp); if (dataobj) return gvi(Et,3,gsym("OK"),dataobj,aplus_nl); else return syncErrorResult(errorSymbol, errorMessage); }
A SymbolTableBlockInfo(void) { A t,z = gv(Et,3); I count, *ip; SBS cur; z->p[0]=(I)gvi(It,2,SymHashTable->nb,SymHashTable->ni); for(count=0,cur=&SymBlockListHead;cur=cur->next;++count) ; t=gm(It,count,3),ip=t->p; for(cur=&SymBlockListHead;cur=cur->next; *ip++=cur->size,*ip++=cur->idx,*ip++=cur->count) ; z->p[1]=(I)t; for(count=0,cur=FullSymBlockList;cur;++count,cur=cur->next) ; t=gm(It,count,3),ip=t->p; for(cur=FullSymBlockList;cur;cur=cur->next) *ip++=cur->size,*ip++=cur->idx,*ip++=cur->count; z->p[2]=(I)t; R z; }
Z H1(rake){A z;I n,d=0;n=rake_1p(a,0,&d);if(!n)R(I)aplus_nl; if(!d)R(I)gvi(Et,1,ic(a));z=gv(Et,n);z->n=0;rake_2p(a,z);R(I)z;}
static A syncErrorResult(const C *sym_, const C *str_) { return gvi(Et,3,gsym("error"),gsym(sym_),gsv(0,str_)); }