void StartScene::switchToServer(Server *server) { #ifdef AUDIO_SUPPORT Audio::quit(); #endif // performs leaving animation QPropertyAnimation *logo_shift = new QPropertyAnimation(logo, "pos"); logo_shift->setEndValue(QPointF(Config.Rect.center().rx() - 200, Config.Rect.center().ry() - 175)); QPropertyAnimation *logo_shrink = new QPropertyAnimation(logo, "scale"); logo_shrink->setEndValue(0.5); QParallelAnimationGroup *group = new QParallelAnimationGroup(this); group->addAnimation(logo_shift); group->addAnimation(logo_shrink); group->start(QAbstractAnimation::DeleteWhenStopped); foreach (Button *button, buttons) delete button; buttons.clear(); server_log = new QTextEdit(); server_log->setReadOnly(true); server_log->resize(700, 420); server_log->move(-400, -180); server_log->setFrameShape(QFrame::NoFrame); #ifdef Q_OS_LINUX server_log->setFont(QFont("DroidSansFallback", 12)); #else server_log->setFont(QFont("Verdana", 12)); #endif server_log->setTextColor(Config.TextEditColor); setServerLogBackground(); addWidget(server_log); QScrollBar *bar = server_log->verticalScrollBar(); QFile file("qss/scroll.qss"); if (file.open(QIODevice::ReadOnly)) { QTextStream stream(&file); bar->setStyleSheet(stream.readAll()); } printServerInfo(); connect(server, SIGNAL(server_message(QString)), server_log, SLOT(append(QString))); update(); }
void StartScene::switchToServer(Server *server){ #ifdef AUDIO_SUPPORT if(SoundEngine) { #ifdef Q_OS_WIN32 SoundEngine->drop(); SoundEngine = NULL; #else delete SoundEngine; #endif } #endif // performs leaving animation QPropertyAnimation *logo_shift = new QPropertyAnimation(logo, "pos"); logo_shift->setEndValue(Config.Rect.topLeft()); QPropertyAnimation *logo_shrink = new QPropertyAnimation(logo, "scale"); logo_shrink->setEndValue(0.5); QParallelAnimationGroup *group = new QParallelAnimationGroup(this); group->addAnimation(logo_shift); group->addAnimation(logo_shrink); group->start(QAbstractAnimation::DeleteWhenStopped); foreach(Button *button, buttons) delete button; buttons.clear(); server_log = new QTextEdit(); server_log->setReadOnly(true); server_log->resize(700, 420); server_log->move(-400, -180); server_log->setFrameShape(QFrame::NoFrame); server_log->setFont(QFont("Verdana", 12)); server_log->setTextColor(Config.TextEditColor); setServerLogBackground(); addWidget(server_log); printServerInfo(); connect(server, SIGNAL(server_message(QString)), server_log, SLOT(append(QString))); update(); }
void StartScene::switchToServer(Server *server) { // performs leaving animation QPropertyAnimation *logo_shift = new QPropertyAnimation(logo, "pos", this); QPropertyAnimation *logo_shrink = new QPropertyAnimation(logo, "scale", this); logo_shrink->setEndValue(0.5); QParallelAnimationGroup *group = new QParallelAnimationGroup(this); group->addAnimation(logo_shift); group->addAnimation(logo_shrink); group->start(QAbstractAnimation::DeleteWhenStopped); foreach (Button *button, buttons) delete button; buttons.clear(); server_log = new QTextEdit(); server_log->setReadOnly(true); server_log->resize(700, 420); QRectF startSceneRect = sceneRect(); server_log->move(startSceneRect.width() / 2 - server_log->width() / 2, startSceneRect.height() / 2 - server_log->height() / 2 + logo->boundingRect().height() / 4); server_log->setFrameShape(QFrame::NoFrame); server_log->setFont(QFont("Verdana", 12)); server_log->setTextColor(Config.TextEditColor); setServerLogBackground(); QGraphicsProxyWidget *widget = addWidget(server_log); widget->setParent(this); QScrollBar *logBoxVScrollBar = server_log->verticalScrollBar(); if (NULL != logBoxVScrollBar) { logBoxVScrollBar->setObjectName("sgsVSB"); logBoxVScrollBar->setStyleSheet(Settings::getQSSFileContent()); } printServerInfo(); connect(server, SIGNAL(server_message(QString)), server_log, SLOT(append(QString))); update(); }
/*! * \brief Update remote machines addresses in my server list * * Send back my addresses to caller of this RPC * \return zero on success, else 1. */ afs_int32 SDISK_UpdateInterfaceAddr(struct rx_call *rxcall, UbikInterfaceAddr *inAddr, UbikInterfaceAddr *outAddr) { struct ubik_server *ts, *tmp; afs_uint32 remoteAddr; /* in net byte order */ int i, j, found = 0, probableMatch = 0; char hoststr[16]; UBIK_ADDR_LOCK; /* copy the output parameters */ for (i = 0; i < UBIK_MAX_INTERFACE_ADDR; i++) outAddr->hostAddr[i] = ntohl(ubik_host[i]); remoteAddr = htonl(inAddr->hostAddr[0]); for (ts = ubik_servers; ts; ts = ts->next) if (ts->addr[0] == remoteAddr) { /* both in net byte order */ probableMatch = 1; break; } if (probableMatch) { /* verify that all addresses in the incoming RPC are ** not part of other server entries in my CellServDB */ for (i = 0; !found && (i < UBIK_MAX_INTERFACE_ADDR) && inAddr->hostAddr[i]; i++) { remoteAddr = htonl(inAddr->hostAddr[i]); for (tmp = ubik_servers; (!found && tmp); tmp = tmp->next) { if (ts == tmp) /* this is my server */ continue; for (j = 0; (j < UBIK_MAX_INTERFACE_ADDR) && tmp->addr[j]; j++) if (remoteAddr == tmp->addr[j]) { found = 1; break; } } } } /* if (probableMatch) */ /* inconsistent addresses in CellServDB */ if (!probableMatch || found) { ubik_print("Inconsistent Cell Info from server: "); for (i = 0; i < UBIK_MAX_INTERFACE_ADDR && inAddr->hostAddr[i]; i++) ubik_print("%s ", afs_inet_ntoa_r(htonl(inAddr->hostAddr[i]), hoststr)); ubik_print("\n"); fflush(stdout); fflush(stderr); printServerInfo(); UBIK_ADDR_UNLOCK; return UBADHOST; } /* update our data structures */ for (i = 1; i < UBIK_MAX_INTERFACE_ADDR; i++) ts->addr[i] = htonl(inAddr->hostAddr[i]); ubik_print("ubik: A Remote Server has addresses: "); for (i = 0; i < UBIK_MAX_INTERFACE_ADDR && ts->addr[i]; i++) ubik_print("%s ", afs_inet_ntoa_r(ts->addr[i], hoststr)); ubik_print("\n"); UBIK_ADDR_UNLOCK; return 0; }
/*! * \brief Update remote machines addresses in my server list * * Send back my addresses to caller of this RPC * \return zero on success, else 1. */ afs_int32 SDISK_UpdateInterfaceAddr(struct rx_call *rxcall, UbikInterfaceAddr *inAddr, UbikInterfaceAddr *outAddr) { struct ubik_server *ts, *tmp; afs_uint32 remoteAddr; /* in net byte order */ int i, j, found = 0, probableMatch = 0; char hoststr[16]; /* copy the output parameters */ for (i = 0; i < UBIK_MAX_INTERFACE_ADDR; i++) outAddr->hostAddr[i] = ntohl(ubik_host[i]); remoteAddr = htonl(inAddr->hostAddr[0]); for (ts = ubik_servers; ts; ts = ts->next) if (ts->addr[0] == remoteAddr) { /* both in net byte order */ probableMatch = 1; break; } if (probableMatch) { /* verify that all addresses in the incoming RPC are ** not part of other server entries in my CellServDB */ for (i = 0; !found && (i < UBIK_MAX_INTERFACE_ADDR) && inAddr->hostAddr[i]; i++) { remoteAddr = htonl(inAddr->hostAddr[i]); for (tmp = ubik_servers; (!found && tmp); tmp = tmp->next) { if (ts == tmp) /* this is my server */ continue; for (j = 0; (j < UBIK_MAX_INTERFACE_ADDR) && tmp->addr[j]; j++) if (remoteAddr == tmp->addr[j]) { found = 1; break; } } } } /* if (probableMatch) */ /* inconsistent addresses in CellServDB */ if (!probableMatch || found) { ubik_print("Inconsistent Cell Info from server:\n"); for (i = 0; i < UBIK_MAX_INTERFACE_ADDR && inAddr->hostAddr[i]; i++) ubik_print("... %s\n", afs_inet_ntoa_r(htonl(inAddr->hostAddr[i]), hoststr)); fflush(stdout); fflush(stderr); printServerInfo(); return UBADHOST; } /* update our data structures */ for (i = 1; i < UBIK_MAX_INTERFACE_ADDR; i++) ts->addr[i] = htonl(inAddr->hostAddr[i]); ubik_print("ubik: A Remote Server has addresses:\n"); for (i = 0; i < UBIK_MAX_INTERFACE_ADDR && ts->addr[i]; i++) ubik_print("... %s\n", afs_inet_ntoa_r(ts->addr[i], hoststr)); /* * The most likely cause of a DISK_UpdateInterfaceAddr RPC * is because the server was restarted. Reset its state * so that no DISK_Begin RPCs will be issued until the * known database version is current. */ ts->beaconSinceDown = 0; for (i=0; i<MAX_UBIK_DBASES; i++) ts->currentDB[i] = 0; urecovery_LostServer(); return 0; }