Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ playground.xcworkspace
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Checkouts
Carthage/Build

# fastlane
Expand Down
8 changes: 8 additions & 0 deletions Sources/libp2p/Enums/State.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import Foundation

enum State {
case stopped
case starting
case started
case stopping
}
57 changes: 57 additions & 0 deletions Sources/libp2p/Node/Node.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import Foundation

public class Node {

var delegate: NodeDelegate?

private(set) var state: State {
didSet {
switch (state) {
case .started:
delegate?.nodeDidStart(self)
case .stopped:
delegate?.nodeDidStop(self)
case .starting:
onStarting()
case .stopping:
onStopping()
}
}
}

private(set) var peerBook: PeerBook

init() {
state = .stopped
peerBook = PeerBook()
}

func isStarted() -> Bool {
return state == .started
}

// @todo on the any
func dial(peer: Any, protocol: String) {

}

func dialFSM(peer: Any, protocol: String) {

}

func hangUp(peer: Any) {

}

func ping(peer: Any) {

}

private func onStarting() {

}

private func onStopping() {

}
}
12 changes: 12 additions & 0 deletions Sources/libp2p/Node/NodeDelegate.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import Foundation

public protocol NodeDelegate {

func node(_ node: Node, didEmitError: Error);
func node(_ node: Node, didConnectPeer: PeerInfo);
func node(_ node: Node, didDisconnectPeer: PeerInfo);
func node(_ node: Node, didDiscoverPeer: PeerInfo);
func nodeDidStart(_ node: Node);
func nodeDidStop(_ node: Node);

}
8 changes: 8 additions & 0 deletions Sources/libp2p/Peer/PeerInfo.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import Foundation
import SwiftMultiaddr

public struct PeerInfo {
let id: Data // @todo
let multiaddrs: [Multiaddr]
let protocols: [String] // @todo
}
33 changes: 33 additions & 0 deletions Sources/libp2p/PeerBook.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import Foundation
import SwiftMultiaddr

class PeerBook {

private(set) var peers = [String:PeerInfo]()

func has(_ peer: Any) -> Bool {

}

func put(_ peer: PeerInfo) {

}

func get(_ peer: Any) -> PeerInfo? {
return peers[b58String(peer)]
}

func remove(_ peer: Any) {
peers.removeValue(forKey: b58String(peer))
}

// @todo MultiAddr type
func getMultiAddrs(_ peer: Any) -> [MultiAddr]? {
let info = get(peer)
return info?.multiaddrs
}

func b58String(_ peer: Any) -> String {

}
}
20 changes: 20 additions & 0 deletions Sources/libp2p/TCP/TCP.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import Foundation

class TCP {

// @todo add option
func dial(multiAddress: String) {

}

// @todo
func createListener() {

}

// @todo
func filter(multiAddresses: [String]) {

}

}
3 changes: 0 additions & 3 deletions Sources/libp2p/libp2p.swift

This file was deleted.