void EngineShoutcast::write(unsigned char *header, unsigned char *body, int headerLen, int bodyLen) { int ret; if (!m_pShout) return; if (m_iShoutStatus == SHOUTERR_CONNECTED) { // Send header if there is one if ( headerLen > 0 ) { ret = shout_send(m_pShout, header, headerLen); if (ret != SHOUTERR_SUCCESS) { qDebug() << "DEBUG: Send error: " << shout_get_error(m_pShout); if ( m_iShoutFailures > 3 ){ if(!serverConnect()) errorDialog(tr("Lost connection to streaming server"), tr("Please check your connection to the Internet and verify that your username and password are correct.")); } else{ m_iShoutFailures++; } return; } else { //qDebug() << "yea I kinda sent header"; } } ret = shout_send(m_pShout, body, bodyLen); if (ret != SHOUTERR_SUCCESS) { qDebug() << "DEBUG: Send error: " << shout_get_error(m_pShout); if ( m_iShoutFailures > 3 ){ if(!serverConnect()) errorDialog(tr("Lost connection to streaming server"), tr("Please check your connection to the Internet and verify that your username and password are correct.")); } else{ m_iShoutFailures++; } return; } else { //qDebug() << "yea I kinda sent footer"; } if (shout_queuelen(m_pShout) > 0) { qDebug() << "DEBUG: queue length:" << (int)shout_queuelen(m_pShout); } } else { qDebug() << "Error connecting to Shoutcast server:" << shout_get_error(m_pShout); // errorDialog(tr("Shoutcast aborted connect after 3 tries"), tr("Please check your connection to the Internet and verify that your username and password are correct.")); } }
static PyObject* pshoutobj_queuelen(ShoutObject* self) { return Py_BuildValue("i", shout_queuelen(self->conn)); }
int main() { shout_t *shout; char buff[4096]; long read, ret, total; shout_init(); if (!(shout = shout_new())) { printf("Could not allocate shout_t\n"); return 1; } if (shout_set_host(shout, "127.0.0.1") != SHOUTERR_SUCCESS) { printf("Error setting hostname: %s\n", shout_get_error(shout)); return 1; } if (shout_set_protocol(shout, SHOUT_PROTOCOL_HTTP) != SHOUTERR_SUCCESS) { printf("Error setting protocol: %s\n", shout_get_error(shout)); return 1; } if (shout_set_port(shout, 8000) != SHOUTERR_SUCCESS) { printf("Error setting port: %s\n", shout_get_error(shout)); return 1; } if (shout_set_password(shout, "hackme") != SHOUTERR_SUCCESS) { printf("Error setting password: %s\n", shout_get_error(shout)); return 1; } if (shout_set_mount(shout, "/example.ogg") != SHOUTERR_SUCCESS) { printf("Error setting mount: %s\n", shout_get_error(shout)); return 1; } if (shout_set_user(shout, "source") != SHOUTERR_SUCCESS) { printf("Error setting user: %s\n", shout_get_error(shout)); return 1; } if (shout_set_format(shout, SHOUT_FORMAT_OGG) != SHOUTERR_SUCCESS) { printf("Error setting user: %s\n", shout_get_error(shout)); return 1; } if (shout_set_nonblocking(shout, 1) != SHOUTERR_SUCCESS) { printf("Error setting non-blocking mode: %s\n", shout_get_error(shout)); return 1; } ret = shout_open(shout); if (ret == SHOUTERR_SUCCESS) ret = SHOUTERR_CONNECTED; if (ret == SHOUTERR_BUSY) printf("Connection pending...\n"); while (ret == SHOUTERR_BUSY) { usleep(10000); ret = shout_get_connected(shout); } if (ret == SHOUTERR_CONNECTED) { printf("Connected to server...\n"); total = 0; while (1) { read = fread(buff, 1, sizeof(buff), stdin); total = total + read; if (read > 0) { ret = shout_send(shout, buff, read); if (ret != SHOUTERR_SUCCESS) { printf("DEBUG: Send error: %s\n", shout_get_error(shout)); break; } } else { break; } if (shout_queuelen(shout) > 0) printf("DEBUG: queue length: %d\n", (int)shout_queuelen(shout)); shout_sync(shout); } } else { printf("Error connecting: %s\n", shout_get_error(shout)); } shout_close(shout); shout_shutdown(); return 0; }