mirror of
https://github.com/lionsoul2014/ip2region.git
synced 2025-12-08 19:25:22 +00:00
add load header func
This commit is contained in:
parent
059446caa7
commit
9cb3bbcb07
@ -89,6 +89,36 @@ func LoadVectorIndexFromFile(dbFile string) ([][]*VectorIndexBlock, error) {
|
||||
return LoadVectorIndex(handle)
|
||||
}
|
||||
|
||||
// LoadHeader load the header info from the specified handle
|
||||
func LoadHeader(handle *os.File) ([]byte, error) {
|
||||
_, err := handle.Seek(0, 0)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("seek to the header: %w", err)
|
||||
}
|
||||
|
||||
var buff = make([]byte, HeaderInfoLength)
|
||||
rLen, err := handle.Read(buff)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if rLen != len(buff) {
|
||||
return nil, fmt.Errorf("incomplete read: readed bytes should be %d", len(buff))
|
||||
}
|
||||
|
||||
return buff, nil
|
||||
}
|
||||
|
||||
// LoadHeaderFromFile load header info from the specified db file path
|
||||
func LoadHeaderFromFile(dbFile string) ([]byte, error) {
|
||||
handle, err := os.OpenFile(dbFile, os.O_RDONLY, 0600)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("open xdb file `%s`: %w", dbFile, err)
|
||||
}
|
||||
|
||||
return LoadHeader(handle)
|
||||
}
|
||||
|
||||
// LoadContent load the whole xdb content from the specified file handle
|
||||
func LoadContent(handle *os.File) ([]byte, error) {
|
||||
// get file size
|
||||
|
||||
@ -23,6 +23,17 @@ func TestLoadContent(t *testing.T) {
|
||||
buff, err := LoadContentFromFile("../../../data/ip2region.xdb")
|
||||
if err != nil {
|
||||
fmt.Printf("failed to load xdb content: %s\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("buff length: %d\n", len(buff))
|
||||
}
|
||||
|
||||
func TestLoadHeader(t *testing.T) {
|
||||
buff, err := LoadHeaderFromFile("../../../data/ip2region.xdb")
|
||||
if err != nil {
|
||||
fmt.Printf("failed to load xdb header info: %s\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("buff length: %d\n", len(buff))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user