Exemple #1
0
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;
    }
}
Exemple #2
0
DWORD DoDisconnect()
{
	//MessageBox(NULL, _T("disconnect"), _T(""), MB_OK);
	g_Action = STOP;
	onStatusChange();
	return 0;
}
Exemple #3
0
DWORD DoConnect()
{
	//MessageBox(NULL, _T("connect"), _T(""), MB_OK);
	g_Action = START;
	onStatusChange();
	return 0;
}
Exemple #4
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;
}
Exemple #5
0
int ConnMgr::Stop()
{
	m_ProtocolHelper->CleanUp();
	g_Status = OFFLINE;
	onStatusChange();
	return 0;
}
Exemple #6
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);
   }
}
Exemple #7
0
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;
    }
}
Exemple #8
0
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;
    }
}
Exemple #9
0
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;
}
Exemple #10
0
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());
}
Exemple #11
0
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;
}