diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index d5f41ee..6c8a9e4 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -31,6 +31,8 @@ add_executable(chiaki src/discoverymanager.cpp include/streamsession.h src/streamsession.cpp + include/sessionlog.h + src/sessionlog.cpp include/avopenglwidget.h src/avopenglwidget.cpp include/avopenglframeuploader.h diff --git a/gui/include/sessionlog.h b/gui/include/sessionlog.h new file mode 100644 index 0000000..24e5687 --- /dev/null +++ b/gui/include/sessionlog.h @@ -0,0 +1,44 @@ +/* + * This file is part of Chiaki. + * + * Chiaki is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Chiaki is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chiaki. If not, see . + */ + +#ifndef CHIAKI_SESSIONLOG_H +#define CHIAKI_SESSIONLOG_H + +#include + +#include + +class StreamSession; + +class SessionLog +{ + friend class SessionLogPrivate; + + private: + StreamSession *session; + ChiakiLog chiaki_log; + + void Log(ChiakiLogLevel level, const char *msg); + + public: + SessionLog(StreamSession *session, uint32_t level_mask, const QString &filename); + + ChiakiLog *GetChiakiLog() { return &chiaki_log; } + +}; + +#endif //CHIAKI_SESSIONLOG_H diff --git a/gui/include/streamsession.h b/gui/include/streamsession.h index 710c446..59ab56c 100644 --- a/gui/include/streamsession.h +++ b/gui/include/streamsession.h @@ -20,6 +20,7 @@ #include "videodecoder.h" #include "exception.h" +#include "sessionlog.h" #include #include @@ -42,6 +43,8 @@ class ChiakiException: public Exception struct StreamSessionConnectInfo { + uint32_t log_level_mask; + QString log_file; QString host; QString registkey; QString ostype; @@ -58,6 +61,7 @@ class StreamSession : public QObject Q_OBJECT private: + SessionLog log; ChiakiSession session; #if CHIAKI_GUI_ENABLE_QT_GAMEPAD diff --git a/gui/src/main.cpp b/gui/src/main.cpp index 1c7f40f..c145090 100644 --- a/gui/src/main.cpp +++ b/gui/src/main.cpp @@ -63,6 +63,9 @@ int main(int argc, char *argv[]) if(args[0] == "stream") { StreamSessionConnectInfo connect_info; + + connect_info.log_level_mask = CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE; + connect_info.host = host; connect_info.registkey = parser.value(regist_key_option); connect_info.ostype = parser.value(ostype_option); diff --git a/gui/src/sessionlog.cpp b/gui/src/sessionlog.cpp new file mode 100644 index 0000000..0b03b2a --- /dev/null +++ b/gui/src/sessionlog.cpp @@ -0,0 +1,46 @@ +/* + * This file is part of Chiaki. + * + * Chiaki is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Chiaki is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chiaki. If not, see . + */ + +#include +#include + +static void LogCb(ChiakiLogLevel level, const char *msg, void *user); + +SessionLog::SessionLog(StreamSession *session, uint32_t level_mask, const QString &filename) + : session(session) +{ + chiaki_log_init(&chiaki_log, level_mask, LogCb, this); + + // TODO: file +} + +void SessionLog::Log(ChiakiLogLevel level, const char *msg) +{ + chiaki_log_cb_print(level, msg, nullptr); +} + +class SessionLogPrivate +{ + public: + static void Log(SessionLog *log, ChiakiLogLevel level, const char *msg) { log->Log(level, msg); } +}; + +static void LogCb(ChiakiLogLevel level, const char *msg, void *user) +{ + auto log = reinterpret_cast(user); + SessionLogPrivate::Log(log, level, msg); +} \ No newline at end of file diff --git a/gui/src/streamsession.cpp b/gui/src/streamsession.cpp index f88126a..bd5b8fb 100644 --- a/gui/src/streamsession.cpp +++ b/gui/src/streamsession.cpp @@ -35,7 +35,8 @@ static void VideoSampleCb(uint8_t *buf, size_t buf_size, void *user); static void EventCb(ChiakiEvent *event, void *user); StreamSession::StreamSession(const StreamSessionConnectInfo &connect_info, QObject *parent) - : QObject(parent) + : QObject(parent), + log(this, connect_info.log_level_mask, connect_info.log_file) #if CHIAKI_GUI_ENABLE_QT_GAMEPAD ,gamepad(nullptr) #endif @@ -89,7 +90,7 @@ StreamSession::StreamSession(const StreamSessionConnectInfo &connect_info, QObje memset(&keyboard_state, 0, sizeof(keyboard_state)); - err = chiaki_session_init(&session, &chiaki_connect_info); + err = chiaki_session_init(&session, &chiaki_connect_info, log.GetChiakiLog()); if(err != CHIAKI_ERR_SUCCESS) throw ChiakiException("Chiaki Session Init failed: " + QString::fromLocal8Bit(chiaki_error_string(err))); diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 652a4e8..1b4651c 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -39,7 +39,7 @@ set(SOURCE_FILES src/thread.c src/base64.c src/http.c - src/log.c + src/sessionlog.c src/ctrl.c src/rpcrypt.c src/takion.c diff --git a/lib/include/chiaki/log.h b/lib/include/chiaki/log.h index f77e427..e15b339 100644 --- a/lib/include/chiaki/log.h +++ b/lib/include/chiaki/log.h @@ -67,4 +67,4 @@ CHIAKI_EXPORT void chiaki_log_hexdump_raw(ChiakiLog *log, ChiakiLogLevel level, } #endif -#endif // CHIAKI_LOG_H +#endif //CHIAKI_LOG_H diff --git a/lib/include/chiaki/session.h b/lib/include/chiaki/session.h index 611b161..7b7fbfa 100644 --- a/lib/include/chiaki/session.h +++ b/lib/include/chiaki/session.h @@ -171,7 +171,7 @@ typedef struct chiaki_session_t ChiakiCtrl ctrl; - ChiakiLog log; + ChiakiLog *log; ChiakiStreamConnection stream_connection; ChiakiAudioReceiver *audio_receiver; @@ -180,7 +180,7 @@ typedef struct chiaki_session_t ChiakiControllerState controller_state; } ChiakiSession; -CHIAKI_EXPORT ChiakiErrorCode chiaki_session_init(ChiakiSession *session, ChiakiConnectInfo *connect_info); +CHIAKI_EXPORT ChiakiErrorCode chiaki_session_init(ChiakiSession *session, ChiakiConnectInfo *connect_info, ChiakiLog *log); CHIAKI_EXPORT void chiaki_session_fini(ChiakiSession *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_start(ChiakiSession *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_stop(ChiakiSession *session); diff --git a/lib/src/audioreceiver.c b/lib/src/audioreceiver.c index 4a5ec99..ffd0ec1 100644 --- a/lib/src/audioreceiver.c +++ b/lib/src/audioreceiver.c @@ -27,7 +27,7 @@ static void chiaki_audio_receiver_frame(ChiakiAudioReceiver *audio_receiver, Chi CHIAKI_EXPORT ChiakiErrorCode chiaki_audio_receiver_init(ChiakiAudioReceiver *audio_receiver, ChiakiSession *session) { audio_receiver->session = session; - audio_receiver->log = &session->log; + audio_receiver->log = session->log; audio_receiver->opus_decoder = NULL; memset(&audio_receiver->audio_header, 0, sizeof(audio_receiver->audio_header)); diff --git a/lib/src/ctrl.c b/lib/src/ctrl.c index 5400a77..5ac64a6 100644 --- a/lib/src/ctrl.c +++ b/lib/src/ctrl.c @@ -94,7 +94,7 @@ static void *ctrl_thread_func(void *user) return NULL; } - CHIAKI_LOGI(&ctrl->session->log, "Ctrl connected"); + CHIAKI_LOGI(ctrl->session->log, "Ctrl connected"); while(true) { @@ -108,7 +108,7 @@ static void *ctrl_thread_func(void *user) { if(8 + payload_size > sizeof(ctrl->recv_buf)) { - CHIAKI_LOGE(&ctrl->session->log, "Ctrl buffer overflow!"); + CHIAKI_LOGE(ctrl->session->log, "Ctrl buffer overflow!"); overflow = true; } break; @@ -133,7 +133,7 @@ static void *ctrl_thread_func(void *user) if(err != CHIAKI_ERR_SUCCESS) { if(err == CHIAKI_ERR_CANCELED) - CHIAKI_LOGI(&ctrl->session->log, "Ctrl requested to stop"); + CHIAKI_LOGI(ctrl->session->log, "Ctrl requested to stop"); break; } @@ -165,7 +165,7 @@ static ChiakiErrorCode ctrl_message_send(ChiakiCtrl *ctrl, CtrlMessageType type, ssize_t sent = send(ctrl->sock, header, sizeof(header), 0); if(sent < 0) { - CHIAKI_LOGE(&ctrl->session->log, "Failed to send Ctrl Message Header"); + CHIAKI_LOGE(ctrl->session->log, "Failed to send Ctrl Message Header"); return CHIAKI_ERR_NETWORK; } @@ -174,7 +174,7 @@ static ChiakiErrorCode ctrl_message_send(ChiakiCtrl *ctrl, CtrlMessageType type, sent = send(ctrl->sock, payload, payload_size, 0); if(sent < 0) { - CHIAKI_LOGE(&ctrl->session->log, "Failed to send Ctrl Message Payload"); + CHIAKI_LOGE(ctrl->session->log, "Failed to send Ctrl Message Payload"); return CHIAKI_ERR_NETWORK; } } @@ -193,7 +193,7 @@ static void ctrl_message_received(ChiakiCtrl *ctrl, uint16_t msg_type, uint8_t * ChiakiErrorCode err = chiaki_rpcrypt_decrypt(&ctrl->session->rpcrypt, ctrl->crypt_counter_remote++, payload, payload, payload_size); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&ctrl->session->log, "Failed to decrypt payload for Ctrl Message type %#x", msg_type); + CHIAKI_LOGE(ctrl->session->log, "Failed to decrypt payload for Ctrl Message type %#x", msg_type); return; } } @@ -207,7 +207,7 @@ static void ctrl_message_received(ChiakiCtrl *ctrl, uint16_t msg_type, uint8_t * ctrl_message_received_heartbeat_req(ctrl, payload, payload_size); break; default: - CHIAKI_LOGW(&ctrl->session->log, "Received Ctrl Message with unknown type %#x", msg_type); + CHIAKI_LOGW(ctrl->session->log, "Received Ctrl Message with unknown type %#x", msg_type); break; } } @@ -217,13 +217,13 @@ static void ctrl_message_received_session_id(ChiakiCtrl *ctrl, uint8_t *payload, { if(ctrl->session->ctrl_session_id_received) { - CHIAKI_LOGW(&ctrl->session->log, "Received another Session Id Message"); + CHIAKI_LOGW(ctrl->session->log, "Received another Session Id Message"); return; } if(payload_size < 2 || (char)payload[0] != 'J') { - CHIAKI_LOGE(&ctrl->session->log, "Invalid Session Id received"); + CHIAKI_LOGE(ctrl->session->log, "Invalid Session Id received"); return; } @@ -233,7 +233,7 @@ static void ctrl_message_received_session_id(ChiakiCtrl *ctrl, uint8_t *payload, if(payload_size >= CHIAKI_SESSION_ID_SIZE_MAX - 1) { - CHIAKI_LOGE(&ctrl->session->log, "Received Session Id is too long"); + CHIAKI_LOGE(ctrl->session->log, "Received Session Id is too long"); return; } @@ -246,7 +246,7 @@ static void ctrl_message_received_session_id(ChiakiCtrl *ctrl, uint8_t *payload, continue; if(c >= '0' && c <= '9') continue; - CHIAKI_LOGE(&ctrl->session->log, "Received Session Id contains invalid characters"); + CHIAKI_LOGE(ctrl->session->log, "Received Session Id contains invalid characters"); return; } @@ -257,15 +257,15 @@ static void ctrl_message_received_session_id(ChiakiCtrl *ctrl, uint8_t *payload, chiaki_mutex_unlock(&ctrl->session->state_mutex); chiaki_cond_signal(&ctrl->session->state_cond); - CHIAKI_LOGI(&ctrl->session->log, "Received valid Session Id: %s", ctrl->session->session_id); + CHIAKI_LOGI(ctrl->session->log, "Received valid Session Id: %s", ctrl->session->session_id); } static void ctrl_message_received_heartbeat_req(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size) { if(payload_size != 0) - CHIAKI_LOGW(&ctrl->session->log, "Received Heartbeat request with non-empty payload"); + CHIAKI_LOGW(ctrl->session->log, "Received Heartbeat request with non-empty payload"); - CHIAKI_LOGI(&ctrl->session->log, "Received Ctrl Heartbeat, sending reply"); + CHIAKI_LOGI(ctrl->session->log, "Received Ctrl Heartbeat, sending reply"); ctrl_message_send(ctrl, CTRL_MESSAGE_TYPE_HEARTBEAT_REP, NULL, 0); } @@ -322,7 +322,7 @@ static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl) int sock = socket(sa->sa_family, SOCK_STREAM, IPPROTO_TCP); if(sock < 0) { - CHIAKI_LOGE(&session->log, "Session ctrl socket creation failed."); + CHIAKI_LOGE(session->log, "Session ctrl socket creation failed."); ctrl_failed(ctrl, CHIAKI_QUIT_REASON_CTRL_UNKNOWN); return CHIAKI_ERR_NETWORK; } @@ -332,13 +332,13 @@ static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl) if(r < 0) { int errsv = errno; - CHIAKI_LOGE(&session->log, "Ctrl connect failed: %s", strerror(errsv)); + CHIAKI_LOGE(session->log, "Ctrl connect failed: %s", strerror(errsv)); ctrl_failed(ctrl, errsv == ECONNREFUSED ? CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED : CHIAKI_QUIT_REASON_CTRL_UNKNOWN); close(sock); return CHIAKI_ERR_NETWORK; } - CHIAKI_LOGI(&session->log, "Connected to %s:%d", session->connect_info.hostname, SESSION_CTRL_PORT); + CHIAKI_LOGI(session->log, "Connected to %s:%d", session->connect_info.hostname, SESSION_CTRL_PORT); uint8_t auth_enc[CHIAKI_KEY_BYTES]; @@ -392,12 +392,12 @@ static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl) if(request_len < 0 || request_len >= sizeof(buf)) goto error; - CHIAKI_LOGI(&session->log, "Sending ctrl request"); + CHIAKI_LOGI(session->log, "Sending ctrl request"); ssize_t sent = send(sock, buf, (size_t)request_len, 0); if(sent < 0) { - CHIAKI_LOGE(&session->log, "Failed to send ctrl request"); + CHIAKI_LOGE(session->log, "Failed to send ctrl request"); goto error; } @@ -407,7 +407,7 @@ static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl) if(err != CHIAKI_ERR_SUCCESS) { if(err != CHIAKI_ERR_CANCELED) - CHIAKI_LOGE(&session->log, "Failed to receive ctrl request response"); + CHIAKI_LOGE(session->log, "Failed to receive ctrl request response"); goto error; } @@ -415,7 +415,7 @@ static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl) err = chiaki_http_response_parse(&http_response, buf, header_size); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "Failed to parse ctrl request response"); + CHIAKI_LOGE(session->log, "Failed to parse ctrl request response"); goto error; } @@ -440,7 +440,7 @@ static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl) } if(!response.server_type_valid) - CHIAKI_LOGE(&session->log, "No valid Server Type in ctrl response"); + CHIAKI_LOGE(session->log, "No valid Server Type in ctrl response"); ctrl->sock = sock; diff --git a/lib/src/senkusha.c b/lib/src/senkusha.c index fa8ab4b..6f1d637 100644 --- a/lib/src/senkusha.c +++ b/lib/src/senkusha.c @@ -48,7 +48,7 @@ static ChiakiErrorCode senkusha_send_disconnect(ChiakiSenkusha *senkusha); CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_init(ChiakiSenkusha *senkusha, ChiakiSession *session) { senkusha->session = session; - senkusha->log = &session->log; + senkusha->log = session->log; ChiakiErrorCode err = chiaki_mutex_init(&senkusha->state_mutex, false); if(err != CHIAKI_ERR_SUCCESS) @@ -129,7 +129,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha) free(takion_info.sa); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "Senkusha connect failed"); + CHIAKI_LOGE(session->log, "Senkusha connect failed"); QUIT(quit); } @@ -138,17 +138,17 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha) if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) - CHIAKI_LOGE(&session->log, "Senkusha connect timeout"); + CHIAKI_LOGE(session->log, "Senkusha connect timeout"); if(senkusha->should_stop) err = CHIAKI_ERR_CANCELED; else - CHIAKI_LOGE(&session->log, "Senkusha Takion connect failed"); + CHIAKI_LOGE(session->log, "Senkusha Takion connect failed"); QUIT(quit_takion); } - CHIAKI_LOGI(&session->log, "Senkusha sending big"); + CHIAKI_LOGI(session->log, "Senkusha sending big"); senkusha->state = STATE_EXPECT_BANG; senkusha->state_finished = false; @@ -156,7 +156,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha) err = senkusha_send_big(senkusha); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "Senkusha failed to send big"); + CHIAKI_LOGE(session->log, "Senkusha failed to send big"); QUIT(quit_takion); } @@ -166,21 +166,21 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha) if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) - CHIAKI_LOGE(&session->log, "Senkusha bang receive timeout"); + CHIAKI_LOGE(session->log, "Senkusha bang receive timeout"); if(senkusha->should_stop) err = CHIAKI_ERR_CANCELED; else - CHIAKI_LOGE(&session->log, "Senkusha didn't receive bang"); + CHIAKI_LOGE(session->log, "Senkusha didn't receive bang"); QUIT(quit_takion); } - CHIAKI_LOGI(&session->log, "Senkusha successfully received bang"); + CHIAKI_LOGI(session->log, "Senkusha successfully received bang"); // TODO: Do the actual tests - CHIAKI_LOGI(&session->log, "Senkusha is disconnecting"); + CHIAKI_LOGI(session->log, "Senkusha is disconnecting"); senkusha_send_disconnect(senkusha); chiaki_mutex_unlock(&senkusha->state_mutex); @@ -188,7 +188,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha) err = CHIAKI_ERR_SUCCESS; quit_takion: chiaki_takion_close(&senkusha->takion); - CHIAKI_LOGI(&session->log, "Senkusha closed takion"); + CHIAKI_LOGI(session->log, "Senkusha closed takion"); quit: return err; } diff --git a/lib/src/session.c b/lib/src/session.c index 5c293ff..5044a9b 100644 --- a/lib/src/session.c +++ b/lib/src/session.c @@ -114,11 +114,11 @@ CHIAKI_EXPORT const char *chiaki_quit_reason_string(ChiakiQuitReason reason) static void *session_thread_func(void *arg); -CHIAKI_EXPORT ChiakiErrorCode chiaki_session_init(ChiakiSession *session, ChiakiConnectInfo *connect_info) +CHIAKI_EXPORT ChiakiErrorCode chiaki_session_init(ChiakiSession *session, ChiakiConnectInfo *connect_info, ChiakiLog *log) { memset(session, 0, sizeof(ChiakiSession)); - chiaki_log_init(&session->log, CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE, NULL, NULL); + session->log = log; session->quit_reason = CHIAKI_QUIT_REASON_NONE; @@ -140,7 +140,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_session_init(ChiakiSession *session, Chiaki err = chiaki_stream_connection_init(&session->stream_connection, session); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "StreamConnection init failed"); + CHIAKI_LOGE(session->log, "StreamConnection init failed"); goto error_stop_pipe; } @@ -279,20 +279,20 @@ static void *session_thread_func(void *arg) CHECK_STOP(quit); - CHIAKI_LOGI(&session->log, "Starting session request"); + CHIAKI_LOGI(session->log, "Starting session request"); success = session_thread_request_session(session); if(!success) QUIT(quit); - CHIAKI_LOGI(&session->log, "Session request successful"); + CHIAKI_LOGI(session->log, "Session request successful"); chiaki_rpcrypt_init(&session->rpcrypt, session->nonce, session->connect_info.morning); // PS4 doesn't always react right away, sleep a bit chiaki_cond_timedwait_pred(&session->state_cond, &session->state_mutex, 10, session_check_state_pred, session); - CHIAKI_LOGI(&session->log, "Starting ctrl"); + CHIAKI_LOGI(session->log, "Starting ctrl"); ChiakiErrorCode err = chiaki_ctrl_start(&session->ctrl, session); if(err != CHIAKI_ERR_SUCCESS) @@ -303,14 +303,14 @@ static void *session_thread_func(void *arg) if(!session->ctrl_session_id_received) { - CHIAKI_LOGE(&session->log, "Ctrl has failed, shutting down"); + CHIAKI_LOGE(session->log, "Ctrl has failed, shutting down"); if(session->quit_reason == CHIAKI_QUIT_REASON_NONE) session->quit_reason = CHIAKI_QUIT_REASON_CTRL_UNKNOWN; QUIT(quit_ctrl); } #ifdef ENABLE_SENKUSHA - CHIAKI_LOGI(&session->log, "Starting Senkusha"); + CHIAKI_LOGI(session->log, "Starting Senkusha"); ChiakiSenkusha senkusha; err = chiaki_senkusha_init(&senkusha, session); @@ -322,11 +322,11 @@ static void *session_thread_func(void *arg) if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "Senkusha failed"); + CHIAKI_LOGE(session->log, "Senkusha failed"); QUIT(quit_ctrl); } - CHIAKI_LOGI(&session->log, "Senkusha completed successfully"); + CHIAKI_LOGI(session->log, "Senkusha completed successfully"); #endif // TODO: Senkusha should set that @@ -336,28 +336,28 @@ static void *session_thread_func(void *arg) err = chiaki_random_bytes(session->handshake_key, sizeof(session->handshake_key)); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "Session failed to generate handshake key"); + CHIAKI_LOGE(session->log, "Session failed to generate handshake key"); QUIT(quit_ctrl); } err = chiaki_ecdh_init(&session->ecdh); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "Session failed to initialize ECDH"); + CHIAKI_LOGE(session->log, "Session failed to initialize ECDH"); QUIT(quit_ctrl); } session->audio_receiver = chiaki_audio_receiver_new(session); if(!session->audio_receiver) { - CHIAKI_LOGE(&session->log, "Session failed to initialize Audio Receiver"); + CHIAKI_LOGE(session->log, "Session failed to initialize Audio Receiver"); QUIT(quit_ecdh); } session->video_receiver = chiaki_video_receiver_new(session); if(!session->video_receiver) { - CHIAKI_LOGE(&session->log, "Session failed to initialize Video Receiver"); + CHIAKI_LOGE(session->log, "Session failed to initialize Video Receiver"); QUIT(quit_audio_receiver); } @@ -366,18 +366,18 @@ static void *session_thread_func(void *arg) chiaki_mutex_lock(&session->state_mutex); if(err == CHIAKI_ERR_DISCONNECTED) { - CHIAKI_LOGE(&session->log, "Remote disconnected from StreamConnection"); + CHIAKI_LOGE(session->log, "Remote disconnected from StreamConnection"); session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED; session->quit_reason_str = strdup(session->stream_connection.remote_disconnect_reason); } else if(err != CHIAKI_ERR_SUCCESS && err != CHIAKI_ERR_CANCELED) { - CHIAKI_LOGE(&session->log, "StreamConnection run failed"); + CHIAKI_LOGE(session->log, "StreamConnection run failed"); session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_UNKNOWN; } else { - CHIAKI_LOGI(&session->log, "StreamConnection completed successfully"); + CHIAKI_LOGI(session->log, "StreamConnection completed successfully"); session->quit_reason = CHIAKI_QUIT_REASON_STOPPED; } @@ -396,12 +396,12 @@ quit_ecdh: quit_ctrl: chiaki_ctrl_stop(&session->ctrl); chiaki_ctrl_join(&session->ctrl); - CHIAKI_LOGI(&session->log, "Ctrl stopped"); + CHIAKI_LOGI(session->log, "Ctrl stopped"); ChiakiEvent quit_event; quit: - CHIAKI_LOGI(&session->log, "Session has quit"); + CHIAKI_LOGI(session->log, "Session has quit"); quit_event.type = CHIAKI_EVENT_QUIT; quit_event.quit.reason = session->quit_reason; quit_event.quit.reason_str = session->quit_reason_str; @@ -477,7 +477,7 @@ static bool session_thread_request_session(ChiakiSession *session) continue; } - CHIAKI_LOGI(&session->log, "Trying to request session from %s:%d", session->connect_info.hostname, SESSION_PORT); + CHIAKI_LOGI(session->log, "Trying to request session from %s:%d", session->connect_info.hostname, SESSION_PORT); session_sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if(session_sock < 0) @@ -486,7 +486,7 @@ static bool session_thread_request_session(ChiakiSession *session) if(r < 0) { int errsv = errno; - CHIAKI_LOGE(&session->log, "Session request connect failed: %s", strerror(errsv)); + CHIAKI_LOGE(session->log, "Session request connect failed: %s", strerror(errsv)); if(errsv == ECONNREFUSED) session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_CONNECTION_REFUSED; else @@ -505,13 +505,13 @@ static bool session_thread_request_session(ChiakiSession *session) if(session_sock < 0) { - CHIAKI_LOGE(&session->log, "Session request connect failed eventually."); + CHIAKI_LOGE(session->log, "Session request connect failed eventually."); if(session->quit_reason == CHIAKI_QUIT_REASON_NONE) session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return false; } - CHIAKI_LOGI(&session->log, "Connected to %s:%d", session->connect_info.hostname, SESSION_PORT); + CHIAKI_LOGI(session->log, "Connected to %s:%d", session->connect_info.hostname, SESSION_PORT); static const char session_request_fmt[] = "GET /sce/rp/session HTTP/1.1\r\n" @@ -533,12 +533,12 @@ static bool session_thread_request_session(ChiakiSession *session) return false; } - CHIAKI_LOGI(&session->log, "Sending session request"); + CHIAKI_LOGI(session->log, "Sending session request"); ssize_t sent = send(session_sock, buf, (size_t)request_len, 0); if(sent < 0) { - CHIAKI_LOGE(&session->log, "Failed to send session request"); + CHIAKI_LOGE(session->log, "Failed to send session request"); close(session_sock); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return false; @@ -558,7 +558,7 @@ static bool session_thread_request_session(ChiakiSession *session) } else { - CHIAKI_LOGE(&session->log, "Failed to receive session request response"); + CHIAKI_LOGE(session->log, "Failed to receive session request response"); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; } close(session_sock); @@ -569,7 +569,7 @@ static bool session_thread_request_session(ChiakiSession *session) err = chiaki_http_response_parse(&http_response, buf, header_size); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "Failed to parse session request response"); + CHIAKI_LOGE(session->log, "Failed to parse session request response"); close(session_sock); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return false; @@ -584,7 +584,7 @@ static bool session_thread_request_session(ChiakiSession *session) err = chiaki_base64_decode(response.nonce, strlen(response.nonce), session->nonce, &nonce_len); if(err != CHIAKI_ERR_SUCCESS || nonce_len != CHIAKI_KEY_BYTES) { - CHIAKI_LOGE(&session->log, "Nonce invalid"); + CHIAKI_LOGE(session->log, "Nonce invalid"); response.success = false; session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; } @@ -594,11 +594,11 @@ static bool session_thread_request_session(ChiakiSession *session) switch(response.error_code) { case RP_APPLICATION_REASON_IN_USE: - CHIAKI_LOGE(&session->log, "Remote is already in use"); + CHIAKI_LOGE(session->log, "Remote is already in use"); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_IN_USE; break; case RP_APPLICATION_REASON_CRASH: - CHIAKI_LOGE(&session->log, "Remote seems to have crashed"); + CHIAKI_LOGE(session->log, "Remote seems to have crashed"); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_CRASH; break; default: diff --git a/lib/src/log.c b/lib/src/sessionlog.c similarity index 100% rename from lib/src/log.c rename to lib/src/sessionlog.c diff --git a/lib/src/streamconnection.c b/lib/src/streamconnection.c index b1c17eb..4f6c7fb 100644 --- a/lib/src/streamconnection.c +++ b/lib/src/streamconnection.c @@ -66,7 +66,7 @@ static ChiakiErrorCode stream_connection_send_heartbeat(ChiakiStreamConnection * CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_init(ChiakiStreamConnection *stream_connection, ChiakiSession *session) { stream_connection->session = session; - stream_connection->log = &session->log; + stream_connection->log = session->log; stream_connection->ecdh_secret = NULL; stream_connection->gkcrypt_remote = NULL; @@ -159,7 +159,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnectio free(takion_info.sa); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "StreamConnection connect failed"); + CHIAKI_LOGE(session->log, "StreamConnection connect failed"); chiaki_mutex_unlock(&stream_connection->state_mutex); return err; } @@ -169,11 +169,11 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnectio CHECK_STOP(close_takion); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "StreamConnection Takion connect failed"); + CHIAKI_LOGE(session->log, "StreamConnection Takion connect failed"); goto close_takion; } - CHIAKI_LOGI(&session->log, "StreamConnection sending big"); + CHIAKI_LOGI(session->log, "StreamConnection sending big"); stream_connection->state = STATE_EXPECT_BANG; stream_connection->state_finished = false; @@ -181,7 +181,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnectio err = stream_connection_send_big(stream_connection); if(err != CHIAKI_ERR_SUCCESS) { - CHIAKI_LOGE(&session->log, "StreamConnection failed to send big"); + CHIAKI_LOGE(session->log, "StreamConnection failed to send big"); goto disconnect; } @@ -192,14 +192,14 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnectio if(!stream_connection->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) - CHIAKI_LOGE(&session->log, "StreamConnection bang receive timeout"); + CHIAKI_LOGE(session->log, "StreamConnection bang receive timeout"); - CHIAKI_LOGE(&session->log, "StreamConnection didn't receive bang or failed to handle it"); + CHIAKI_LOGE(session->log, "StreamConnection didn't receive bang or failed to handle it"); err = CHIAKI_ERR_UNKNOWN; goto disconnect; } - CHIAKI_LOGI(&session->log, "StreamConnection successfully received bang"); + CHIAKI_LOGI(session->log, "StreamConnection successfully received bang"); stream_connection->state = STATE_EXPECT_STREAMINFO; stream_connection->state_finished = false; @@ -211,14 +211,14 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnectio if(!stream_connection->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) - CHIAKI_LOGE(&session->log, "StreamConnection streaminfo receive timeout"); + CHIAKI_LOGE(session->log, "StreamConnection streaminfo receive timeout"); - CHIAKI_LOGE(&session->log, "StreamConnection didn't receive streaminfo"); + CHIAKI_LOGE(session->log, "StreamConnection didn't receive streaminfo"); err = CHIAKI_ERR_UNKNOWN; goto disconnect; } - CHIAKI_LOGI(&session->log, "StreamConnection successfully received streaminfo"); + CHIAKI_LOGI(session->log, "StreamConnection successfully received streaminfo"); err = chiaki_mutex_lock(&stream_connection->feedback_sender_mutex); assert(err == CHIAKI_ERR_SUCCESS); @@ -258,7 +258,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnectio err = CHIAKI_ERR_SUCCESS; disconnect: - CHIAKI_LOGI(&session->log, "StreamConnection is disconnecting"); + CHIAKI_LOGI(session->log, "StreamConnection is disconnecting"); stream_connection_send_disconnect(stream_connection); if(stream_connection->should_stop) @@ -276,7 +276,7 @@ close_takion: chiaki_mutex_unlock(&stream_connection->state_mutex); chiaki_takion_close(&stream_connection->takion); - CHIAKI_LOGI(&session->log, "StreamConnection closed takion"); + CHIAKI_LOGI(session->log, "StreamConnection closed takion"); return err; } @@ -535,7 +535,7 @@ static bool pb_decode_resolution(pb_istream_t *stream, const pb_field_t *field, if(!header_buf.buf) { - CHIAKI_LOGE(&ctx->stream_connection->session->log, "Failed to decode video header"); + CHIAKI_LOGE(ctx->stream_connection->session->log, "Failed to decode video header"); return true; } @@ -543,14 +543,14 @@ static bool pb_decode_resolution(pb_istream_t *stream, const pb_field_t *field, if(!header_buf_padded) { free(header_buf.buf); - CHIAKI_LOGE(&ctx->stream_connection->session->log, "Failed to realloc video header with padding"); + CHIAKI_LOGE(ctx->stream_connection->session->log, "Failed to realloc video header with padding"); return true; } memset(header_buf_padded + header_buf.size, 0, CHIAKI_VIDEO_BUFFER_PADDING_SIZE); if(ctx->video_profiles_count >= CHIAKI_VIDEO_PROFILES_MAX) { - CHIAKI_LOGE(&ctx->stream_connection->session->log, "Received more resolutions than the maximum"); + CHIAKI_LOGE(ctx->stream_connection->session->log, "Received more resolutions than the maximum"); return true; } diff --git a/lib/src/videoreceiver.c b/lib/src/videoreceiver.c index 879ecbf..b97e2ea 100644 --- a/lib/src/videoreceiver.c +++ b/lib/src/videoreceiver.c @@ -25,7 +25,7 @@ static ChiakiErrorCode chiaki_video_receiver_flush_frame(ChiakiVideoReceiver *vi CHIAKI_EXPORT void chiaki_video_receiver_init(ChiakiVideoReceiver *video_receiver, struct chiaki_session_t *session) { video_receiver->session = session; - video_receiver->log = &session->log; + video_receiver->log = session->log; memset(video_receiver->profiles, 0, sizeof(video_receiver->profiles)); video_receiver->profiles_count = 0; video_receiver->profile_cur = -1;