// QueryExpression QueryExpression::QueryExpression(const std::string &query, XmlQueryContext &context, Transaction *txn, bool debug) : query_(query), context_(context), qec_(context_, /*debugging*/false), conf_(context, txn, &ci_), xqContext_(XQilla::createContext(XQilla::XQUERY_UPDATE, &conf_, Globals::defaultMemoryManager)), expr_(0) { ((Manager &)((QueryContext &)getContext()).getManager()) .log(Log::C_OPTIMIZER, Log::L_INFO, "Started parse"); HighResTimer t; t.start(); conf_.setMinder(&minder_); conf_.setQueryExecutionContext(&qec_); conf_.setProjectionInfo(&pi_); try { ((QueryContext&)context_).startQuery(); expr_ = XQilla::parse(UTF8ToXMLCh(getQuery()).str(), xqContext_, 0, XQilla::NO_STATIC_RESOLUTION | XQilla::NO_ADOPT_CONTEXT); ScopedPtr<Optimizer> optimizer(createOptimizer(xqContext_, minder_, debug)); optimizer->startOptimize(expr_); } catch(const QueryInterruptedException &) { delete expr_; throw XmlException(XmlException::OPERATION_INTERRUPTED, "Query was interrupted by the application"); } catch(const QueryTimeoutException &) { delete expr_; throw XmlException(XmlException::OPERATION_TIMEOUT, "Query timed out"); } catch(const XQException &e) { delete expr_; throw XmlException(XmlException::QUERY_PARSER_ERROR, e); } catch(...) { delete expr_; throw; } t.stop(); if(Log::isLogEnabled(Log::C_OPTIMIZER, Log::L_INFO)) { ostringstream s; s << "Finished parse, time taken = " << (t.durationInSeconds() * 1000) << "ms"; ((Manager &)((QueryContext &)getContext()).getManager()) .log(Log::C_OPTIMIZER, Log::L_INFO, s); } }
/** \brief this function implements the acquisition thread */ static void *acquisitionThreadFunc(void* val) { std::string basename=*(static_cast<std::string*>(val)); // write basename.txt file FILE* ftxt=fopen(std::string(basename+".txt").c_str(), "w"); if (ftxt) { fprintf(ftxt, "example_image_server.cpp demo acquisition"); fclose(ftxt); } // start basename.tif file for acquired frames uint16_t* frame=(uint16_t*)malloc(img_width*img_height*sizeof(uint16_t)); TinyTIFFFile* tif=TinyTIFFWriter_open(std::string(basename+".tif").c_str(), 16, img_width, img_height); maxWriteFrames=floor(acquisition_duration/exposure); framesCompleted=0; if (tif) { HighResTimer timer; timer.start(); double seconds=timer.get_time()/1e6; double lastt=seconds; // perform acquisition bool canceled=!cam_acquisition_running; while (seconds<acquisition_duration && !canceled) { seconds = timer.get_time()/1e6; if (fabs(seconds-lastt)>=exposure) { getNextFrame(framesCompleted, frame, img_width, img_height); TinyTIFFWriter_writeImage(tif, frame); pthread_mutex_lock(&mutexframesCompleted); // count acquired frames framesCompleted++; // cancel ancquisition, when cam_acquisition_running is reset if (!cam_acquisition_running) canceled=true; pthread_mutex_unlock(&mutexframesCompleted); lastt=seconds; printf("*** acquired frame %d/%d @ %fs ***", framesCompleted, maxWriteFrames, float(seconds)); } } TinyTIFFWriter_close(tif); } free(frame); pthread_mutex_lock(&mutexframesCompleted); cam_acquisition_running=false; pthread_mutex_unlock(&mutexframesCompleted); return NULL; }
void Server::beginServer () { if (_log) _log->write ("Server starting"); if (_daemon) { daemonize (); // Only the child returns. writePidFile (); } signal (SIGHUP, signal_handler); // Graceful stop signal (SIGUSR1, signal_handler); // Config reload signal (SIGUSR2, signal_handler); TLSServer server; if (_config) { server.debug (_config->getInteger ("debug.tls")); std::string ciphers = _config->get ("ciphers"); if (ciphers != "") { server.ciphers (ciphers); if (_log) _log->format ("Using ciphers: %s", ciphers.c_str ()); } std::string trust = _config->get ("trust"); if (trust == "allow all") server.trust (TLSServer::allow_all); else if (trust == "strict") server.trust (TLSServer::strict); else if (_log) _log->format ("Invalid 'trust' setting value of '%s'", trust.c_str ()); } server.init (_ca_file, // CA _crl_file, // CRL _cert_file, // Cert _key_file); // Key server.queue (_queue_size); server.bind (_host, _port, _family); server.listen (); if (_log) _log->write ("Server ready"); _request_count = 0; while (1) { try { TLSTransaction tx; tx.trust (server.trust ()); server.accept (tx); if (_sighup) throw "SIGHUP shutdown."; // Get client address and port, for logging. if (_log_clients) tx.getClient (_client_address, _client_port); // Metrics. HighResTimer timer; timer.start (); std::string input; tx.recv (input); // Handle the request. ++_request_count; // Call the derived class handler. std::string output; handler (input, output); if (output.length ()) tx.send (output); if (_log) { timer.stop (); _log->format ("[%d] Serviced in %.6fs", _request_count, timer.total ()); } } catch (std::string& e) { if (_log) _log->write (std::string ("Error: ") + e); } catch (char* e) { if (_log) _log->write (std::string ("Error: ") + e); } catch (...) { if (_log) _log->write ("Error: Unknown exception"); } } }
int main() { HighResTimer timer; DATATYPE period=151; long Nflush=0; long Nsim=100000; long N=Nsim+Nflush; DATATYPE A=1e-5; int S=10; int m=2; int P=16; MTRand rand1; MTRand rand_p0(12345); MTRand rand_p1(98765); int randprocess_period=N/100; for (int mode=0; mode<7; mode++) { DATATYPE* timetrace=new DATATYPE [N]; DATATYPE* timetrace2=new DATATYPE [N]; MultiTauCorrelator<DATATYPE, DATATYPE> corr(S,m,P,1); correlatorjb<DATATYPE, DATATYPE> corrjb(S, P); MultiTauCorrelator<DATATYPE, DATATYPE> ccorr(S,m,P,1); correlatorjb<DATATYPE, DATATYPE> ccorrjb(S, P); long* taus=(long*)malloc(S*P*sizeof(long)); statisticsAutocorrelateCreateMultiTau(taus, S, m, P); double* acf=(double*)malloc(S*P*sizeof(double)); double* ccf=(double*)malloc(S*P*sizeof(double)); if (mode==0) { printf("\n\n======================================================================================\nTEST 1: SINE/COSINE ==================================================================\n======================================================================================\n"); for (long i=0; i<N; i++) { DATATYPE t=(DATATYPE)i*M_PI/period; DATATYPE v=(1.0+sin(t))*A; DATATYPE v2=(1.0+cos(t))*A; if (i>=Nsim) v=v2=0; timetrace[i]=v; timetrace2[i]=v2; } } else if (mode>0 && mode<7) { int randprocess_period=pow(10,mode-1); printf("\n\n======================================================================================\nTEST 2: DECAYING CORRELATION ==================================================================\n======================================================================================\n"); DATATYPE p0=0; for (long i=0; i<N; i++) { DATATYPE t=(DATATYPE)i*M_PI/period; DATATYPE v=p0+2.0*rand1.rand()-1.0; DATATYPE v2=p0+2.0*rand1.rand()-1.0; if (i>=Nsim) v=v2=0; timetrace[i]=v; timetrace2[i]=v2; if (i%randprocess_period==0) { p0=rand_p0.randNorm(5, 2); } } } printf("\n\nSIMPLE: ==================================================================\n"); timer.start(); statisticsAutocorrelateMultiTauSymmetric(acf, timetrace, N, taus, S*P); printf(" ACF: %lf ms\n", timer.get_time()/1e3); FILE* pFile = fopen(format("%dacorr_simple.txt", mode).c_str(),"w"); if (pFile!=NULL) { for (unsigned int i=0; i<S*P; i++) { if (mode==0) { DATATYPE e=acf[i]-1.0-0.5*cos(taus[i]*M_PI/period); fprintf(pFile, "%lg, %lg, %lg, %lg\n", (double)taus[i], (double)acf[i], (double)e, (double)fabs(e)); } else { fprintf(pFile, "%lg, %lg\n", (double)taus[i], (double)acf[i]); } } fprintf(pFile, "\n\n"); fclose (pFile); } timer.start(); statisticsCrosscorrelateMultiTauSymmetric(ccf, timetrace2, timetrace, N, taus, S*P); printf(" CCF: %lf ms\n", timer.get_time()/1e3); pFile = fopen(format("%dccorr_simple.txt", mode).c_str(),"w"); if (pFile!=NULL) { for (unsigned int i=0; i<S*P; i++) { if (mode==0) { DATATYPE e=ccf[i]-1.0+0.5*sin(taus[i]*M_PI/period); fprintf(pFile, "%lg, %lg, %lg, %lg\n", (double)taus[i], (double)ccf[i], (double)e, (double)fabs(e)); } else { fprintf(pFile, "%lg, %lg\n", (double)taus[i], (double)ccf[i]); } } fprintf(pFile, "\n\n"); fclose (pFile); } printf("\n\nSIMPLE AVG: ==============================================================\n"); timer.start(); statisticsAutocorrelateMultiTauAvgSymmetric<DATATYPE, DATATYPE>(acf, timetrace, N, S, m, P); printf(" ACF: %lf ms\n", timer.get_time()/1e3); pFile = fopen(format("%dacorr_simpleavg.txt", mode).c_str(),"w"); if (pFile!=NULL) { for (unsigned int i=0; i<S*P; i++) { if (mode==0) { DATATYPE e=acf[i]-1.0-0.5*cos(taus[i]*M_PI/period); fprintf(pFile, "%lg, %lg, %lg, %lg\n", (double)taus[i], (double)acf[i], (double)e, (double)fabs(e)); } else { fprintf(pFile, "%lg, %lg\n", (double)taus[i], (double)acf[i]); } } fprintf(pFile, "\n\n"); fclose (pFile); } timer.start(); statisticsCrosscorrelateMultiTauAvgSymmetric<DATATYPE, DATATYPE>(ccf, timetrace2, timetrace, N, S, m, P); printf(" CCF: %lf ms\n", timer.get_time()/1e3); pFile = fopen(format("%dccorr_simpleavg.txt", mode).c_str(),"w"); if (pFile!=NULL) { for (unsigned int i=0; i<S*P; i++) { if (mode==0) { double e=ccf[i]-1.0+0.5*sin(taus[i]*M_PI/period); fprintf(pFile, "%lg, %lg, %lg, %lg\n", (double)taus[i], (double)ccf[i], (double)e, (double)fabs(e)); } else { fprintf(pFile, "%lg, %lg\n", (double)taus[i], (double)ccf[i]); } } fprintf(pFile, "\n\n"); fclose (pFile); } printf("\n\nJK: ======================================================================\n"); timer.start(); for (long i=0; i<N; i++) { const DATATYPE v=timetrace[i]; const DATATYPE v2=timetrace2[i]; corr.correlate_step(v); } corr.normalize(); double* tau=corr.getCorTau(); double* c=corr.getCor(); unsigned int cN=corr.getSlots(); printf(" ACF: %lf ms\n", timer.get_time()/1e3); pFile = fopen(format("%dacorr_jk.txt", mode).c_str(),"w"); if (pFile!=NULL) { for (unsigned int i=0; i<cN; i++) { if (mode==0) { double e=c[i]-1.0-0.5*cos(tau[i]*M_PI/period); fprintf(pFile, "%lg, %lg, %lg, %lg\n", (double)tau[i], (double)c[i], (double)e, (double)fabs(e)); } else { fprintf(pFile, "%lg, %lg\n", (double)tau[i], (double)c[i]); } } fprintf(pFile, "\n\n"); fclose (pFile); } timer.start(); for (long i=0; i<N; i++) { const DATATYPE v=timetrace[i]; const DATATYPE v2=timetrace2[i]; ccorr.crosscorrelate_step(v,v2); } ccorr.crossnormalize(); tau=ccorr.getCorTau(); c=ccorr.getCor(); cN=ccorr.getSlots(); printf(" CCF: %lf ms\n", timer.get_time()/1e3); pFile = fopen(format("%dccorr_jk.txt", mode).c_str(),"w"); if (pFile!=NULL) { for (unsigned int i=0; i<cN; i++) { if (mode==0) { double e=c[i]-1.0+0.5*sin(tau[i]*M_PI/period); fprintf(pFile, "%lg, %lg, %lg, %lg\n", (double)tau[i], (double)c[i], (double)e, (double)fabs(e)); } else { fprintf(pFile, "%lg, %lg\n", (double)tau[i], (double)c[i]); } } fprintf(pFile, "\n\n"); fclose (pFile); } printf("\n\nJB: ======================================================================\n"); timer.start(); for (long i=0; i<N; i++) { const DATATYPE v=timetrace[i]; const DATATYPE v2=timetrace2[i]; corrjb.run(v,v); } printf(" ACF: %lf ms\n", timer.get_time()/1e3); pFile = fopen(format("%dacorr_jb.txt", mode).c_str(),"w"); if (pFile!=NULL) { DATATYPE** corr1=corrjb.get_array_G(); for (int j=0; j<S*P; j++) { if (mode==0) { DATATYPE e=corr1[1][j]-1.0-0.5*cos(corr1[0][j]*M_PI/period); fprintf(pFile, "%lg, %lg, %lg, %lg\n", corr1[0][j], corr1[1][j], e, fabs(e)); } else { fprintf(pFile, "%lg, %lg\n", corr1[0][j], corr1[1][j]); } } fprintf(pFile, "\n\n"); free(corr1[0]); free(corr1[1]); fclose (pFile); } timer.start(); for (long i=0; i<N; i++) { const DATATYPE v=timetrace[i]; const DATATYPE v2=timetrace2[i]; ccorrjb.run(v2,v); } printf(" CCF: %lf ms\n", timer.get_time()/1e3); pFile = fopen(format("%dccorr_jb.txt", mode).c_str(),"w"); if (pFile!=NULL) { DATATYPE** corr1=ccorrjb.get_array_G(); for (int j=0; j<S*P; j++) { if (mode==0) { DATATYPE e=corr1[1][j]-1.0+0.5*sin(corr1[0][j]*M_PI/period); fprintf(pFile, "%lg, %lg, %lg, %lg\n", (double)corr1[0][j], (double)corr1[1][j], (double)e, (double)fabs(e)); } else { fprintf(pFile, "%lg, %lg\n", (double)corr1[0][j], (double)corr1[1][j]); } } fprintf(pFile, "\n\n"); free(corr1[0]); free(corr1[1]); fclose (pFile); } printf("\n\nWRITING GNUPLOT FILE: ====================================================\n"); pFile = fopen (format("%dcorr.plt", mode).c_str(),"w"); if (pFile!=NULL) { if (mode==0) { for (int i=0; i<2; i++) { if (i==0) { fprintf(pFile, "set terminal pdfcairo color solid font \"Arial,12\" linewidth 2 size 20cm,20cm\n"); fprintf(pFile, "set output \"%dcorr.pdf\"\n", mode); } else { fprintf(pFile, "set terminal wxt\n"); fprintf(pFile, "set output \n"); } fprintf(pFile, "set multiplot layout 3,1 title \"Autocorrelation\"\n"); fprintf(pFile, "set logscale x\n"); fprintf(pFile, "set samples 10000\n"); fprintf(pFile, "acf(x)=1.0+0.5*cos(x*pi/%lf)\n", period); fprintf(pFile, "plot acf(x) title 'theoretical' with lines ls 1, \\\n"); fprintf(pFile, " \"%dacorr_simple.txt\" title 'simple' with points ls 2, \\\n", mode); fprintf(pFile, " \"%dacorr_simpleavg.txt\" title 'simple, avg' with points ls 5, \\\n", mode); fprintf(pFile, " \"%dacorr_jk.txt\" title 'jk' with points ls 3, \\\n", mode); fprintf(pFile, " \"%dacorr_jb.txt\" title 'jb' with points ls 4\n", mode); fprintf(pFile, "plot \"%dacorr_simple.txt\" using 1:3 title 'simple' with points ls 2, \\\n", mode); fprintf(pFile, " \"%dacorr_simpleavg.txt\" using 1:3 title 'simple, avg' with points ls 5, \\\n", mode); fprintf(pFile, " \"%dacorr_jk.txt\" using 1:3 title 'jk' with points ls 3, \\\n", mode); fprintf(pFile, " \"%dacorr_jb.txt\" using 1:3 title 'jb' with points ls 4\n", mode); fprintf(pFile, "set logscale y\n"); fprintf(pFile, "plot \"%dacorr_simple.txt\" using 1:4 title 'simple' with points ls 2, \\\n", mode); fprintf(pFile, " \"%dacorr_simpleavg.txt\" using 1:4 title 'simple, avg' with points ls 5, \\\n", mode); fprintf(pFile, " \"%dacorr_jk.txt\" using 1:4 title 'jk' with points ls 3, \\\n", mode); fprintf(pFile, " \"%dacorr_jb.txt\" using 1:4 title 'jb' with points ls 4\n", mode); fprintf(pFile, "unset logscale y\n"); fprintf(pFile, "unset multiplot\n"); if (i==1) fprintf(pFile, "pause -1\n"); fprintf(pFile, "set multiplot layout 3,1 title \"Crosscorrelation\"\n"); fprintf(pFile, "set logscale x\n"); fprintf(pFile, "set samples 10000\n"); fprintf(pFile, "ccf(x)=1.0-0.5*sin(x*pi/%lf)\n", period); fprintf(pFile, "plot ccf(x) title 'theoretical' with lines ls 1, \\\n"); fprintf(pFile, " \"%dccorr_simple.txt\" title 'simple' with points ls 2, \\\n", mode); fprintf(pFile, " \"%dccorr_simpleavg.txt\" title 'simple, avg' with points ls 5, \\\n", mode); fprintf(pFile, " \"%dccorr_jk.txt\" title 'jk' with points ls 3, \\\n", mode); fprintf(pFile, " \"%dccorr_jb.txt\" title 'jb' with points ls 4\n", mode); fprintf(pFile, "plot \"%dccorr_simple.txt\" using 1:3 title 'simple' with points ls 2, \\\n", mode); fprintf(pFile, " \"%dccorr_simpleavg.txt\" using 1:3 title 'simple, avg' with points ls 5, \\\n", mode); fprintf(pFile, " \"%dccorr_jk.txt\" using 1:3 title 'jk' with points ls 3, \\\n", mode); fprintf(pFile, " \"%dccorr_jb.txt\" using 1:3 title 'jb' with points ls 4\n", mode); fprintf(pFile, "set logscale y\n"); fprintf(pFile, "plot \"%dccorr_simple.txt\" using 1:4 title 'simple' with points ls 2, \\\n", mode); fprintf(pFile, " \"%dccorr_simpleavg.txt\" using 1:4 title 'simple, avg' with points ls 5, \\\n", mode); fprintf(pFile, " \"%dccorr_jk.txt\" using 1:4 title 'jk' with points ls 3, \\\n", mode); fprintf(pFile, " \"%dccorr_jb.txt\" using 1:4 title 'jb' with points ls 4\n", mode); fprintf(pFile, "unset logscale y\n"); fprintf(pFile, "unset multiplot\n"); if (i==1) fprintf(pFile, "pause -1\n"); } fclose (pFile); } else { for (int i=0; i<2; i++) { if (i==0) { fprintf(pFile, "set terminal pdfcairo color solid font \"Arial,12\" linewidth 2 size 20cm,20cm\n"); fprintf(pFile, "set output \"%dcorr.pdf\"\n", mode); } else { fprintf(pFile, "set terminal wxt\n"); fprintf(pFile, "set output \n"); } fprintf(pFile, "set multiplot layout 1,1 title \"Autocorrelation\"\n"); fprintf(pFile, "set logscale x\n"); fprintf(pFile, "set samples 10000\n"); fprintf(pFile, "plot \"%dacorr_simple.txt\" title 'simple' with points ls 2, \\\n", mode); fprintf(pFile, " \"%dacorr_simpleavg.txt\" title 'simple, avg' with points ls 5, \\\n", mode); fprintf(pFile, " \"%dacorr_jk.txt\" title 'jk' with points ls 3, \\\n", mode); fprintf(pFile, " \"%dacorr_jb.txt\" title 'jb' with points ls 4\n", mode); fprintf(pFile, "unset multiplot\n"); if (i==1) fprintf(pFile, "pause -1\n"); fprintf(pFile, "set multiplot layout 1,1 title \"Crosscorrelation\"\n"); fprintf(pFile, "set logscale x\n"); fprintf(pFile, "set samples 10000\n"); fprintf(pFile, "plot \"%dccorr_simple.txt\" title 'simple' with points ls 2, \\\n", mode); fprintf(pFile, " \"%dccorr_simpleavg.txt\" title 'simple, avg' with points ls 5, \\\n", mode); fprintf(pFile, " \"%dccorr_jk.txt\" title 'jk' with points ls 3, \\\n", mode); fprintf(pFile, " \"%dccorr_jb.txt\" title 'jb' with points ls 4\n", mode); fprintf(pFile, "unset multiplot\n"); if (i==1) fprintf(pFile, "pause -1\n"); } fclose (pFile); } } std::string gnuplot="C:\\Programme\\gnuplot\\binary\\wgnuplot.exe"; if (gnuplot.size()>0) { std::string f=format("%dcorr.plt", mode); std::cout<<"running gnuplot on '"<<f<<"' ... "; system((gnuplot+" "+f).c_str()); std::cout<<"OK\n"; } delete[] timetrace; delete[] timetrace2; free(taus); free(acf); free(ccf); } return 0; }