Sha256: f241921b361c58a300008493a1e4db7a11133f009e4be7bc3717e4fd77b3e0c7

Contents?: true

Size: 1.5 KB

Versions: 30

Compression:

Stored size: 1.5 KB

Contents

module Bitcoin

  module Network

    # Basic Bitcoin P2P connection class
    class Connection < EM::Connection

      include MessageHandler

      attr_reader :peer, :logger

      # remote peer version.
      attr_accessor :version

      # if true, this peer send new block announcements using a headers message rather than an inv message.
      attr_accessor :sendheaders

      # minimum fee(in satoshis per kilobyte) for relay tx
      attr_accessor :fee_rate

      def initialize(peer)
        @peer = peer
        @logger = peer.logger
        @sendheaders = false
        @attr_accessor = 0
        @message = ''
        self.pending_connect_timeout = 5.0
      end

      def post_init
        logger.info "connected. #{addr}"
        peer.conn_time = Time.now.to_i
        begin_handshake
      end

      # handle receiving data from remote node.
      def receive_data(data)
        handle(data)
      end

      def post_handshake
        peer.post_handshake
      end

      def addr
        peer.addr
      end

      # close network connection.
      def close(msg = '')
        logger.info "close connection with #{addr}. #{msg}"
        close_connection_after_writing
      end

      def handle_error(e)
        peer.handle_error(e)
      end

      def unbind
        logger.info "unbind. #{addr}"
        peer.unbind
      end

      private

      # start handshake
      def begin_handshake
        logger.info "begin handshake with #{addr}"
        send_message(peer.local_version)
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
bitcoinrb-1.8.0 lib/bitcoin/network/connection.rb
bitcoinrb-1.7.0 lib/bitcoin/network/connection.rb
bitcoinrb-1.6.0 lib/bitcoin/network/connection.rb
bitcoinrb-1.5.0 lib/bitcoin/network/connection.rb
bitcoinrb-1.4.0 lib/bitcoin/network/connection.rb
bitcoinrb-1.3.0 lib/bitcoin/network/connection.rb
bitcoinrb-1.2.1 lib/bitcoin/network/connection.rb
bitcoinrb-1.2.0 lib/bitcoin/network/connection.rb
bitcoinrb-1.1.1 lib/bitcoin/network/connection.rb
bitcoinrb-1.1.0 lib/bitcoin/network/connection.rb
bitcoinrb-1.0.0 lib/bitcoin/network/connection.rb
bitcoinrb-0.9.0 lib/bitcoin/network/connection.rb
bitcoinrb-0.8.0 lib/bitcoin/network/connection.rb
bitcoinrb-0.7.0 lib/bitcoin/network/connection.rb
bitcoinrb-0.6.0 lib/bitcoin/network/connection.rb
bitcoinrb-0.5.0 lib/bitcoin/network/connection.rb
bitcoinrb-0.4.0 lib/bitcoin/network/connection.rb
bitcoinrb-0.3.2 lib/bitcoin/network/connection.rb
bitcoinrb-0.3.1 lib/bitcoin/network/connection.rb
bitcoinrb-0.3.0 lib/bitcoin/network/connection.rb