Edi *ediOpen(cchar *path, cchar *providerName, int flags) { EdiProvider *provider; if ((provider = lookupProvider(providerName)) == 0) { mprError("Can't find EDI provider '%s'", providerName); return 0; } return provider->open(path, flags); }
int printDepList(rpmts *ts, int tscount) { int rc = 0; if( tscount > 1 ) fprintf(stderr, ">1 database specified with dependency list, using first only\n"); /* Get list of names */ rpmdb db = rpmtsGetRdb(ts[0]); ARGV_t names = NULL; rc = rpmdbMireApply(db, RPMTAG_NAME, RPMMIRE_STRCMP, NULL, &names); int nnames = argvCount(names); /* Get list of NVRAs */ ARGV_t keys = NULL; rc = rpmdbMireApply(db, RPMTAG_NVRA, RPMMIRE_STRCMP, NULL, &keys); if (keys) { int i, j; HE_t he = (HE_t) memset(alloca(sizeof(*he)), 0, sizeof(*he)); int nkeys = argvCount(keys); for(i=0; i<nkeys; i++) { rpmmi mi = rpmmiInit(db, RPMTAG_NVRA, keys[i], 0); Header h; if ((h = rpmmiNext(mi)) != NULL) { /* Get name of package */ he->tag = RPMTAG_NAME; rc = (headerGet(h, he, 0) != 1); char *name = strdup((char *)he->p.ptr); /* Get its requires */ he->tag = RPMTAG_REQUIRENAME; if (rc = (headerGet(h, he, 0) != 1)) { if (debugmode) { printf("DEBUG: %s requires null\n", name); } rc = 0; free(name); (void)rpmmiFree(mi); continue; } ARGV_t reqs = (ARGV_t)he->p.ptr; /* Get its requireflags */ he->tag = RPMTAG_REQUIREFLAGS; rc = (headerGet(h, he, 0) != 1); rpmuint32_t *reqflags = (rpmuint32_t *)he->p.ui32p; for(j=0; j<he->c; j++) { int k; char *prov = NULL; for(k=0; k<nnames; k++) { if(strcmp(names[k], reqs[j]) == 0) { prov = names[k]; break; } } if(prov) { if((int)reqflags[j] & 0x80000) fprintf(outf, "%s|%s [REC]\n", name, prov); else fprintf(outf, "%s|%s\n", name, prov); } else { rc = lookupProvider(ts[0], reqs[j], &prov); if(rc==0 && prov) { if((int)reqflags[j] & 0x80000) fprintf(outf, "%s|%s [REC]\n", name, prov); else fprintf(outf, "%s|%s\n", name, prov); free(prov); } } } free(name); } (void)rpmmiFree(mi); } } return rc; }
bool CTSimObj::detectEntities(EntityNameC &v, int id) { NSLookup::Provider *prov = lookupProvider(Service::DETECT_ENTITIES); if (!prov) { LOG_ERR(("detectEntities : cannot get service provider info [%s:%d]", __FILE__, __LINE__)); return false; } SOCKET sock = prov->sock(); if (sock < 0) { LOG_ERR(("detectEntities : cannot connect to service provider [%s:%d]", __FILE__, __LINE__)); return false; } CommRequestDetectEntitiesEncoder enc(myname(), id); #if 1 // modified by sekikawa on 2010-08-26 for confirmation // // Call prov->close() when a socket error arises between service provider // to set socket ID held by prov should be -1. // // If the prov->close() is not called before the exit of this method, // lookupProvider() might return a socket ID which is unvalid. // // In the last of this method, prov->close() will be called before the modification; // however, the error treatment is added for confirmation. if (enc.send(sock) < 0) { prov->close(); return false; } #else // orig enc.send(sock); #endif CommDataDecoder d; typedef CTReader Reader; Reader r(sock, d, 8192); #if 1 // retry version (added by sekikawa)(2009/03/13) bool ret = false; int retry = 5; int timeout = 10000; while (retry > 0) { #if 1 // sekikawa(FIX20100906) Result *result = NULL; try { result = r.readSync(); } catch(CTReader::ConnectionClosedException &e) { break; } #else // orig Result *result = r.readSync(); #endif if (result) { if (result->type() == COMM_RESULT_DETECT_ENTITIES) { ResultDetectEntitiesEvent *evt = (ResultDetectEntitiesEvent*) result->data(); evt->copy(v); ret = true; } delete result; break; } else { retry--; #ifdef WIN32 Sleep(timeout); #else usleep(timeout); #endif timeout *= 2; } } #else // original version Result *result = r.readSync(); bool ret = false; if (result) { if (result->type() == COMM_RESULT_DETECT_ENTITIES) { ResultDetectEntitiesEvent *evt = (ResultDetectEntitiesEvent*) result->data(); evt->copy(v); ret = true; } delete result; } #endif prov->close(); return ret; }
// Distance sensor more than 1D ViewImage *CTSimObj::distanceSensorD(double start, double end, int id, bool map) { NSLookup::Provider *prov = lookupProvider(Service::DISTANCE_SENSOR); if (!prov) { LOG_ERR(("distanceSensor1D : cannot get service provider info [%s:%d]", __FILE__, __LINE__)); return false; } SOCKET sock = prov->sock(); if (sock < 0) { LOG_ERR(("distanceSensor1D : cannot connect to service provider [%s:%d]", __FILE__, __LINE__)); return false; } CommRequestDistanceSensorEncoder *enc; if(map == false) { enc = new CommRequestDistanceSensorEncoder(myname(), start, end, id, 1); } else { // Encoder for 2D distance sensor enc = new CommRequestDistanceSensorEncoder(myname(), start, end, id, 2); } // CommRequestDistanceSensorEncoder enc(myname(), id); int status = enc->send(sock); delete enc; ViewImageInfo info(IMAGE_DATA_TYPE_ANY, DEPTHBIT_8, IMAGE_320X1); ViewImage *img; CommDataDecoder d; typedef CTReader Reader; int retry; if(map == true) retry = 25; else retry = 20; Reader *r = new Reader(sock, d, 100000); while (true) { Result *result = NULL; try { result = r->readSync(); } catch(CTReader::ConnectionClosedException &e) { break; } if (!result) { if (retry <= 0) { // add(sekikawa)(2010/08/10) LOG_ERR(("readSync() failed. max retry count exceeded. [%s:%d]", __FILE__, __LINE__)); break; } else { LOG_DEBUG1(("retrying readSync() ... [retry=%d]", retry)); retry--; #ifdef WIN32 Sleep(100000); #else usleep(100000); #endif continue; } } if (result->type() == COMM_RESULT_CAPTURE_VIEW_IMAGE) { ResultCaptureViewImageEvent *evt = (ResultCaptureViewImageEvent*)result->data(); img = evt->release(); } /* if (result->type() == COMM_RESULT_DISTANCE_SENSOR1D) { ResultDistanceSensor1DEvent *evt = (ResultDistanceSensor1DEvent*)result->data(); distance = evt->getDistance(); } */ delete result; break; } prov->close(); return img; }
//added by okamoto@tome(2011/9/8) unsigned char CTSimObj::distanceSensor(double start, double end, int id) { NSLookup::Provider *prov = lookupProvider(Service::DISTANCE_SENSOR); if (!prov) { LOG_ERR(("distanceSensor : cannot get service provider info [%s:%d]", __FILE__, __LINE__)); return false; } SOCKET sock = prov->sock(); if (sock < 0) { LOG_ERR(("distanceSensor : cannot connect to service provider [%s:%d]", __FILE__, __LINE__)); return false; } CommRequestDistanceSensorEncoder *enc = new CommRequestDistanceSensorEncoder(myname(), start, end, id); int status = enc->send(sock); delete enc; unsigned char distance; CommDataDecoder d; typedef CTReader Reader; int retry = 15; Reader *r = new Reader(sock, d, 1024); while (true) { Result *result = NULL; try { result = r->readSync(); } catch(CTReader::ConnectionClosedException &e) { break; } if (!result) { if (retry <= 0) { // add(sekikawa)(2010/08/10) LOG_ERR(("readSync() failed. max retry count exceeded. [%s:%d]", __FILE__, __LINE__)); break; } else { LOG_DEBUG1(("retrying readSync() ... [retry=%d]", retry)); retry--; #ifdef WIN32 Sleep(100000); #else usleep(100000); #endif continue; } } if (result->type() == COMM_RESULT_DISTANCE_SENSOR) { ResultDistanceSensorEvent *evt = (ResultDistanceSensorEvent*)result->data(); distance = evt->getDistance(); } delete result; break; } prov->close(); return distance; }
//add id argument by okamoto@tome(2011/8/26) ViewImage * CTSimObj::captureView(ColorBitType cbtype, ImageDataSize size, int id) { NSLookup::Provider *prov = lookupProvider(Service::CAPTURE_VIEW); if (!prov) { LOG_ERR(("captureView : cannot get service provider info [%s:%d]", __FILE__, __LINE__)); return false; } SOCKET sock = prov->sock(); if (sock < 0) { LOG_ERR(("captureView : cannot connect to service provider [%s:%d]", __FILE__, __LINE__)); return false; } ViewImageInfo info(IMAGE_DATA_TYPE_ANY, cbtype, size); { // Added id as an argument CommRequestCaptureViewImageEncoder *enc = new CommRequestCaptureViewImageEncoder(myname(), info, id); #if 1 // modified by sekikawa on 2010-08-26 // added error treatment in send() // note a comment of detectEntities() in this file int status = enc->send(sock); delete enc; if (status < 0) { prov->close(); return false; } #else // orig enc->send(sock); delete enc; #endif } ViewImage *img = 0; CommDataDecoder d; typedef CTReader Reader; // modify(sekikawa)(2010/08/10) // int retry = 10; int retry = 500; Reader *r = new Reader(sock, d, 100000); while (true) { #if 1 // sekikawa(FIX20100906) Result *result = NULL; try { result = r->readSync(); } catch(CTReader::ConnectionClosedException &e) { break; } #else // orig Result *result = r->readSync(); #endif if (!result) { if (retry <= 0) { // add(sekikawa)(2010/08/10) LOG_ERR(("readSync() failed. max retry count exceeded. [%s:%d]", __FILE__, __LINE__)); break; } else { LOG_DEBUG1(("retrying readSync() ... [retry=%d]", retry)); retry--; #ifdef WIN32 Sleep(100000); #else usleep(100000); #endif continue; } } LOG_DEBUG1(("readSync() succeeded")); if (result->type() == COMM_RESULT_CAPTURE_VIEW_IMAGE) { ResultCaptureViewImageEvent *evt = (ResultCaptureViewImageEvent*)result->data(); img = evt->release(); } delete result; break; } prov->close(); delete r; return img; }
Text * CTSimObj::getText(RawSound &rawSound) { NSLookup::Provider *prov = lookupProvider(Service::SOUND_RECOG); if (!prov) { LOG_ERR(("getText : cannot get service provider info [%s:%d]", __FILE__, __LINE__)); return false; } SOCKET sock = prov->sock(); if (sock < 0) { LOG_ERR(("getText : cannot connect to service provider [%s:%d]", __FILE__, __LINE__)); return false; } { CommRequestSoundRecogEncoder *enc = new CommRequestSoundRecogEncoder(rawSound); #if 1 // modified by sekikawa on 2010-08-26 // added error treatment in send() // note a comment of detectEntities() in this file int status = enc->send(sock); delete enc; if (status < 0) { prov->close(); return false; } #else // orig enc->send(sock); delete enc; #endif } Text *text = 0; CommDataDecoder d; typedef CTReader Reader; int retry = 10; Reader *r = new Reader(sock, d, 1024); while (true) { #if 1 // sekikawa(FIX20100906) Result *result = NULL; try { result = r->readSync(); } catch(CTReader::ConnectionClosedException &e) { break; } #else // orig Result *result = r->readSync(); #endif if (!result) { if (retry <= 0) { break; } else { LOG_DEBUG1(("retry")); retry--; #ifdef WIN32 Sleep(100000); #else usleep(100000); #endif continue; } } if (result->type() == COMM_RESULT_SOUND_RECOG) { ResultSoundRecogEvent *evt = (ResultSoundRecogEvent*)result->data(); text = evt->releaseText(); } delete result; break; } prov->close(); delete r; return text; }