/* ChapelIO.chpl:249 */ void writeThis(_string _this_18382, Writer f, int32_t _ln, _string _fn) { chpl_bool T1; file T2 = NULL; chpl_bool T3; StringClass T4 = NULL; T1 = (((object)f)->_cid == _e_file); if (T1) { T2 = ((file)(f)); writeIt(T2, _this_18382, _ln, _fn); } else { T3 = (((object)f)->_cid == _e_StringClass); if (T3) { T4 = ((StringClass)(f)); _writeIt_18503(T4, _this_18382, _ln, _fn); } else { _writeIt_18704(f, _this_18382); } } return; }
static asynStatus writeOnce(const char *port, int addr, char const *buffer, size_t buffer_len, double timeout, size_t *nbytesTransfered,const char *drvInfo) { asynStatus status; asynUser *pasynUser; status = connect(port,addr,&pasynUser,drvInfo); if(status!=asynSuccess) { asynPrint(pasynUser, ASYN_TRACE_ERROR, "asynOctetSyncIO connect failed %s\n",pasynUser->errorMessage); disconnect(pasynUser); return status; } status = writeIt(pasynUser,buffer,buffer_len,timeout,nbytesTransfered); if(status!=asynSuccess) { asynPrint(pasynUser, ASYN_TRACE_ERROR, "asynOctetSyncIO write failed %s\n",pasynUser->errorMessage); } disconnect(pasynUser); return status; }
static void callbackSiWriteRead(asynUser *pasynUser) { devPvt *pdevPvt = (devPvt *)pasynUser->userPvt; stringinRecord *precord = (stringinRecord *)pdevPvt->precord; asynStatus status; size_t nBytesRead; long dbStatus; char raw[MAX_STRING_SIZE]; char translate[MAX_STRING_SIZE]; size_t len = sizeof(precord->val); status = pasynManager->unblockProcessCallback(pasynUser,pdevPvt->blockAll); if(status!=asynSuccess) { asynPrint(pasynUser,ASYN_TRACE_ERROR, "%s pasynManager:unblockProcessCallback failed %s\n", precord->name,pasynUser->errorMessage); recGblSetSevr(precord,READ_ALARM,INVALID_ALARM); goto done; } switch(pdevPvt->state) { case stateIdle: dbStatus = dbGet(&pdevPvt->dbAddr,DBR_STRING,raw,0,0,0); if(dbStatus) { asynPrint(pasynUser,ASYN_TRACE_ERROR, "%s dbGet failed\n",precord->name); recGblSetSevr(precord,READ_ALARM,INVALID_ALARM); goto done; } dbTranslateEscape(translate,raw); status = writeIt(pasynUser,translate,strlen(translate)); if(status!=asynSuccess) { asynPrint(pasynUser,ASYN_TRACE_ERROR, "%s asynOctet:write failed %s\n", precord->name,pasynUser->errorMessage); recGblSetSevr(precord,READ_ALARM,INVALID_ALARM); goto done; } pdevPvt->state = stateWrite; status = queueIt(pdevPvt); if(status!=asynSuccess) goto done; return; case stateWrite: status = readIt(pasynUser,precord->val,len,&nBytesRead); if(status!=asynSuccess) { asynPrint(pasynUser,ASYN_TRACE_ERROR, "%s asynOctet:write failed %s\n", precord->name,pasynUser->errorMessage); recGblSetSevr(precord,READ_ALARM,INVALID_ALARM); goto done; } if(status==asynSuccess) { if(nBytesRead==len) nBytesRead--; precord->val[nBytesRead] = 0; } pdevPvt->state = stateIdle; break; /*all done*/ } done: pdevPvt->state = stateIdle; callbackRequestProcessCallback( &pdevPvt->processCallback,precord->prio,precord); }