Sha256: 55d5db5ca51833a0d6519c558a02dc790500ef04d92c1ea8450aad48b21e5a9a

Contents?: true

Size: 834 Bytes

Versions: 2

Compression:

Stored size: 834 Bytes

Contents

# frozen_string_literal: true

module P2pStreamsChannel
    STATE_SESSION_JOIN = "SessionJoin".freeze
    STATE_SESSION_READY = "SessionReady".freeze
    STATE_CONNECTED = "connected".freeze

    class SessionState
        attr_reader :peers, :host_peer_id

        def initialize(host_peer_id = nil)
            @peers = {}
            @host_peer_id = host_peer_id
        end

        def add_peer(peer_id)
            @peers[peer_id] = true
            @host_peer_id = peer_id if @host_peer_id.nil?
        end

        def remove_peer(peer_id)
            @peers[peer_id] = false
        end

        def num_of_connected_peers
            @peers.count { |peer, connected| connected == true }
        end

        def host_ready?
            @peers[@host_peer_id] == true 
        end
    end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
p2p_streams_channel-0.0.3 lib/p2p_streams_channel/session_state.rb
p2p_streams_channel-0.0.2 lib/p2p_streams_channel/session_state.rb