Esempio n. 1
0
func (n *Node) Unserialize(reader typedio.Reader) (err os.Error) {
	n.Id, err = reader.ReadUint16() // id
	if err != nil {
		return err
	}

	n.Status, err = reader.ReadUint8() // status
	if err != nil {
		return err
	}

	strAddr, err := reader.ReadString() // address
	if err != nil {
		return err
	}
	n.Address = net.ParseIP(strAddr)

	n.TcpPort, err = reader.ReadUint16() // tcp port
	if err != nil {
		return err
	}

	n.UdpPort, err = reader.ReadUint16() // udp port
	if err != nil {
		return err
	}

	nbRings, err := reader.ReadUint8() // nb rings
	if err != nil {
		return err
	}

	n.Rings = make([]NodeRing, nbRings)
	var i uint8
	for i = 0; i < nbRings; i++ { // each ring
		nodeRing := NodeRing{}

		nodeRing.Ring, err = reader.ReadUint8()
		if err != nil {
			return err
		}

		nodeRing.Token, err = reader.ReadString()
		if err != nil {
			return err
		}
	}

	return nil
}