/* * Setup a virtual coordinator. It's part of the running process (i.e., no * separate process is created). * * FIXME: This is the only place in this file where we use JSocket. May be get * rid of it here too? */ void setupVirtualCoordinator(CoordinatorInfo *coordInfo, struct in_addr *localIP) { string host = ""; int port; getCoordHostAndPort(COORD_NONE, host, &port); jalib::JSocket sock = jalib::JServerSocket(jalib::JSockAddr::ANY, port).sockfd(); JASSERT(sock.isValid()) (port) (JASSERT_ERRNO) .Text("Failed to create listen socket."); Util::changeFd(sock.sockfd(), PROTECTED_COORD_FD); JASSERT(Util::isValidFd(coordinatorSocket)); setCoordPort(sock.port()); pid_t ppid = getppid(); Util::setVirtualPidEnvVar(INITIAL_VIRTUAL_PID, ppid, ppid); UniquePid coordId = UniquePid(INITIAL_VIRTUAL_PID, UniquePid::ThisProcess().hostid(), UniquePid::ThisProcess().time()); coordInfo->id = coordId.upid(); coordInfo->timeStamp = coordId.time(); coordInfo->addrLen = 0; if (getenv(ENV_VAR_CKPT_INTR) != NULL) { coordInfo->interval = (uint32_t)strtol(getenv(ENV_VAR_CKPT_INTR), NULL, 0); } else { coordInfo->interval = 0; } memset(&coordInfo->addr, 0, sizeof(coordInfo->addr)); memset(localIP, 0, sizeof(*localIP)); }
bool UniquePid::operator== ( const UniquePid& that ) const { return _hostid==that.hostid() && _pid==that.pid() && _time==that.time(); }