Add PackagesByID for android package manager
This commit is contained in:
parent
0e4cdbbc61
commit
0e624a007c
2 changed files with 14 additions and 6 deletions
|
|
@ -8,6 +8,7 @@ type PackageManager interface {
|
||||||
IDByPackage(packageName string) (uint32, bool)
|
IDByPackage(packageName string) (uint32, bool)
|
||||||
IDBySharedPackage(sharedPackage string) (uint32, bool)
|
IDBySharedPackage(sharedPackage string) (uint32, bool)
|
||||||
PackageByID(id uint32) (string, bool)
|
PackageByID(id uint32) (string, bool)
|
||||||
|
PackagesByID(id uint32) ([]string, bool)
|
||||||
SharedPackageByID(id uint32) (string, bool)
|
SharedPackageByID(id uint32) (string, bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ type packageManager struct {
|
||||||
watcher *fswatch.Watcher
|
watcher *fswatch.Watcher
|
||||||
idByPackage map[string]uint32
|
idByPackage map[string]uint32
|
||||||
sharedByPackage map[string]uint32
|
sharedByPackage map[string]uint32
|
||||||
packageById map[uint32]string
|
packageById map[uint32][]string
|
||||||
sharedById map[uint32]string
|
sharedById map[uint32]string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -83,8 +83,16 @@ func (m *packageManager) IDBySharedPackage(sharedPackage string) (uint32, bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *packageManager) PackageByID(id uint32) (string, bool) {
|
func (m *packageManager) PackageByID(id uint32) (string, bool) {
|
||||||
packageName, loaded := m.packageById[id]
|
packageNames, loaded := m.packageById[id]
|
||||||
return packageName, loaded
|
if !loaded || len(packageNames) == 0 {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
return packageNames[0], true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *packageManager) PackagesByID(id uint32) ([]string, bool) {
|
||||||
|
packageNames, loaded := m.packageById[id]
|
||||||
|
return packageNames, loaded
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *packageManager) SharedPackageByID(id uint32) (string, bool) {
|
func (m *packageManager) SharedPackageByID(id uint32) (string, bool) {
|
||||||
|
|
@ -110,7 +118,7 @@ func (m *packageManager) updatePackages() error {
|
||||||
func (m *packageManager) decodePackages(decoder *xml.Decoder) error {
|
func (m *packageManager) decodePackages(decoder *xml.Decoder) error {
|
||||||
idByPackage := make(map[string]uint32)
|
idByPackage := make(map[string]uint32)
|
||||||
sharedByPackage := make(map[string]uint32)
|
sharedByPackage := make(map[string]uint32)
|
||||||
packageById := make(map[uint32]string)
|
packageById := make(map[uint32][]string)
|
||||||
sharedById := make(map[uint32]string)
|
sharedById := make(map[uint32]string)
|
||||||
for {
|
for {
|
||||||
token, err := decoder.Token()
|
token, err := decoder.Token()
|
||||||
|
|
@ -144,7 +152,7 @@ func (m *packageManager) decodePackages(decoder *xml.Decoder) error {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
idByPackage[name] = uint32(userID)
|
idByPackage[name] = uint32(userID)
|
||||||
packageById[uint32(userID)] = name
|
packageById[uint32(userID)] = append(packageById[uint32(userID)], name)
|
||||||
case "shared-user":
|
case "shared-user":
|
||||||
var name string
|
var name string
|
||||||
var userID uint64
|
var userID uint64
|
||||||
|
|
@ -157,7 +165,6 @@ func (m *packageManager) decodePackages(decoder *xml.Decoder) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
packageById[uint32(userID)] = name
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if userID == 0 && name == "" {
|
if userID == 0 && name == "" {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue