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 }