# File ruby/bstream.rb, line 933
        def receiver_loop
          loop {
                begin
                  t,mcode = read(@socket)
          t,msize = read(@socket)
                  dputs ": receiving a message : code=#{mcode} : size=#{msize}"
                  msid = nil
                  case mcode
                  when M_CALL
            buf = read_message_to_buffer(@socket,msize)
                        t,msid = read(buf)
                        c = CallingOject.new.build_by_receiver(msid,buf)
                        dputs ": received: OK : #{c.sid}"
                        received(c)
                  when M_RETURN
            buf = read_message_to_buffer(@socket,msize)
                        t,msid = read(buf)
            dputs ": sid=#{msid}"
                        r = build_result_object(msid,buf)
                        dputs ": received: RET: #{r.sid}"
            @receiving_table[r.sid].push r
                  else
                        dputs ": Unknown message code. try to reset the connection."
            @socket_state = :socket_closing
            @sending_queue.push nil # wakeup sender thread

                        return
                  end # case

                  @socket_lock.synchronize do
                        if @socket_state == :socket_closing then
                          dputs ": receiver-thread terminating..."
                          return
                        end
                  end
                rescue Exception => evar
                  mes = evar.message
                  if msid then
            r = ResultErrObject.new(msid,R_PROTOCOL_ERROR,"ResultObjectError",mes,evar.backtrace.join("\n"))
            @receiving_table[msid].push r
                  end
                  dputs "[rcvloop] #{evar.to_s}"
                  if mes["close"] || mes["reset"] then
                        dputs ": [rcvloop] disconnected by remote host."
                        break
                  elsif evar.kind_of?(IOError) then
                        dputs ": [rcvloop] try to reset the connection."
                        @socket_lock.synchronize do
                          @socket_state = :socket_closing
                        end
                        break
                  else
                        dputs ": [rcvloop] going to recover the communication."
                  end
                ensure
                  dputs ": [rcvloop]--------------"
                end # begin rescue

          } # loop

        end