bool Logic::connect(void) { switch (m_socketClient.connect()) { case Socket::ConnectionStatus::CONNECTION_SUCCEEDED: prepareRequestsToSend(); onStatusChange(m_socketClient.getSockFd(), socketDataStatus()); return true; case Socket::ConnectionStatus::CONNECTION_IN_PROGRESS: prepareRequestsToSend(); onStatusChange(m_socketClient.getSockFd(), cynara_async_status::CYNARA_STATUS_FOR_RW); return true; default: onServiceNotAvailable(); return false; } }
DWORD DoDisconnect() { //MessageBox(NULL, _T("disconnect"), _T(""), MB_OK); g_Action = STOP; onStatusChange(); return 0; }
DWORD DoConnect() { //MessageBox(NULL, _T("connect"), _T(""), MB_OK); g_Action = START; onStatusChange(); return 0; }
int Logic::createRequest(bool simple, const std::string &client, const std::string &session, const std::string &user, const std::string &privilege, cynara_check_id &checkId, cynara_response_callback callback, void *userResponseData) { if (!m_operationPermitted) return CYNARA_API_OPERATION_NOT_ALLOWED; if (!ensureConnection()) return CYNARA_API_SERVICE_NOT_AVAILABLE; ProtocolFrameSequenceNumber sequenceNumber; if (!m_sequenceContainer.get(sequenceNumber)) return CYNARA_API_MAX_PENDING_REQUESTS; PolicyKey key(client, user, privilege); ResponseCallback responseCallback(callback, userResponseData); m_checks.insert(CheckPair(sequenceNumber, CheckData(key, session, responseCallback, simple))); if (simple) m_socketClient.appendRequest(SimpleCheckRequest(key, sequenceNumber)); else m_socketClient.appendRequest(CheckRequest(key, sequenceNumber)); onStatusChange(m_socketClient.getSockFd(), cynara_async_status::CYNARA_STATUS_FOR_RW); checkId = static_cast<cynara_check_id>(sequenceNumber); return CYNARA_API_SUCCESS; }
int ConnMgr::Stop() { m_ProtocolHelper->CleanUp(); g_Status = OFFLINE; onStatusChange(); return 0; }
void ContextMenu::setStatus(bool status) { if (getStatus() != status) { _status = status; onStatusChange(); } _currSelectedMenu = -1; for (int i = 0; i < _list.size(); i++) { _list[i]->setStatus(false); } }
bool Logic::processOut(void) { switch (m_socketClient.sendToCynara()) { case Socket::SendStatus::ALL_DATA_SENT: onStatusChange(m_socketClient.getSockFd(), cynara_async_status::CYNARA_STATUS_FOR_READ); case Socket::SendStatus::PARTIAL_DATA_SENT: return true; default: return false; } }
int Logic::completeConnection(bool &completed) { switch (m_socketClient.completeConnection()) { case Socket::ConnectionStatus::ALREADY_CONNECTED: completed = true; return CYNARA_API_SUCCESS; case Socket::ConnectionStatus::CONNECTION_SUCCEEDED: onStatusChange(m_socketClient.getSockFd(), socketDataStatus()); completed = true; return CYNARA_API_SUCCESS; case Socket::ConnectionStatus::CONNECTION_IN_PROGRESS: completed = false; return CYNARA_API_SUCCESS; default: completed = false; onDisconnected(); onServiceNotAvailable(); return CYNARA_API_SERVICE_NOT_AVAILABLE; } }
int Logic::cancelRequest(cynara_check_id checkId) { if (!m_operationPermitted) return CYNARA_API_OPERATION_NOT_ALLOWED; if (!ensureConnection()) return CYNARA_API_SERVICE_NOT_AVAILABLE; auto it = m_checks.find(checkId); if (it == m_checks.end() || it->second.cancelled()) return CYNARA_API_INVALID_PARAM; m_socketClient.appendRequest(CancelRequest(it->first)); it->second.cancel(); bool onAnswerCancel = m_inAnswerCancelResponseCallback; m_inAnswerCancelResponseCallback = true; it->second.callback().onCancel(it->first); m_inAnswerCancelResponseCallback = onAnswerCancel; onStatusChange(m_socketClient.getSockFd(), cynara_async_status::CYNARA_STATUS_FOR_RW); return CYNARA_API_SUCCESS; }
MessageComposer::MessageComposer(QWidget *parent) : QWidget(parent), _statusComboBox(new QComboBox(this)), _channelComboBox(new QComboBox(this)), _pitchSpinBox(new QSpinBox(this)), _velocitySpinBox(new QSpinBox(this)), _controlSpinBox(new QSpinBox(this)), _valueSpinBox(new QSpinBox(this)) { _statuses << "Note off" << "Note on" << "Control change" << "Program change" << "Pitch bend" << "Aftertouch" << "Poly Aftertouch" << "Sysex" << "Time code" << "Song pos pointer" << "Song select" << "Sysex end" << "Time clock" << "Start" << "Continue" << "Stop" << "Active sensing" << "System reset"; QGridLayout *mainLayout = new QGridLayout(this); QLabel *heading = new QLabel("Compose Message"); QFont headingFont = heading->font(); headingFont.setBold(true); headingFont.setPointSize(14); heading->setFont(headingFont); mainLayout->addWidget(heading,0,0); mainLayout->addWidget(new QLabel(tr("Channel")), 1,0); QStringList channels; for(int i = 1; i <= 16; i++) { channels << QString::number(i); } _channelComboBox->addItems(channels); mainLayout->addWidget(_channelComboBox,1,1,1,2); mainLayout->addWidget(new QLabel(tr("Status")),2,0); _statusComboBox->addItems(_statuses); connect(_statusComboBox, SIGNAL(currentTextChanged(QString)), this, SLOT(onStatusChange(QString))); mainLayout->addWidget(_statusComboBox, 2,1,1,2); mainLayout->addWidget(new QLabel(tr("Pitch")),3,0); _pitchSpinBox->setRange(0,127); mainLayout->addWidget(_pitchSpinBox, 3,1,1,2); mainLayout->addWidget(new QLabel(tr("Velocity")),4,0); _velocitySpinBox->setRange(0,127); mainLayout->addWidget(_velocitySpinBox, 4,1,1,2); mainLayout->addWidget(new QLabel(tr("Control")),5,0); _controlSpinBox->setRange(0,127); mainLayout->addWidget(_controlSpinBox, 5,1,1,2); mainLayout->addWidget(new QLabel(tr("Value")),6,0); _valueSpinBox->setRange(0,127); mainLayout->addWidget(_valueSpinBox, 6,1,1,2); mainLayout->setSpacing(0); mainLayout->setMargin(0); setLayout(mainLayout); onStatusChange(_statusComboBox->currentText()); }
int ConnMgr::Start() { m_Lucky = -1; static int timeout = 0; //自动机 int iStatus = -1; switch(m_status){ case STA_CON: if(SUCCESS_RET == m_ProtocolHelper->Connect()){ m_status = STA_CON_OK; } else{ m_ProtocolHelper->CleanUp(); m_status = STA_CON; } break; case STA_CON_OK: iStatus = m_ProtocolHelper->CheckCONReply(); if(CHK_SUCCESS == iStatus){ m_status = STA_MAC; timeout=-1; } else if(CHK_FAIL == iStatus || timeout > MAXTRY){ m_ProtocolHelper->CleanUp(); m_status = STA_CON; timeout=-1; } timeout++; break; case STA_MAC: iStatus = m_ProtocolHelper->SendMACAddress(); if(SUCCESS_RET == iStatus){ m_status = STA_MAC_OK; } else{ m_ProtocolHelper->CleanUp(); m_status = STA_CON; } break; case STA_MAC_OK: iStatus = m_ProtocolHelper->CheckMACReply(); if(CHK_SUCCESS == iStatus){ m_status = STA_NAT; timeout = -1; } else if(CHK_FAIL == iStatus || timeout > MAXTRY){ if(CHK_FAIL == iStatus) AskForHelp(_T("你的MAC地址好像不对耶?")); else if( timeout > MAXTRY) AskForHelp(_T("连接超时了~")); m_ProtocolHelper->CleanUp(); timeout = -1; m_status = STA_CON; } timeout++; break; case STA_NAT: iStatus = m_ProtocolHelper->SendNATVersion(); if(SUCCESS_RET == iStatus){ m_status = STA_NAT_OK; } else{ m_ProtocolHelper->CleanUp(); m_status = STA_CON; } break; case STA_NAT_OK: iStatus = m_ProtocolHelper->CheckNATReply(); if(CHK_SUCCESS == iStatus){ m_status = STA_INF; timeout = -1; } else if(CHK_FAIL == iStatus || timeout > MAXTRY){ m_ProtocolHelper->CleanUp(); m_status = STA_CON; timeout = -1; } timeout++; break; case STA_INF: iStatus = m_ProtocolHelper->SendInformation(); if(SUCCESS_RET == iStatus){ m_status = STA_INF_OK; } else{ m_ProtocolHelper->CleanUp(); m_status = STA_CON; } break; case STA_INF_OK: iStatus = m_ProtocolHelper->CheckINFReply(); if(CHK_SUCCESS == iStatus){ m_status = STA_CHK; timeout = -1; } else if(CHK_FAIL == iStatus || timeout > MAXTRY){ if(CHK_FAIL == iStatus) AskForHelp(_T("看看你的用户名密码是不是写错了? 还有套餐选对没?")); else if( timeout > MAXTRY) AskForHelp(_T("连接超时了~")); m_ProtocolHelper->CleanUp(); m_status = STA_CON; timeout = -1; } timeout++; break; case STA_CHK: iStatus = m_ProtocolHelper->SendCheckNAT(); if(SUCCESS_RET == iStatus){ m_status = STA_CHK_OK; } else{ m_ProtocolHelper->CleanUp(); m_status = STA_CON; } break; case STA_CHK_OK: iStatus = m_ProtocolHelper->CheckCHKReply(); if(CHK_SUCCESS == iStatus){ g_Status = ONLINE; onStatusChange(); SetRouteTable(); timeout = -1; m_status = STA_CON; } else if(CHK_FAIL == iStatus || timeout > MAXTRY){ m_ProtocolHelper->CleanUp(); timeout = -1; m_status = STA_CON; } timeout++; break; } return 0; }