ENTRYPOINT I ipcConnectNP(A afunc, A aname, A aprotocol) { C *serviceName=getString(aname); S protocolSym=getSymbol(aprotocol); int protocolidx; AipcService *nSrv; InitializeIfNeeded(); ipcWarn(0,"%t ipcConnectN:\n"); if (!serviceName||!protocolSym||!QF(afunc))return -1; AipcHostPortProtocol *ahpp=new AipcHostPortProtocol(serviceName); ahpp->protocol(protocolSym->n); // const C *hostName=ahpp->host(); // I port=ahpp->port(); ipcWarn(0,"%t ipcConnectN: name:%s host:%s port:%d protocol:%s\n", serviceName,ahpp->host(),ahpp->port(),ahpp->protocol()); protocolidx=lookupProtocol(protocolSym); switch(protocolidx) { case 0: nSrv=new pA_Connection(*ahpp,afunc); break; case 1: nSrv=new pRaw_Connection(*ahpp,afunc); break; case 4: nSrv=new pIpc_Connection(*ahpp,afunc); break; case 6: nSrv=new pString_Connection(*ahpp,afunc); break; case 7: nSrv=new pSimple_Connection(*ahpp,afunc); break; default: /* unknown protocol */ Warn("%t ipcConnectN: unknown protocol:%s\n",protocolSym->n); return -1; } return nSrv->handle(); }
ENTRYPOINT I ipcListenNP(A afunc, A aname, A aprotocol) { C *serviceName=getString(aname); S protocolSym=getSymbol(aprotocol); int protocolidx; AipcListener *nLstn; InitializeIfNeeded(); ipcWarn(0,"%t ipcListenN:\n"); if(!serviceName||!QF(afunc))return -1; AipcHostPortProtocol *ahpp=new AipcHostPortProtocol(serviceName); // const C *hostName=ahpp->host(); I port=ahpp->port(); ipcWarn(0,"%t ipcListenN: name:%s port:%d protocol:%s\n",serviceName, port,protocolSym->n); protocolidx=lookupProtocol(protocolSym); switch(protocolidx) { case 0: nLstn=new pA_Listener(*ahpp,afunc); break; case 1: nLstn=new pRaw_Listener(*ahpp,afunc); break; case 4: nLstn=new pIpc_Listener(*ahpp,afunc); break; case 6: nLstn=new pString_Listener(*ahpp,afunc); break; case 7: nLstn=new pSimple_Listener(*ahpp,afunc); break; default: /* unknown protocol */ Warn("%t ipcListenN: unknown protocol:%s\n",protocolSym->n); return -1; } return nLstn->handle(); }
Z I dr(A a,I f) { XA; A z,*ap=(A*)a->p,w; if(!an||at!=Et||fsy(a))R ic(a); /* ic_or_copy(a) */ w=*ap; Q(QF(w),9); if(!ar)R ic(w); /* ic_or_copy(w) */ { XW; I i=an,n=0,t; C *p; if(f){Q(ar>1,7)V0 n=*wd;} else{Q(ar+wr>MAXR,13)mv(ad+ar,wd,wr);} for(;--i;) { Q(!QA(a=ap[i])||(t=a->t)>Et,9); if(wt!=t&&a->n) if(f&&!n)wt=t; else{Q(wt>Ft||t>Ft,6)wt=Ft;} if(wr!=a->r){Q(!f||wr>1||a->r,7)*a->d=1;} Q(cm(wd+f,a->d+f,wr-f),11); if(f)n+=*a->d; } W(ga(wt,f?wr:ar+wr,f?n*tr(wr-1,wd+1):an*wn,f?wd:ad)); if(f)*z->d=n; p=(C*)z->p; DO(an,a=ap[i]; p=(*(a->t==wt?(C *(*)(I,F *,I *,I))tmv:i2f))(wt,(F *)p,a->p,a->n)); R(I)z; } }
Z I dp(A a) { I k,d=0; if(QF(a))R -1; if(a->t<Et)R 0; DO(a->n,if((k=1+dp((A)a->p[i]))>d)d=k); R d; }
I ea(I f,A a,A w) { A z,*p;I at,k,wt=0,j=0; C *ap,*wp=0; if(w)ND2 else ND1; at=a->t,k=a->r?Tt(at,1):0,ap=(C*)a->p; if(w) if(wt=w->t,wp=(C*)w->p,j=w->r?Tt(wt,1):0,k&&j) { Q(a->r!=w->r,7); Q(cm(a->d,w->d,a->r),8); } W(gd(Et,j?w:a)); *--Y=zr(z),p=(A*)z->p; DO(z->n, if(at<Et||(a=*(A*)ap,QF(a)))a=gc(at,0,1,0,(I*)ap); else ic(a);
ENTRYPOINT I ipcConnectNHPP(A afunc, A aname, A ahost, I port, A aprotocol) { C *serviceName=getString(aname); C *hostName=getString(ahost); S protocolSym=getSymbol(aprotocol); int protocolidx; AipcService *nSrv; InitializeIfNeeded(); ipcWarn(0,"%t ipcConnectNHPP:\n"); if (!serviceName||!hostName||!protocolSym||!QF(afunc))return -1; ipcWarn(0,"%t ipcConnectNHPP: name:%s host:%s port:%d protocol:%s\n", serviceName,hostName,port,protocolSym->n); protocolidx=lookupProtocol(protocolSym); switch(protocolidx) { case 0: nSrv=new pA_Connection(serviceName,hostName,port,afunc); break; case 1: nSrv=new pRaw_Connection(serviceName,hostName,port,afunc); break; case 2: Warn("%t ipcConnectHPP: unsupported protocol:%s\n",protocolSym->n); return -1; break; case 4: nSrv=new pIpc_Connection(serviceName,hostName,port,afunc); break; case 5: Warn("%t ipcConnectHPP: unsupported protocol:%s\n",protocolSym->n); return -1; break; case 6: nSrv=new pString_Connection(serviceName,hostName,port,afunc); break; case 7: nSrv=new pSimple_Connection(serviceName,hostName,port,afunc); break; default: /* unknown protocol */ Warn("%t ipcConnectHPP: unknown protocol:%s\n",protocolSym->n); return -1; } return nSrv->handle(); }
Z void rake_2p(A a,A z){if(QF(a)||Et!=a->t||fsy(a)&&a->n) {z->p[z->n++]=QA(a)?ic(a):(I)a;R;}if(!a->n)R;DO(a->n,rake_2p((A)a->p[i],z));R;}
Z I rake_1p(A a,I cd,I *pd){I z=0;if(QF(a)||Et!=a->t||fsy(a)&&a->n)R 1; if(!a->n)R 0;if(cd>=*pd)*pd=cd+1;DO(a->n,z+=rake_1p((A)a->p[i],cd+1,pd));R z;}