void SecureSocket::secureAccept() { setJob(new TSocketMultiplexerMethodJob<SecureSocket>( this, &SecureSocket::serviceAccept, getSocket(), isReadable(), isWritable())); }
void CTCPSocket::shutdownOutput() { bool useNewJob = false; { CLock lock(&m_mutex); // shutdown socket for writing try { ARCH->closeSocketForWrite(m_socket); } catch (XArchNetwork&) { // ignore } // shutdown buffer for writing if (m_writable) { sendEvent(getOutputShutdownEvent()); onOutputShutdown(); useNewJob = true; } } if (useNewJob) { setJob(newJob()); } }
void CTCPSocket::close() { // remove ourself from the multiplexer setJob(NULL); CLock lock(&m_mutex); // clear buffers and enter disconnected state if (m_connected) { sendEvent(getDisconnectedEvent()); } onDisconnected(); // close the socket if (m_socket != NULL) { CArchSocket socket = m_socket; m_socket = NULL; try { ARCH->closeSocket(socket); } catch (XArchNetwork& e) { // ignore, there's not much we can do LOG((CLOG_WARN "error closing socket: %s", e.what().c_str())); } } }
void CTCPSocket::connect(const CNetworkAddress& addr) { { CLock lock(&m_mutex); // fail on attempts to reconnect if (m_socket == NULL || m_connected) { sendConnectionFailedEvent("busy"); return; } try { if (ARCH->connectSocket(m_socket, addr.getAddress())) { sendEvent(getConnectedEvent()); onConnected(); } else { // connection is in progress m_writable = true; } } catch (XArchNetwork& e) { throw XSocketConnect(e.what()); } } setJob(newJob()); }
void CTCPSocket::shutdownInput() { bool useNewJob = false; { CLock lock(&m_mutex); // shutdown socket for reading try { ARCH->closeSocketForRead(m_socket); } catch (XArchNetwork&) { // ignore } // shutdown buffer for reading if (m_readable) { sendEvent(m_events->forIStream().inputShutdown()); onInputShutdown(); useNewJob = true; } } if (useNewJob) { setJob(newJob()); } }
void CTCPSocket::write(const void* buffer, UInt32 n) { bool wasEmpty; { CLock lock(&m_mutex); // must not have shutdown output if (!m_writable) { sendEvent(getOutputErrorEvent()); return; } // ignore empty writes if (n == 0) { return; } // copy data to the output buffer wasEmpty = (m_outputBuffer.getSize() == 0); m_outputBuffer.write(buffer, n); // there's data to write m_flushed = false; } // make sure we're waiting to write if (wasEmpty) { setJob(newJob()); } }
void TCPSocket::close() { // remove ourself from the multiplexer setJob(nullptr); Lock lock(&m_mutex); // clear buffers and enter disconnected state if (m_connected) { sendEvent(m_events->forISocket().disconnected()); } onDisconnected(); // close the socket if (m_socket != nullptr) { ArchSocket socket = m_socket; m_socket = nullptr; try { ARCH->closeSocket(socket); } catch (XArchNetwork& e) { // ignore, there's not much we can do LOG((CLOG_WARN "error closing socket: %s", e.what())); } } }
void Network::onJob(Client *client, const Job &job) { if (m_donate && m_donate->isActive() && client->id() != -1) { return; } setJob(client, job); }
void KonqRun::handleError(KJob *job) { if (!m_mailto.isEmpty()) { setJob(0); setFinished(true); return; } KParts::BrowserRun::handleError(job); }
CTCPSocket::CTCPSocket(CArchSocket socket) : m_mutex(), m_socket(socket), m_flushed(&m_mutex, true) { assert(m_socket != NULL); // socket starts in connected state init(); onConnected(); setJob(newJob()); }
TCPSocket::TCPSocket(IEventQueue* events, SocketMultiplexer* socketMultiplexer, ArchSocket socket) : IDataSocket(events), m_events(events), m_socket(socket), m_flushed(&m_mutex, true), m_socketMultiplexer(socketMultiplexer) { assert(m_socket != NULL); // socket starts in connected state init(); onConnected(); setJob(newJob()); }
//restart a specific job uint8_t looper::restartJob(void (*userJob)(void)) { return (setJob(userJob, 1)); }
//pause a specific job uint8_t looper::pauseJob(void (*userJob)(void)) { return (setJob(userJob, 0)); }
void player::chooseJob(WINDOW*& interfaceWindow, std::vector<career>& careerList, bool userOrNot) { int interfacePrintX = 77; int interfacePrintY = 5; mvwprintw(interfaceWindow, interfacePrintY-2, interfacePrintX, " "); mvwprintw(interfaceWindow, interfacePrintY-1, interfacePrintX, " "); mvwprintw(interfaceWindow, interfacePrintY, interfacePrintX, " "); mvwprintw(interfaceWindow, interfacePrintY+1, interfacePrintX, " "); wrefresh(interfaceWindow); bool loopFinish = false; career jobOne; career jobTwo; career jobThree; int randomOne; int randomTwo; int randomThree; while(loopFinish != true) { randomOne = rand() % careerList.size(); randomTwo = rand() % careerList.size(); randomThree = rand() % careerList.size(); if(randomOne == randomTwo || randomTwo == randomThree || randomOne == randomThree) { loopFinish = false; } else { loopFinish = true; } } jobOne = careerList.at(randomOne); jobTwo = careerList.at(randomTwo); jobThree = careerList.at(randomThree); if(userOrNot == true) { mvwprintw(interfaceWindow, interfacePrintY-2, interfacePrintX, "Choose a Career: "); mvwprintw(interfaceWindow, interfacePrintY-1, interfacePrintX, "(1) "); mvwprintw(interfaceWindow, interfacePrintY-1, interfacePrintX+4, jobOne.title.c_str()); mvwprintw(interfaceWindow, interfacePrintY-1, interfacePrintX+22, "Salary: $"); mvwprintw(interfaceWindow, interfacePrintY-1, interfacePrintX+31, "%d", jobOne.salary); mvwprintw(interfaceWindow, interfacePrintY, interfacePrintX, "(2) "); mvwprintw(interfaceWindow, interfacePrintY, interfacePrintX+4, jobTwo.title.c_str()); mvwprintw(interfaceWindow, interfacePrintY, interfacePrintX+22, "Salary: $"); mvwprintw(interfaceWindow, interfacePrintY, interfacePrintX+31, "%d", jobTwo.salary); mvwprintw(interfaceWindow, interfacePrintY+1, interfacePrintX, "(3) "); mvwprintw(interfaceWindow, interfacePrintY+1, interfacePrintX+4, jobThree.title.c_str()); mvwprintw(interfaceWindow, interfacePrintY+1, interfacePrintX+22, "Salary: $"); mvwprintw(interfaceWindow, interfacePrintY+1, interfacePrintX+31, "%d", jobThree.salary); wrefresh(interfaceWindow); bool goodInput = false; while(goodInput != true) { char jobDecision = getch(); if(jobDecision == '1' || jobDecision == '2' || jobDecision == '3') { goodInput = true; if(jobDecision == '1') { setJob(jobOne); careerList.erase(careerList.begin() + randomOne); } else if(jobDecision == '2') { setJob(jobTwo); careerList.erase(careerList.begin() + randomTwo); } else if(jobDecision == '3') { setJob(jobThree); careerList.erase(careerList.begin() + randomThree); } } else { goodInput = false; } } } else if(userOrNot == false) { int randChoice = rand() % 3; if(randChoice == 0) { setJob(jobOne); careerList.erase(careerList.begin() + randomOne); } else if(randChoice == 1) { setJob(jobTwo); careerList.erase(careerList.begin() + randomTwo); } else if(randChoice == 2) { setJob(jobThree); careerList.erase(careerList.begin() + randomThree); } } mvwprintw(interfaceWindow, interfacePrintY-2, interfacePrintX, " "); mvwprintw(interfaceWindow, interfacePrintY-1, interfacePrintX, " "); mvwprintw(interfaceWindow, interfacePrintY, interfacePrintX, " "); mvwprintw(interfaceWindow, interfacePrintY+1, interfacePrintX, " "); wrefresh(interfaceWindow); }