bool AbstractBluetoothStarter::initializeStartupResources(QString *errorMessage) { // Create the listener and forward messages to it. BluetoothListener *listener = createListener(); connect(this, SIGNAL(message(QString)), listener, SLOT(emitMessage(QString))); return listener->start(device(), errorMessage); }
void OscScene::handleMessage(const std::string &method, lo_arg **argv, const char *types) { UNUSED(types); if (method == "create_source") { if (OSCutil::typeTagsMatch(types, "s")) createSoundSource(reinterpret_cast<const char*>(argv[0])); } else if (method == "create_listener") { if (OSCutil::typeTagsMatch(types, "s")) createListener(reinterpret_cast<const char *>(argv[0])); } else std::cerr << "Unknown method " << method << std::endl; }
int BaseHandleThread::init() { int listener = createListener(m_host, m_port, m_backlog); if (listener < 0) { return -1; } m_listener = listener; int notifyFd = createNotifyFd(); if (notifyFd < 0) { return -2; } m_notifyFd = notifyFd; m_epollFd = createEpoll(); return 0; }
int dispatch(int port) { int handle; fd_set fds; handle = createListener(port, 5); if (handle < 0) return -1; appendDescriptor( createDescriptor(handle, &descriptorList, acceptClient), &descriptorList); while (1) { FD_ZERO(&fds); iterateDescriptors(&descriptorList, setFdBit, &fds); if (select(descriptorList.numHandles, &fds, NULL, NULL, NULL) < 0) { perror("select"); return -1; } iterateDescriptors(&descriptorList, checkFdBit, &fds); } }
void ListenerFactoryLogic::compositorInstanceCreated(Ogre::CompositorInstance* newInstance) { Ogre::CompositorInstance::Listener* listener = createListener(newInstance); newInstance->addListener(listener); listeners[newInstance] = listener; }
int main(int argc, const char *argv[]) { int np, verbose; int rank, i, rc; int dup_argc; char **dup_argv; int waittime, killtime; unsigned int magic; /* * We can't use popt for argument parsing here. popt is not * capable to stop at the first unrecogniced option, i.e. at the * executable separation options to the mpirun command from * options to the application. */ poptContext optCon; /* context for parsing command-line options */ struct poptOption optionsTable[] = { { "np", '\0', POPT_ARG_INT | POPT_ARGFLAG_ONEDASH, &np, 0, "number of processes to start", "num"}, { "wait", 'w', POPT_ARG_INT, &waittime, 0, "Wait <n> seconds between each spawning step", "n"}, { "kill", 'k', POPT_ARG_INT, &killtime, 0, "Kill all processes <n> seconds after the first exits", "n"}, { NULL, 'v', POPT_ARG_NONE, &verbose, 0, "verbose mode", NULL}, { NULL, '\0', 0, NULL, 0, NULL, NULL} }; /* The duplicated argv will contain the apps commandline */ poptDupArgv(argc, argv, &dup_argc, (const char ***)&dup_argv); optCon = poptGetContext(NULL, dup_argc, (const char **)dup_argv, optionsTable, 0); poptSetOtherOptionHelp(optCon, OTHER_OPTIONS_STR); /* * Split the argv into two parts: * - first one containing the mpirun options * - second one containing the apps argv * The first one is already parsed while splitting */ while (1) { const char *unknownArg; np = -1; verbose = 0; waittime = 0; killtime = -1; rc = poptGetNextOpt(optCon); if ((unknownArg=poptGetArg(optCon))) { /* * Find the first unknown argument (which is the apps * name) within dup_argv. Start searching from dup_argv's end * since the apps name might be used within another * options argument. */ for (i=argc-1; i>0; i--) { if (strcmp(dup_argv[i], unknownArg)==0) { dup_argc = i; dup_argv[dup_argc] = NULL; poptFreeContext(optCon); optCon = poptGetContext(NULL, dup_argc, (const char **)dup_argv, optionsTable, 0); poptSetOtherOptionHelp(optCon, OTHER_OPTIONS_STR); break; } } if (i==0) { printf("unknownArg '%s' not found !?\n", unknownArg); exit(1); } } else { /* No unknownArg left, we are finished */ break; } } if (rc < -1) { /* an error occurred during option processing */ poptPrintUsage(optCon, stderr, 0); fprintf(stderr, "%s: %s\n", poptBadOption(optCon, POPT_BADOPTION_NOALIAS), poptStrerror(rc)); exit(1); } if (np == -1) { poptPrintUsage(optCon, stderr, 0); fprintf(stderr, "You have to give at least the -np argument.\n"); exit(1); } if (!argv[dup_argc]) { poptPrintUsage(optCon, stderr, 0); fprintf(stderr, "No <command> specified.\n"); exit(1); } free(dup_argv); if (verbose) { printf("The 'gmspawner' command-line is:\n"); for (i=0; i<dup_argc; i++) { printf("%s ", argv[i]); } printf("\b\n\n"); printf("The applications command-line is:\n"); for (i=dup_argc; i<argc; i++) { printf("%s ", argv[i]); } printf("\b\n\n"); } /* init PSI */ if (!PSI_initClient(TG_GMSPAWNER)) { fprintf(stderr, "Initialization of PSI failed."); exit(10); } PSI_infoInt(-1, PSP_INFO_TASKRANK, NULL, &rank, 0); if (rank != np) { fprintf(stderr, "%s: rank(%d) != np(%d).\n", argv[dup_argc], rank, np); exit(1); } /* Propagate some environment variables */ PSI_propEnv(); PSI_propEnvList("PSI_EXPORTS"); PSI_propEnvList("__PSI_EXPORTS"); srandom(time(NULL)); magic = random()%9999999; setIntEnv("GMPI_MAGIC", magic); setIntEnv("GMPI_NP", np); { char hostname[256]; gethostname(hostname, sizeof(hostname)); setPSIEnv("GMPI_MASTER", hostname, 1); } { int port = createListener(8000, np, magic, verbose); if (port>=0) setIntEnv("GMPI_PORT", port); } propagateEnv("GMPI_SHMEM", 1); propagateEnv("DISPLAY", 0); propagateEnv("GMPI_EAGER", 0); propagateEnv("GMPI_RECV", 1); PSC_setSigHandler(SIGALRM, sighandler); /* spawn all processes */ PSI_RemoteArgs(argc - dup_argc, (char **)&argv[dup_argc], &dup_argc, &dup_argv); for (rank=0; rank<np; rank++) { if (waittime && rank) sleep(waittime); setIntEnv("GMPI_ID", rank); setIntEnv("GMPI_BOARD", -1); char slavestring[20]; PSnodes_ID_t node; struct in_addr ip; int err; err = PSI_infoNodeID(-1, PSP_INFO_RANKID, &rank, &node, 1); if (err) { fprintf(stderr, "Could not determine rank %d's node.\n", rank); exit(1); } err = PSI_infoUInt(-1, PSP_INFO_NODE, &node, &ip.s_addr, 1); if (err) { fprintf(stderr, "Could not determine node %d's IP\n", node); exit(1); } snprintf(slavestring, sizeof(slavestring), "%s", inet_ntoa(ip)); setPSIEnv("GMPI_SLAVE", slavestring, 1); /* spawn the process */ int error; if (!PSI_spawnRank(rank, ".", dup_argc, dup_argv, &error)) { if (error) { char *errstr = strerror(error); fprintf(stderr, "Could not spawn process %d (%s) error = %s.\n", rank, dup_argv[0], errstr ? errstr : "UNKNOWN"); exit(1); } } } /* Wait for the spawned processes to complete */ while (np) { static int firstClient=1; DDErrorMsg_t msg; int ret; ret = PSI_recvMsg((DDMsg_t *)&msg, sizeof(msg)); if (msg.header.type != PSP_CD_SPAWNFINISH || ret != sizeof(msg)) { fprintf(stderr, "got strange message type %s\n", PSP_printMsg(msg.header.type)); } else { if (firstClient && killtime!=-1) { // printf("Alarm set to %d\n", killtime); if (killtime) { alarm(killtime); firstClient=0; } else { /* Stop immediately */ exit(0); } } np--; // printf("%d clients left\n", np); } } PSI_release(PSC_getMyTID()); PSI_exitClient(); return 0; }
bool ModelBackgroundLoader::poll(const TimeFrame& timeFrame) { #if OGRE_THREAD_SUPPORT if (mState == LS_UNINITIALIZED) { //Start to load the meshes for (SubModelDefinitionsStore::const_iterator I_subModels = mModel.getDefinition()->getSubModelDefinitions().begin(); I_subModels != mModel.getDefinition()->getSubModelDefinitions().end(); ++I_subModels) { Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr> (Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName())); if (meshPtr.isNull() || !meshPtr->isPrepared()) { try { Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().prepare(Ogre::MeshManager::getSingleton().getResourceType(), (*I_subModels)->getMeshName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener()); if (ticket) { addTicket(ticket); } } catch (const std::exception& ex) { S_LOG_FAILURE("Could not load the mesh " << (*I_subModels)->getMeshName() << " when loading model " << mModel.getName() << "." << ex); continue; } } } mState = LS_MESH_PREPARING; return poll(timeFrame); } else if (mState == LS_MESH_PREPARING) { if (areAllTicketsProcessed()) { mState = LS_MESH_PREPARED; return poll(timeFrame); } } else if (mState == LS_MESH_PREPARED) { for (SubModelDefinitionsStore::const_iterator I_subModels = mModel.getDefinition()->getSubModelDefinitions().begin(); I_subModels != mModel.getDefinition()->getSubModelDefinitions().end(); ++I_subModels) { Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr> (Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName())); if (!meshPtr.isNull()) { if (!meshPtr->isLoaded()) { #if OGRE_THREAD_SUPPORT == 1 Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().load(Ogre::MeshManager::getSingleton().getResourceType(), meshPtr->getName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener()); if (ticket) { // meshPtr->setBackgroundLoaded(true); addTicket(ticket); } #else if (!timeFrame.isTimeLeft()) { return false; } try { meshPtr->load(); } catch (const std::exception& ex) { S_LOG_FAILURE("Could not load the mesh " << meshPtr->getName() << " when loading model " << mModel.getName() << "." << ex); continue; } #endif } } } mState = LS_MESH_LOADING; return poll(timeFrame); } else if (mState == LS_MESH_LOADING) { if (areAllTicketsProcessed()) { mState = LS_MESH_LOADED; return poll(timeFrame); } } else if (mState == LS_MESH_LOADED) { for (SubModelDefinitionsStore::const_iterator I_subModels = mModel.getDefinition()->getSubModelDefinitions().begin(); I_subModels != mModel.getDefinition()->getSubModelDefinitions().end(); ++I_subModels) { Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr> (Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName())); if (!meshPtr.isNull()) { if (meshPtr->isLoaded()) { Ogre::Mesh::SubMeshIterator subMeshI = meshPtr->getSubMeshIterator(); while (subMeshI.hasMoreElements()) { Ogre::SubMesh* submesh(subMeshI.getNext()); Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr> (Ogre::MaterialManager::getSingleton().getByName(submesh->getMaterialName())); if (materialPtr.isNull() || !materialPtr->isPrepared()) { // S_LOG_VERBOSE("Preparing material " << materialPtr->getName()); Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().prepare(Ogre::MaterialManager::getSingleton().getResourceType(),submesh->getMaterialName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener()); if (ticket) { addTicket(ticket); } } } } } for (PartDefinitionsStore::const_iterator I_parts = (*I_subModels)->getPartDefinitions().begin(); I_parts != (*I_subModels)->getPartDefinitions().end(); ++I_parts) { if ((*I_parts)->getSubEntityDefinitions().size() > 0) { for (SubEntityDefinitionsStore::const_iterator I_subEntities = (*I_parts)->getSubEntityDefinitions().begin(); I_subEntities != (*I_parts)->getSubEntityDefinitions().end(); ++I_subEntities) { const std::string& materialName = (*I_subEntities)->getMaterialName(); if (materialName != "") { Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr> (Ogre::MaterialManager::getSingleton().getByName(materialName)); if (materialPtr.isNull() || !materialPtr->isPrepared()) { // S_LOG_VERBOSE("Preparing material " << materialName); Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().prepare(Ogre::MaterialManager::getSingleton().getResourceType(), materialName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener()); if (ticket) { addTicket(ticket); } } } } } } } mState = LS_MATERIAL_PREPARING; return poll(timeFrame); } else if (mState == LS_MATERIAL_PREPARING) { if (areAllTicketsProcessed()) { mState = LS_MATERIAL_PREPARED; return poll(timeFrame); } } else if (mState == LS_MATERIAL_PREPARED) { for (SubModelDefinitionsStore::const_iterator I_subModels = mModel.getDefinition()->getSubModelDefinitions().begin(); I_subModels != mModel.getDefinition()->getSubModelDefinitions().end(); ++I_subModels) { Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr> (Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName())); Ogre::Mesh::SubMeshIterator subMeshI = meshPtr->getSubMeshIterator(); while (subMeshI.hasMoreElements()) { Ogre::SubMesh* submesh(subMeshI.getNext()); Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr> (Ogre::MaterialManager::getSingleton().getByName(submesh->getMaterialName())); if (!materialPtr.isNull() && !materialPtr->isLoaded()) { #if OGRE_THREAD_SUPPORT == 1 Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().load(Ogre::MaterialManager::getSingleton().getResourceType(), materialPtr->getName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener()); if (ticket) { // materialPtr->setBackgroundLoaded(true); addTicket(ticket); } #else Ogre::Material::TechniqueIterator techIter = materialPtr->getSupportedTechniqueIterator(); while (techIter.hasMoreElements()) { Ogre::Technique* tech = techIter.getNext(); Ogre::Technique::PassIterator passIter = tech->getPassIterator(); while (passIter.hasMoreElements()) { Ogre::Pass* pass = passIter.getNext(); Ogre::Pass::TextureUnitStateIterator tusIter = pass->getTextureUnitStateIterator(); while (tusIter.hasMoreElements()) { Ogre::TextureUnitState* tus = tusIter.getNext(); unsigned int frames = tus->getNumFrames(); for (unsigned int i = 0; i < frames; ++i) { if (!timeFrame.isTimeLeft()) { return false; } //This will automatically load the texture. // S_LOG_VERBOSE("Loading texture " << tus->getTextureName()); Ogre::TexturePtr texturePtr = tus->_getTexturePtr(i); } } } } if (!timeFrame.isTimeLeft()) { return false; } // S_LOG_VERBOSE("Loading material " << materialPtr->getName()); materialPtr->load(); #endif } } for (PartDefinitionsStore::const_iterator I_parts = (*I_subModels)->getPartDefinitions().begin(); I_parts != (*I_subModels)->getPartDefinitions().end(); ++I_parts) { if ((*I_parts)->getSubEntityDefinitions().size() > 0) { for (SubEntityDefinitionsStore::const_iterator I_subEntities = (*I_parts)->getSubEntityDefinitions().begin(); I_subEntities != (*I_parts)->getSubEntityDefinitions().end(); ++I_subEntities) { const std::string& materialName = (*I_subEntities)->getMaterialName(); if (materialName != "") { Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr> (Ogre::MaterialManager::getSingleton().getByName(materialName)); if (!materialPtr.isNull() && !materialPtr->isLoaded()) { #if OGRE_THREAD_SUPPORT == 1 Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().load(Ogre::MaterialManager::getSingleton().getResourceType(), materialPtr->getName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener()); if (ticket) { addTicket(ticket); } #else Ogre::Material::TechniqueIterator techIter = materialPtr->getSupportedTechniqueIterator(); while (techIter.hasMoreElements()) { Ogre::Technique* tech = techIter.getNext(); Ogre::Technique::PassIterator passIter = tech->getPassIterator(); while (passIter.hasMoreElements()) { Ogre::Pass* pass = passIter.getNext(); Ogre::Pass::TextureUnitStateIterator tusIter = pass->getTextureUnitStateIterator(); while (tusIter.hasMoreElements()) { Ogre::TextureUnitState* tus = tusIter.getNext(); unsigned int frames = tus->getNumFrames(); for (unsigned int i = 0; i < frames; ++i) { if (!timeFrame.isTimeLeft()) { return false; } //This will automatically load the texture. // S_LOG_VERBOSE("Loading texture " << tus->getTextureName()); Ogre::TexturePtr texturePtr = tus->_getTexturePtr(i); } } } } if (!timeFrame.isTimeLeft()) { return false; } // S_LOG_VERBOSE("Loading material " << materialPtr->getName()); materialPtr->load(); #endif } } } } } } mState = LS_MATERIAL_LOADING; return poll(timeFrame); } else if (mState == LS_MATERIAL_LOADING) { if (areAllTicketsProcessed()) { mState = LS_DONE; return true; } } else { return true; } return false; #else //If there's no threading support, just return here. return true; #endif }
// main() entrypoint of the program. int main(void) { // connector's address information struct sockaddr_storage theirAddr; socklen_t size; struct sigaction sa; char p[INET6_ADDRSTRLEN]; int s; int newSock; // Create a socket to listen on the port. s = createListener(PORT); // Handle any problems raised by createListener(). if(s == BIND_ERROR) { perror("bind"); exit(1); } else if(s == SOCKET_ERROR) { perror("socket"); } // Listen to the socket, wait for incoming requests. Allow // a BACKLOG of requests to come in. if (listen(s, BACKLOG) == -1) { perror("listen"); exit(1); } // Set up the child reaper, a sig-action handler. sa.sa_handler = sigchld_handler; sigemptyset(&sa.sa_mask); sa.sa_flags = SA_RESTART; if (sigaction(SIGCHLD, &sa, NULL) == -1) { perror("sigaction"); exit(1); } printf("server: waiting for connections...\n"); // Wait forever to get connections from clients. Yes, to quit this program // one must use Ctrl+C. while(1) { size = sizeof(theirAddr); // A new connection coming in. newSock = accept(s, (struct sockaddr *)&theirAddr, &size); if (newSock == -1) { perror("accept"); continue; } // Convert the IP address to a textual IP address that // can be printed to the console. inet_ntop(theirAddr.ss_family, get_in_addr((struct sockaddr *)&theirAddr), p, sizeof(p)); // Print the client's IP address to the console. printf("server: got connection from %s.\n", p); // Make a child process to handle the request. The server will continue // to listen on s for new connections while the child will deliver the message // unto the client. if(!fork()) { // The child process does not need the original socket. The parent // process will continue to use it to listen for new connections. close(s); // Send the message to the client. if(send(newSock, MSG, sizeof(MSG), 0) == -1) perror("send"); // All done. Close the socket used to send the message // to the client. close(newSock); // The child function is done. exit(0); } // The parent process doesn't need the new socket created to // handle request. close(newSock); } return EXIT_SUCCESS; }
void Main::main(Event::Lane* lane) { mSoundDevice = createSoundDevice(); mListener = createListener(*lane); }