From 1deee0f7f13d39600fc95d9b5485dae12e24e3e6 Mon Sep 17 00:00:00 2001 From: Karchnu Date: Sun, 8 Nov 2020 06:27:07 +0100 Subject: [PATCH] websocketc: working and without annoying debug messages. --- src/websocketc.cr | 73 ++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/src/websocketc.cr b/src/websocketc.cr index 46a601a..bce9bcb 100644 --- a/src/websocketc.cr +++ b/src/websocketc.cr @@ -30,9 +30,17 @@ end class Baguette::Configuration class Websocketc < Base - property verbosity : Int32 = 2 - property print_ipc_timer : Bool = false - property ipc_timer : Int32 = 30_000 + property verbosity : Int32 = 2 + + property ipc_timer : Int32 = 30_000 + + property print_ipc_timer : Bool = false + property print_ipc_connection : Bool = false + property print_ipc_disconnection : Bool = false + property print_ipc_extra_socket : Bool = false + property print_ipc_message_received : Bool = false + property print_ipc_message_sent : Bool = false + property print_ipc_switch : Bool = false def initialize end @@ -70,10 +78,6 @@ class Relation end io << "client #{c} service #{s} #{j}" end - - def finalize - Baguette::Log.warning "TADAAAAA" - end end # Hide the complexity of managing relations. @@ -91,12 +95,12 @@ class Relations < Array(Relation) end def remove(fd : Int32) - Baguette::Log.warning "context before removing #{fd}:" - Context.service.not_nil!.print_self + # Baguette::Log.warning "context before removing #{fd}:" + # Context.service.not_nil!.print_self each do |r| if r.related? fd - Baguette::Log.debug "== Closing this relation: #{r}" + Baguette::Log.debug "Closing this relation: #{r}" # Removing relations and file descriptors from C structures. pointer_ctx = Context.service.not_nil!.pointer @@ -105,7 +109,7 @@ class Relations < Array(Relation) LibIPC.ipc_del_fd pointer_ctx, r.fd_service # Close these sockets. - Baguette::Log.debug "Closing both #{r.fd_client} and #{r.fd_service} (ws)" + # Baguette::Log.debug "Closing both #{r.fd_client} and #{r.fd_service} (ws)" begin s = Socket.new r.fd_client, Socket::Family::UNIX, Socket::Type::RAW s.close @@ -130,8 +134,8 @@ class Relations < Array(Relation) end select! {|r| ! r.related? fd } - Baguette::Log.warning "context after remove" - Context.service.not_nil!.print_self + # Baguette::Log.warning "context after removing #{fd}" + # Context.service.not_nil!.print_self end end @@ -139,8 +143,8 @@ require "./network.cr" def ws_cb_in(fd : Int32, pm : LibIPC::Message*, more_to_read : Int16*) Context.service.not_nil!.relations.search?(fd).try do |relation| - Baguette::Log.info "IN fd is #{fd} in relation #{relation}" - Context.service.not_nil!.print_self + # Baguette::Log.info "IN fd is #{fd} in relation #{relation}" + # Context.service.not_nil!.print_self message = nil begin message = relation.ws.run_once @@ -180,26 +184,24 @@ def ws_cb_in(fd : Int32, pm : LibIPC::Message*, more_to_read : Int16*) ipc_message = IPC::Message.from_json m ipc_message.copy_to_message_pointer pm rescue e - Baguette::Log.error "cannot send message coming from #{fd}" - Baguette::Log.error "message: #{m}" + Baguette::Log.error "cannot send message coming from #{fd}, message: #{m}" Context.service.not_nil!.relations.remove fd - Context.service.not_nil!.print_self Baguette::Log.error "error: #{e}" return LibIPC::IPCCB::Error end - Baguette::Log.warning "no error reassembling the message" - Context.service.not_nil!.print_self + Baguette::Log.debug "no error reassembling the message" return LibIPC::IPCCB::NoError end Baguette::Log.error "cannot handle non-json messages!" return LibIPC::IPCCB::Error + when WebSocket::Ping Baguette::Log.debug "TODO: Received a ping message" return LibIPC::IPCCB::Ignore when WebSocket::NotFinal - Baguette::Log.warning "Received only part of a message." + Baguette::Log.debug "Received only part of a message" relation.buffer_client += message.message return LibIPC::IPCCB::Ignore @@ -240,10 +242,10 @@ end def ws_cb_out(fd : Int32, pm : Pointer(LibIPC::Message)) Context.service.not_nil!.relations.search?(fd).try do |relation| - Baguette::Log.info "OUT fd is #{fd} in relation #{relation}" - Context.service.not_nil!.print_self + # Baguette::Log.info "OUT fd is #{fd} in relation #{relation}" + # Context.service.not_nil!.print_self message = IPC::Message.new pm - Baguette::Log.info "message to send: #{message}" + # Baguette::Log.info "message to send: #{message}" if relation.is_json buf = message.to_json @@ -339,39 +341,30 @@ class Websocketc::Service < IPC::Server case event when IPC::Event::Timer Baguette::Log.debug "Timer" if @config.print_ipc_timer - Baguette::Log.debug "Timer: see the context" - print_self + # print_self when IPC::Event::Connection - Baguette::Log.info "connection from #{event.fd}" + Baguette::Log.info "connection from #{event.fd}" if @config.print_ipc_connection when IPC::Event::Disconnection - Baguette::Log.info "disconnection from #{event.fd}" + Baguette::Log.info "disconnection from #{event.fd}" if @config.print_ipc_disconnection @relations.remove event.fd - # begin - # s = Socket.new event.fd, Socket::Family::UNIX, Socket::Type::RAW - # s.close - # rescue e - # Baguette::Log.warning "cannot close the socket #{event.fd}: #{e} (ignoring the problem)" - # end when IPC::Event::MessageSent - Baguette::Log.info "message sent to #{event.fd}" + Baguette::Log.info "message sent to #{event.fd}" if @config.print_ipc_message_sent when IPC::Event::MessageReceived - Baguette::Log.info "message received from #{event.fd}" + Baguette::Log.info "message received from #{event.fd}" if @config.print_ipc_message_received if r = @relations.search? event.fd Baguette::Log.error "MessageReceived but from an already existent relation" Baguette::Log.error "relation: #{r}" exit 1 else first_connection event - Baguette::Log.warning "context currently is" - print_self end when IPC::Event::Switch - # Baguette::Log.debug "switched message from #{event.fd}" + Baguette::Log.debug "switched message from #{event.fd}" if @config.print_ipc_switch when IPC::Event::EventNotSet Baguette::Log.error "Event not set: #{event.fd}" @@ -432,6 +425,8 @@ class Websocketc::Service < IPC::Server end end + Baguette::Context.verbosity = configuration.verbosity + if simulation pp! configuration exit 0