RHO_GLOBAL jstring JNICALL Java_com_rhomobile_rhodes_RhodesService_getPushRegistrationId (JNIEnv * env, jobject) { return rho_cast<jhstring>(RHOCONF().getString("push_pin").c_str()).release(); }
void rho_conf_setString(const char* szName, const char* value){ RHOCONF().setString(szName,value ? value : "", true); }
bool CHttpServer::run() { LOG(INFO) + "Start HTTP server"; if (!init()) return false; m_active = true; RHODESAPP().notifyLocalServerStarted(); for(;;) { RAWTRACE("Waiting for connections..."); #ifndef RHO_NO_RUBY_API if (rho_ruby_is_started()) rho_ruby_start_threadidle(); #endif fd_set readfds; FD_ZERO(&readfds); FD_SET(m_listener, &readfds); timeval tv = {0,0}; unsigned long nTimeout = RHODESAPP().getTimer().getNextTimeout(); tv.tv_sec = nTimeout/1000; tv.tv_usec = (nTimeout - tv.tv_sec*1000)*1000; int ret = select(m_listener+1, &readfds, NULL, NULL, (tv.tv_sec == 0 && tv.tv_usec == 0 ? 0 : &tv) ); #ifndef RHO_NO_RUBY_API if (rho_ruby_is_started()) rho_ruby_stop_threadidle(); #endif bool bProcessed = false; if (ret > 0) { if (FD_ISSET(m_listener, &readfds)) { //RAWTRACE("Before accept..."); SOCKET conn = accept(m_listener, NULL, NULL); //RAWTRACE("After accept..."); if (!m_active) { RAWTRACE("Stop HTTP server"); return true; } if (conn == INVALID_SOCKET) { #if !defined(WINDOWS_PLATFORM) if (RHO_NET_ERROR_CODE == EINTR) continue; #endif RAWLOG_ERROR1("Can not accept connection: %d", RHO_NET_ERROR_CODE); return false; } RAWTRACE("Connection accepted, process it..."); VALUE val; #ifndef RHO_NO_RUBY_API if (rho_ruby_is_started()) { if ( !RHOCONF().getBool("enable_gc_while_request") ) val = rho_ruby_disable_gc(); } #endif m_sock = conn; bProcessed = process(m_sock); #ifndef RHO_NO_RUBY_API if (rho_ruby_is_started()) { if ( !RHOCONF().getBool("enable_gc_while_request") ) rho_ruby_enable_gc(val); } #endif RAWTRACE("Close connected socket"); closesocket(m_sock); m_sock = INVALID_SOCKET; } } else if ( ret == 0 ) //timeout { bProcessed = RHODESAPP().getTimer().checkTimers(); } else { RAWLOG_ERROR1("select error: %d", ret); return false; } #ifndef RHO_NO_RUBY_API if (rho_ruby_is_started()) { if ( bProcessed ) { LOG(INFO) + "GC Start."; rb_gc(); LOG(INFO) + "GC End."; } } #endif } }
int rho_conf_is_property_exists(const char* name) { return RHOCONF().isExist(name) ? 1 : 0; }
void rho_conf_remove_property(const char* name) { RHOCONF().removeProperty(name, true); }
char* rho_conf_getString(const char* szName) { return strdup(RHOCONF().getString(szName).c_str()); }
void rho_conf_setInt(const char* szName, int value) { RHOCONF().setInt(szName,value,true); }
int rho_conf_getInt(const char* szName) { return RHOCONF().getInt(szName); }
void rho_conf_setBool(const char* szName, bool value) { RHOCONF().setBool(szName,value,true); }
int rho_conf_getBool(const char* szName) { return RHOCONF().getBool(szName) ? 1 : 0; }