plasma: rough draft of peer struct

This commit is contained in:
Olaoluwa Osuntokun 2015-12-20 15:16:38 -06:00
parent d2e3b376ea
commit d5f36d81c8
2 changed files with 80 additions and 0 deletions

79
peer.go Normal file
View File

@ -0,0 +1,79 @@
package main
import (
"sync"
"time"
"li.lan/labs/plasma/lnwallet"
)
// channelState...
type channelState uint8
const (
// TODO(roasbeef): others??
channelPending channelState = iota
channelOpen
channelClosed
channelDispute
channelPendingPayment
)
const (
numAllowedRetransmits = 5
)
// peer...
// TODO(roasbeef): make this a package now??
// inspired by btcd/peer.go
// * three goroutines
// * inHandler
// * ourHandler
// * queueHandler (maybe?), we don't have any trickling issues so idk
type peer struct {
started int32
connected int32
disconnect int32 // only to be used atomically
// conn *ETcpConn or w/e it is in strux
// TODO(rosabeef): one for now, may need more granularity
sync.RWMutex
addr string
lnID [32]byte // TODO(roasbeef): copy from strux
inbound bool
protocolVersion uint32
// For purposes of detecting retransmits, etc.
// lastNMessages map[lnwire.Message]struct{}
timeConnected time.Time
lastSend time.Time
lastRecv time.Time
bytesReceived uint64
bytesSent uint64
satoshisSent uint64
satoshisReceived uint64
// TODO(roasbeef): pings??
sendQueueDone chan struct{}
// outgoingQueue chan lnwire.Message
// sendQueue chan lnwire.Message
// TODO(roasbeef+j): something like?
// type Message {
// Decode(uint32) error
// Encode(uint32) error
// Command() string
//}
// TODO(roasbeef): akward import, just rename to Wallet?
wallet *lnwallet.LightningWallet
// Only will be set if the channel is in the 'pending' state.
reservation *lnwallet.ChannelReservation
channel *lnwallet.LightningChannel // TODO(roasbeef): rename to PaymentChannel??
queueQuit chan struct{}
quit chan struct{}
}

1
peer_test.go Normal file
View File

@ -0,0 +1 @@
package main