static void dopoll(void) { int i; t_fdpoll *fp; fd_set readset, writeset, exceptset; FD_ZERO(&writeset); FD_ZERO(&readset); FD_ZERO(&exceptset); FD_SET(sockfd, &readset); if (protocol == SOCK_STREAM) { for (fp = fdpoll, i = nfdpoll; i--; fp++) FD_SET(fp->fdp_fd, &readset); } if (select(maxfd+1, &readset, &writeset, &exceptset, 0) < 0) { perror("select"); exit(1); } if (protocol == SOCK_STREAM) { for (i = 0; i < nfdpoll; i++) if (FD_ISSET(fdpoll[i].fdp_fd, &readset)) tcpread(&fdpoll[i]); if (FD_ISSET(sockfd, &readset)) doconnect(); } else { if (FD_ISSET(sockfd, &readset)) udpread(); } }
bool MonitorItem::docmd(const char* command) { if (!doconnect()) { return false; } if (command[0] != 0) { writecmd(command); } emit clearText(get_name()); bool jobRunning = false; while (1) { int stat; if ((stat = bnet_recv(d->DSock)) >= 0) { strip_trailing_newline(d->DSock->msg); QString msg = QString::fromUtf8(d->DSock->msg); emit appendText(QString::fromUtf8(get_name()), msg); if (d->type == R_CLIENT) { if (msg.contains("Job started:")) jobRunning = true; } } else if (stat == BNET_SIGNAL) { if (d->DSock->msglen == BNET_EOD) { // qDebug() << "<< EOD >>"; if (d->type == R_CLIENT) emit jobIsRunning (jobRunning); return true; } else if (d->DSock->msglen == BNET_SUB_PROMPT) { // qDebug() << "<< PROMPT >>"; return false; } else if (d->DSock->msglen == BNET_HEARTBEAT) { bnet_sig(d->DSock, BNET_HB_RESPONSE); } else { qDebug() << bnet_sig_to_ascii(d->DSock); } } else { /* BNET_HARDEOF || BNET_ERROR */ d->DSock = NULL; d->state = MonitorItem::Error; emit statusChanged(get_name(), d->state); emit showStatusbarMessage("Error : BNET_HARDEOF or BNET_ERROR"); //fprintf(stderr, "<< ERROR >>\n")); return false; } /* if ((stat = bnet_recv(d->DSock)) >= 0) */ if (is_bnet_stop(d->DSock)) { d->DSock = NULL; d->state = MonitorItem::Error; emit statusChanged(get_name(), d->state); emit showStatusbarMessage("Error : Connection closed."); //fprintf(stderr, "<< STOP >>\n"); return false; /* error or term */ } /* if (is_bnet_stop(d->DSock) */ } /* while (1) */ }
static int doall() { int ret = 0; do { CHK2(doconnect() == 0, "connect to NDB"); int loop = 0; while (++loop <= _loops) { g_info << "loop " << loop << " of " << _loops << endl; if (!_sys_any) { if (loop == 1) { CHK1(checkobjs() == 0); } CHK2(dostats() == 0, "at loop " << loop); } else { CHK2(dosys() == 0, "at loop " << loop); } } CHK1(ret == 0); } while (0); dodisconnect(); return ret; }
void MonitorItem::get_list(const char *cmd, QStringList &lst) { doconnect(); writecmd(cmd); while (bnet_recv(d->DSock) >= 0) { strip_trailing_newline(d->DSock->msg); if (*(d->DSock->msg)) { lst << QString(d->DSock->msg); } } }
void get_list(monitoritem *item, const char *cmd, QStringList &lst) { int stat; doconnect(item); item->writecmd(cmd); while((stat = item->D_sock->recv()) >= 0) { strip_trailing_junk(item->D_sock->msg); if (*(item->D_sock->msg)) { lst << QString(item->D_sock->msg); } } }
int main(void) { go(daemon()); msleep(now() + 500); tcpmuxsock ls = tcpmuxlisten(5557, "foo", -1); assert(ls); go(doconnect()); tcpsock s = tcpmuxaccept(ls, -1); assert(s); char buf[3]; tcprecv(s, buf, sizeof(buf), -1); assert(errno == 0); assert(buf[0] == 'a' && buf[1] == 'b' && buf[2] == 'c'); tcpclose(s); tcpmuxclose(ls); return 0; }
static int doall() { int ret = 0; do { if (opt_dump_file) { g_dump_file = fopen(opt_dump_file, "w"); CHK2(g_dump_file != 0, opt_dump_file << ": " << strerror(errno)); g_dump_out = new FileOutputStream(g_dump_file); new (&g_dump) NdbOut(*g_dump_out); const char* action = 0; if (opt_check_orphans) action = "check"; if (opt_delete_orphans) action = "delete"; g_dump << "table: " << g_tabname << endl; g_dump << "action: " << action << endl; } CHK1(doconnect() == 0); CHK1(getobjs() == 0); if (g_blobcount == 0) { g_err << g_tabname << ": no blob columns" << endl; break; } CHK1(doorphans() == 0); } while (0); dodisconnect(); if (g_dump_file != 0) { g_dump << "result: "<< (ret == 0 ? "ok" : "failed") << endl; flush(g_dump); if (fclose(g_dump_file) != 0) { g_err << opt_dump_file << ": write failed: " << strerror(errno) << endl; } g_dump_file = 0; } return ret; }
void sfsserv::sfs_connect (svccb *sbp) { if (cd || authid_valid) { sbp->reject (PROC_UNAVAIL); return; } cd.alloc (); cd->ci = *sbp->Xtmpl getarg <sfs_connectarg> (); cd->cr.set_status (SFS_OK); cd->cr.reply->charge.bitcost = sfs_hashcost; rnd.getbytes (cd->cr.reply->charge.target.base (), charge.target.size ()); privkey = doconnect (&cd->ci, &cd->cr.reply->servinfo); si = sfs_servinfo_w::alloc (cd->cr.reply->servinfo); if (!privkey && !cd->cr.status) cd->cr.set_status (SFS_NOSUCHHOST); sbp->reply (&cd->cr); }
int alwaysauth(struct clientparam * param){ int res; struct trafcount * tc; int countout = 0; res = doconnect(param); if(!res){ if(param->srv->version != conf.paused) return 333; initbandlims(param); for(tc = conf.trafcounter; tc; tc = tc->next) { if(tc->disabled) continue; if(ACLmatches(tc->ace, param)){ if(tc->ace->action == NOCOUNTIN) break; if(tc->ace->action != COUNTIN) { countout = 1; continue; } if(tc->traflim64 <= tc->traf64) return 10; param->trafcountfunc = conf.trafcountfunc; param->maxtrafin64 = tc->traflim64 - tc->traf64; } } if(countout)for(tc = conf.trafcounter; tc; tc = tc->next) { if(tc->disabled) continue; if(ACLmatches(tc->ace, param)){ if(tc->ace->action == NOCOUNTOUT) break; if(tc->ace->action != COUNTOUT) { continue; } if(tc->traflim64 <= tc->traf64) return 10; param->trafcountfunc = conf.trafcountfunc; param->maxtrafout64 = tc->traflim64 - tc->traf64; } } } return res; }
bool MonitorItem::get_job_defaults(struct JobDefaults &job_defs) { int stat; char *def; BSOCK *dircomm; bool rtn = false; QString scmd = QString(".defaults job=\"%1\"").arg(job_defs.job_name); if (job_defs.job_name == "") { return rtn; } if (!doconnect()) { return rtn; } dircomm = d->DSock; dircomm->fsend("%s", scmd.toUtf8().data()); while ((stat = dircomm->recv()) > 0) { def = strchr(dircomm->msg, '='); if (!def) { continue; } /* Pointer to default value */ *def++ = 0; strip_trailing_newline(def); if (strcmp(dircomm->msg, "job") == 0) { if (strcmp(def, job_defs.job_name.toUtf8().data()) != 0) { goto bail_out; } continue; } if (strcmp(dircomm->msg, "pool") == 0) { job_defs.pool_name = def; continue; } if (strcmp(dircomm->msg, "messages") == 0) { job_defs.messages_name = def; continue; } if (strcmp(dircomm->msg, "client") == 0) { job_defs.client_name = def; continue; } if (strcmp(dircomm->msg, "storage") == 0) { job_defs.store_name = def; continue; } if (strcmp(dircomm->msg, "where") == 0) { job_defs.where = def; continue; } if (strcmp(dircomm->msg, "level") == 0) { job_defs.level = def; continue; } if (strcmp(dircomm->msg, "type") == 0) { job_defs.type = def; continue; } if (strcmp(dircomm->msg, "fileset") == 0) { job_defs.fileset_name = def; continue; } if (strcmp(dircomm->msg, "catalog") == 0) { job_defs.catalog_name = def; continue; } if (strcmp(dircomm->msg, "enabled") == 0) { job_defs.enabled = *def == '1' ? true : false; continue; } } rtn = true; /* Fall through wanted */ bail_out: return rtn; }