//static kconn_t *MYSQL_qopen(CTX ctx, kbytes_t url) kconn_t *MYSQL_qopen(CTX ctx, kbytes_t url) { char *puser, user[MYSQL_USER_MAXLEN+1] = {0}; char *ppass, pass[MYSQL_PASS_MAXLEN+1] = {0}; // temporary defined char *phost, host[MYSQL_HOST_MAXLEN+1] = {0}; unsigned int port = 0; char *pdbnm, dbnm[MYSQL_DBNM_MAXLEN+1] = {0}; kbytes_t bt = knh_bytes_last(url, 8); // skip: mysql:// const char *btstr = bt.text; sscanf(btstr, "%16[^ :\r\n\t]:%255[^ @\r\n\t]@%255[^ :\r\n\t]:%5d/%64[^ \r\n\t]", (char*)&user, (char*)&pass, (char*)&host, &port, (char*)&dbnm); // consider to buffer over run puser = (user[0]) ? user : NULL; ppass = (pass[0]) ? pass : NULL; phost = (host[0]) ? host : NULL; pdbnm = (dbnm[0]) ? dbnm : NULL; MYSQL *db = mysql_init(NULL); KNH_NTRACE2(ctx, "mysql_init", (db != NULL) ? K_OK : K_FAILED, KNH_LDATA(LOG_s("init", mysql_error(db)))); db = mysql_real_connect(db, phost, puser, ppass, pdbnm, port, NULL, 0); KNH_NTRACE2(ctx, "mysql_real_connect", (db != NULL) ? K_OK : K_FAILED, KNH_LDATA(LOG_s("host", phost), LOG_s("user", puser), /* LOG_s("passwd", ppass), */ LOG_s("dbname", pdbnm), LOG_i("port", port), LOG_i("errno", mysql_errno(db)), LOG_s("error", mysql_error(db)))); //if (!mysql_real_connect(db, phost, puser, ppass, pdbnm, port, NULL, 0)) { // knh_mysql_perror(ctx, db, 0); // mysql_close(db); // db = NULL; //} return (kconn_t*)db; }
//static kqcur_t *MYSQL_query(CTX ctx, kconn_t *hdr, kbytes_t sql, kResultSet *rs) kqcur_t *MYSQL_query(CTX ctx, kconn_t *hdr, kbytes_t sql, kResultSet *rs) { MYSQL_RES *res = NULL; MYSQL *db = (MYSQL*)hdr; if (db == NULL) { /* return NULL */ } else if (rs == NULL) { /* Connection.exec */ int r = mysql_query(db, sql.text); KNH_NTRACE2(ctx, "mysql_query", (r == 0) ? K_OK : K_FAILED, KNH_LDATA(LOG_s("query", sql.text), LOG_i("errno", mysql_errno(db)))); //if(r > 0) { // knh_mysql_perror(ctx, (MYSQL*)db, r); //} } else { /* Connection.query */ int r = mysql_query((MYSQL*)db, sql.text); KNH_NTRACE2(ctx, "mysql_query", (r == 0) ? K_OK : K_FAILED, KNH_LDATA( LOG_s("query", sql.text), LOG_i("errno", mysql_errno(db)), LOG_s("error", mysql_error(db)) )); if (r == 0) { res = mysql_store_result((MYSQL*)db); if (res == NULL) { // NULL RESULT if (mysql_errno(db) != 0) { mysql_free_result(res); KNH_NTRACE2(ctx, "mysql_store_result", K_FAILED, KNH_LDATA(LOG_i("errno", mysql_errno(db)), LOG_s("error", mysql_error(db)))); } else { KNH_NTRACE2(ctx, "mysql_store_result", K_OK, KNH_LDATA(LOG_i("errno", mysql_errno(db)), LOG_s("error", mysql_error(db)))); } } else { knh_ResultSet_initColumn(ctx, rs, (size_t)mysql_num_fields(res)); KNH_NTRACE2(ctx, "mysql_store_result", K_OK, KNH_LDATA(LOG_i("errno", mysql_errno(db)), LOG_s("error", mysql_error(db)))); int i = 0; MYSQL_FIELD *field = NULL; while((field = mysql_fetch_field(res))) { DP(rs)->column[i].dbtype = field->type; kString *s = new_String(ctx, field->name); ResultSet_setName(ctx, rs, i, s); i++; } } } } return (kqcur_t *) res; }
static void trapSIGINT(int sig RECARG) { CTX ctx = knh_getCurrentContext(); // record_signal(ctx, sig RECDATA); if(ctx != NULL) { //#if defined(K_USING_MINGW_) // knh_ldata_t ldata[] = {LOG_END}; //#else // knh_ldata_t ldata[] = {LOG_i("sender_pid", si->si_pid), LOG_i("sender_uid", si->si_uid), LOG_END}; //#endif /* defined(K_USING_MINGW_) */ // KNH_NTRACE(ctx, "konoha:signal", K_NOTICE, ldata); KNH_NTRACE2(ctx, "konoha:signal", K_NOTICE, #if defined(K_USING_MINGW_) KNH_LDATA0 #else KNH_LDATA(LOG_i("sender_pid", si->si_pid), LOG_i("sender_uid", si->si_uid)) #endif ); } _Exit(0); }
kfileid_t knh_getURI(CTX, kbytes_t t) { OLD_LOCK(_ctx, LOCK_SYSTBL, NULL); kindex_t idx = knh_DictSet_index(_ctx->share->urnDictSet, t); if(idx == -1) { kString *s = new_kString(t.text, t.len, SPOL_POOL); idx = kArray_size(_ctx->share->urns); knh_DictSet_set(_ctx, ctx->share->urnDictSet, s, idx); kArray_add(ctx->share->urns, s); KNH_NTRACE2(_ctx, "konoha:newfileid", K_OK, KNH_LDATA(LOG_s("urn", S_text(s)), LOG_i("fileid", idx))); } else { idx = knh_DictSet_valueAt(_ctx->share->urnDictSet, idx); } OLD_UNLOCK(_ctx, LOCK_SYSTBL, NULL); return (kfileid_t)idx; }
kuri_t knh_getURI(CTX ctx, kbytes_t t) { OLD_LOCK(ctx, LOCK_SYSTBL, NULL); kindex_t idx = knh_DictSet_index(ctx->share->urnDictSet, t); if(idx == -1) { kString *s = new_String2(ctx, CLASS_String, t.text, t.len, SPOL_POOLALWAYS); idx = knh_Array_size(ctx->share->urns); knh_DictSet_set(ctx, ctx->share->urnDictSet, s, idx); knh_Array_add(ctx, ctx->share->urns, s); KNH_NTRACE2(ctx, "konoha:newuri", K_OK, KNH_LDATA(LOG_s("urn", S_totext(s)), LOG_i("uri", idx))); } else { idx = knh_DictSet_valueAt(ctx->share->urnDictSet, idx); } OLD_UNLOCK(ctx, LOCK_SYSTBL, NULL); return (kuri_t)idx; }
static int open_socket(CTX ctx, ksfp_t *sfp, const char *ip_or_host, int port) { int sd = IO_NULL; struct in_addr addr = {0}; struct sockaddr_in server = {0}; const char *errfunc = NULL; if ((addr.s_addr = inet_addr(ip_or_host)) == -1) { struct hostent *host = gethostbyname(ip_or_host); if (host == NULL) { errfunc = "gethostname"; goto L_PERROR; } memcpy(&addr, (struct in_addr *)*host->h_addr_list, sizeof(struct in_addr)); } server.sin_family = AF_INET; server.sin_addr = addr; server.sin_port = htons(port); if ((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { errfunc = "socket"; goto L_PERROR; } if (connect(sd, (struct sockaddr *)&server, sizeof(server)) == -1) { errfunc = "connect"; close(sd); goto L_PERROR; } L_PERROR:; if (errfunc != NULL) { KNH_NTHROW2(ctx, sfp, "Socket!!", errfunc, K_PERROR, KNH_LDATA(LOG_s("host", ip_or_host), LOG_i("port", port), LOG_sfp)); sd = IO_NULL; } else { KNH_NTRACE2(ctx, "connect", K_OK, KNH_LDATA(LOG_s("host", ip_or_host), LOG_i("port", port), LOG_sfp)); } return (int) sd; }
int main(int argc, const char *argv[]) { MPI_Init(&argc, (char***)&argv); konoha_ginit(argc, argv); konoha_t konoha = konoha_open(); int _world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &_world_rank); #ifdef KNH_MPI_PROFILE double _begin = MPI_Wtime(); #endif konoha_main(konoha, argc, argv); #ifdef KNH_MPI_PROFILE double _finish = MPI_Wtime(); double _duration = _finish - _begin; { CTX ctx = (CTX)konoha; KNH_NTRACE2(ctx, "konoha_main(MPI)", K_NOTICE, KNH_LDATA(LOG_f("begin", _begin), LOG_f("finish", _finish), LOG_f("duration", _duration), LOG_i("myrank", _world_rank))); } #endif konoha_close(konoha); MPI_Finalize(); return 0; }
void THROW_ParamTypeError(CTX ctx, ksfp_t *sfp, size_t n, kmethodn_t mn, kclass_t reqt, kclass_t cid) { CWB_t cwbbuf, *cwb = CWB_open(ctx, &cwbbuf); char msg[256], mname[256]; knh_printf(ctx, cwb->w, "Script!!: Type Error: %T.%M(#%d)", cid, mn, (int)n); knh_snprintf(msg, sizeof(msg), "%s", CWB_totext(ctx, cwb)); CWB_close(ctx, cwb); knh_printf(ctx, cwb->w, "%C.%M", cid, mn); knh_snprintf(mname, sizeof(mname), "%s", CWB_totext(ctx, cwb)); CWB_close(ctx, cwb); KNH_NTHROW2(ctx, sfp, msg, "konoha:type", K_FAILED, KNH_LDATA(LOG_msg(msg), LOG_s("method", mname), LOG_i("argument", n), LOG_t("requested_type", reqt), LOG_t("given_type", cid))); }
KNHAPI2(void) THROW_OutOfRange(CTX ctx, ksfp_t *sfp, kint_t n, size_t max) { KNH_NTHROW2(ctx, sfp, "Script!!", "array_indexing", K_FAILED, KNH_LDATA(LOG_msg("out of array range"), LOG_i("index", n), LOG_i("arraysize", max))); }