forked from cerc-io/plugeth
minor rlp things
This commit is contained in:
parent
5a2d62e4d9
commit
5ede1224e4
@ -32,12 +32,14 @@ const (
|
|||||||
RlpEmptyStr = 0x40
|
RlpEmptyStr = 0x40
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const rlpEof = -1
|
||||||
|
|
||||||
func Char(c []byte) int {
|
func Char(c []byte) int {
|
||||||
if len(c) > 0 {
|
if len(c) > 0 {
|
||||||
return int(c[0])
|
return int(c[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0
|
return rlpEof
|
||||||
}
|
}
|
||||||
|
|
||||||
func DecodeWithReader(reader *bytes.Buffer) interface{} {
|
func DecodeWithReader(reader *bytes.Buffer) interface{} {
|
||||||
@ -46,8 +48,6 @@ func DecodeWithReader(reader *bytes.Buffer) interface{} {
|
|||||||
// Read the next byte
|
// Read the next byte
|
||||||
char := Char(reader.Next(1))
|
char := Char(reader.Next(1))
|
||||||
switch {
|
switch {
|
||||||
case char == 0:
|
|
||||||
return nil
|
|
||||||
case char <= 0x7f:
|
case char <= 0x7f:
|
||||||
return char
|
return char
|
||||||
|
|
||||||
@ -63,11 +63,7 @@ func DecodeWithReader(reader *bytes.Buffer) interface{} {
|
|||||||
length := int(char - 0xc0)
|
length := int(char - 0xc0)
|
||||||
for i := 0; i < length; i++ {
|
for i := 0; i < length; i++ {
|
||||||
obj := DecodeWithReader(reader)
|
obj := DecodeWithReader(reader)
|
||||||
if obj != nil {
|
|
||||||
slice = append(slice, obj)
|
slice = append(slice, obj)
|
||||||
} else {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return slice
|
return slice
|
||||||
@ -75,13 +71,12 @@ func DecodeWithReader(reader *bytes.Buffer) interface{} {
|
|||||||
length := ReadVarInt(reader.Next(int(char - 0xf7)))
|
length := ReadVarInt(reader.Next(int(char - 0xf7)))
|
||||||
for i := uint64(0); i < length; i++ {
|
for i := uint64(0); i < length; i++ {
|
||||||
obj := DecodeWithReader(reader)
|
obj := DecodeWithReader(reader)
|
||||||
if obj != nil {
|
|
||||||
slice = append(slice, obj)
|
slice = append(slice, obj)
|
||||||
} else {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return slice
|
||||||
default:
|
default:
|
||||||
|
panic(fmt.Sprintf("byte not supported: %q", char))
|
||||||
}
|
}
|
||||||
|
|
||||||
return slice
|
return slice
|
||||||
|
@ -221,12 +221,15 @@ func (val *Value) Encode() []byte {
|
|||||||
func (self *Value) Decode() {
|
func (self *Value) Decode() {
|
||||||
v, _ := Decode(self.Bytes(), 0)
|
v, _ := Decode(self.Bytes(), 0)
|
||||||
self.Val = v
|
self.Val = v
|
||||||
|
//self.Val = DecodeWithReader(bytes.NewBuffer(self.Bytes()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewValueFromBytes(data []byte) *Value {
|
func NewValueFromBytes(data []byte) *Value {
|
||||||
if len(data) != 0 {
|
if len(data) != 0 {
|
||||||
data, _ := Decode(data, 0)
|
value := NewValue(data)
|
||||||
return NewValue(data)
|
value.Decode()
|
||||||
|
|
||||||
|
return value
|
||||||
}
|
}
|
||||||
|
|
||||||
return NewValue(nil)
|
return NewValue(nil)
|
||||||
|
2
peer.go
2
peer.go
@ -403,7 +403,7 @@ func (p *Peer) HandleInbound() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !p.ethereum.StateManager().BlockChain().HasBlock(lastBlock.Hash()) {
|
if !blockChain.HasBlock(lastBlock.Hash()) {
|
||||||
// If we can't find a common ancenstor we need to request more blocks.
|
// If we can't find a common ancenstor we need to request more blocks.
|
||||||
// FIXME: At one point this won't scale anymore since we are not asking for an offset
|
// FIXME: At one point this won't scale anymore since we are not asking for an offset
|
||||||
// we just keep increasing the amount of blocks.
|
// we just keep increasing the amount of blocks.
|
||||||
|
Loading…
Reference in New Issue
Block a user