Sha256: 4637c7964d1c4ffacac0c84739c55e7c8c7e2e79d1ebf23a803249129697b3ae

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 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 = ''
      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
        EM.stop
      end

      def handle_error(e)
        peer.handle_error(e)
      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

4 entries across 4 versions & 1 rubygems

Version Path
bitcoinrb-0.1.7 lib/bitcoin/network/connection.rb
bitcoinrb-0.1.6 lib/bitcoin/network/connection.rb
bitcoinrb-0.1.5 lib/bitcoin/network/connection.rb
bitcoinrb-0.1.4 lib/bitcoin/network/connection.rb