// create file called "X.[messageid].tmp" located in the store // the contents of the file is the bytes of the message, then // rename it to "X.[messageid].msg", overwriting any existing // message with the same id // X will be 'i' for inbound messages, and O for outbound messages func write(store, key string, m packets.ControlPacket) { temppath := tmppath(store, key) f, err := os.Create(temppath) chkerr(err) werr := m.Write(f) chkerr(werr) cerr := f.Close() chkerr(cerr) rerr := os.Rename(temppath, fullpath(store, key)) chkerr(rerr) }