void Tresenv::doStatusUpdate(Speedometer& speedometer) { speedometer.beginNewInterval(); if (opt_perfdisplay) { ::fprintf(fout, "** Event #%" LL "d T=%s Elapsed: %s%s\n", simulation.getEventNumber(), SIMTIME_STR(simulation.getSimTime()), timeToStr(totalElapsed()), progressPercentage()); // note: IDE launcher uses this to track progress ::fprintf(fout, " Speed: ev/sec=%g simsec/sec=%g ev/simsec=%g\n", speedometer.getEventsPerSec(), speedometer.getSimSecPerSec(), speedometer.getEventsPerSimSec()); ::fprintf(fout, " Messages: created: %ld present: %ld in FES: %d\n", cMessage::getTotalMessageCount(), cMessage::getLiveMessageCount(), simulation.msgQueue.getLength()); } else { ::fprintf(fout, "** Event #%" LL "d T=%s Elapsed: %s%s ev/sec=%g\n", simulation.getEventNumber(), SIMTIME_STR(simulation.getSimTime()), timeToStr(totalElapsed()), progressPercentage(), // note: IDE launcher uses this to track progress speedometer.getEventsPerSec()); } // status update is always autoflushed (not only if opt_autoflush is on) ::fflush(fout); }
void MailRecv::processReadMail(Net::MessageIn &msg) { const int sz = msg.readInt16("len") - 101; MailMessage *const mail = new MailMessage; mail->id = msg.readInt32("message id"); mail->title = msg.readString(40, "title"); mail->sender = msg.readString(24, "sender name"); msg.readInt32("unused"); mail->money = msg.readInt32("money"); mail->itemAmount = msg.readInt32("item amount"); mail->itemId = msg.readInt16("item id"); mail->itemType = msg.readInt16("item type"); mail->itemIdentify = msg.readUInt8("identify"); mail->itemAttribute = msg.readUInt8("attribute"); mail->itemRefine = msg.readUInt8("refine"); for (int f = 0; f < maxCards; f ++) mail->card[f] = msg.readUInt16("card"); const int msgLen = msg.readUInt8("msg len"); if (msgLen != sz) logger->log("error: wrong message size"); mail->text = msg.readString(sz, "message"); msg.readUInt8("zero"); mail->strTime = timeToStr(mail->time); mailWindow->showMessage(mail); }
void MailRecv::processMailList(Net::MessageIn &msg) { const int count = (msg.readInt16("len") - 8) / 73; const int amount = msg.readInt32("amount"); if (count != amount) logger->log("error: wrong mails count"); mailWindow->clear(); for (int f = 0; f < count; f ++) { MailMessage *const mail = new MailMessage; mail->id = msg.readInt32("message id"); mail->title = msg.readString(40, "title"); mail->unread = msg.readUInt8("unread flag") ? true : false; mail->sender = msg.readString(24, "sender name"); mail->time = msg.readInt32("time stamp"); mail->strTime = timeToStr(mail->time); mailWindow->addMail(mail); } }
void Tresenv::printEventBanner(cSimpleModule *mod) { ::fprintf(fout, "** Event #%" LL "d T=%s%s %s (%s, id=%d)\n", simulation.getEventNumber(), SIMTIME_STR(simulation.getSimTime()), progressPercentage(), // note: IDE launcher uses this to track progress mod->getFullPath().c_str(), mod->getComponentType()->getName(), mod->getId() ); if (opt_eventbanner_details) { ::fprintf(fout, " Elapsed: %s Messages: created: %ld present: %ld in FES: %d\n", timeToStr(totalElapsed()), cMessage::getTotalMessageCount(), cMessage::getLiveMessageCount(), simulation.msgQueue.getLength()); } }