int Log::LogV(const std::string &s) { if (d_callback) d_callback(Log::L_VERBOSE,std::string("[VERB] ")+s+'\n'); d_logfile_stream << "[V]" << s << std::endl; return ESUCCESS; }
int Log::LogW(const std::string &s) { d_logfile_stream << "[W]" << s << std::endl; if (d_callback) d_callback(Log::L_WARNING,std::string("[WARN] ")+s+'\n'); return ESUCCESS; }
int PipeControlChannel::readNamedPipe() { BALL_LOG_SET_CATEGORY(LOG_CATEGORY); BSLS_ASSERT(INVALID_HANDLE_VALUE != d_impl.d_windows.d_handle); BALL_LOG_TRACE << "Accepting next pipe client connection" << BALL_LOG_END; if (!ConnectNamedPipe(d_impl.d_windows.d_handle, NULL)) { BALL_LOG_TRACE << "Connecting to named pipe '" << d_pipeName << "': " << describeWin32Error(GetLastError()) << BALL_LOG_END; DWORD lastError = GetLastError(); if (lastError != ERROR_PIPE_CONNECTED && lastError != ERROR_NO_DATA) { BALL_LOG_TRACE << "Failed to connect to named pipe '" << d_pipeName << "'" << BALL_LOG_END; return -1; } } while(1) { char buffer[MAX_PIPE_BUFFER_LEN]; DWORD bytesRead = 0; if (ReadFile(d_impl.d_windows.d_handle, buffer, MAX_PIPE_BUFFER_LEN, &bytesRead, NULL)) { if (bytesRead > 0) { if (buffer[bytesRead - 1] == '\n') { bytesRead--; } bslstl::StringRef stringRef(buffer, bytesRead); if (!stringRef.isEmpty()) { d_callback(stringRef); } } else { // reached EOF on a named pipe. break; } } else { BALL_LOG_TRACE << "Failed to read from named pipe '" << d_pipeName << "': " << describeWin32Error(GetLastError()) << BALL_LOG_END; break; } } DisconnectNamedPipe(d_impl.d_windows.d_handle); return 0; }
int Log::LogE(const std::string &s) { d_logfile_stream << "[E]" << s << std::endl; if (d_callback) d_callback(Log::L_ERROR,std::string("[ERR] ")+s+'\n'); /*log to std console -- remove me*/ std::cout << s << std::endl; std::cout.flush(); d_logfile_stream.flush(); return ESUCCESS; }
static void _guiGtkMenuItem_activateCallback (GuiObject widget, gpointer void_me) { iam (GuiMenuItem); if (my d_callbackBlocked) return; if (G_OBJECT_TYPE (widget) == GTK_TYPE_RADIO_MENU_ITEM && ! gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) return; struct structGuiMenuItemEvent event { me, false, false, false, false }; if (my d_callback) { try { my d_callback (my d_boss, & event); } catch (MelderError) { Melder_flushError (U"Your choice of menu item \"", Melder_peek8to32 (GTK_WIDGET (widget) -> name), U"\" was not completely handled."); } } }
void PipeControlChannel::dispatchMessageUpTo( const bsl::vector<char>::iterator& iter) { BALL_LOG_SET_CATEGORY(LOG_CATEGORY); bslstl::StringRef stringRef(&(*d_buffer.begin()), iter - d_buffer.begin()); BALL_LOG_TRACE << "Assembled complete message '" << (bsl::string)stringRef << "'" << BALL_LOG_END; if (!stringRef.isEmpty()) { d_callback(stringRef); } d_buffer.erase(d_buffer.begin(), iter+1); }