CarrierData
in package
This class is responsible for loading the data file and walking the IPV4 Radix Trie to find the properties for a given User-Agent.
Tags
Table of Contents
Properties
- $BUCKET_START_BYTES_LEN : mixed
- bucket ID [2B], bucket CRC-32 [4B], bucket length [4B]
- $copyright : mixed
- Data file copyright tag
- $CREATION_DATE_LEN : mixed
- e.g. 2013-08-07T15:36:44+0000
- $creationDate : mixed
- Data file creation date
- $cursor : mixed
- Data cursor
- $data : mixed
- Carrier data
- $FILE_ID : mixed
- Data file component
- $INVALID_DATA_FILE : mixed
- Error message
- $MAGIC_NUMBER : mixed
- Data file component
- $MAX_IPV4_BIT : mixed
- MAX_IPV4_BIT
- $NULL_PTR : mixed
- Data for the IPv4 radix tree
- $PROBLEM_READING_DATA_FILE : mixed
- Error message
- $propertyNames : mixed
- Property Names
- $propertyStringNames : mixed
- Property String Names
- $ROOT_PTR : mixed
- Starting pointer
- $START_BYTES_LEN : mixed
- magic number [2B] + file id [1B] + header length [2B]
- $treeLefts : mixed
- Trie component
- $treeProperties : mixed
- Trie component
- $treeRights : mixed
- Trie component
- $version : mixed
- Data file version
Methods
- getCopyright() : string
- Get data file copyright.
- getCreationDate() : string
- Get data file creation date.
- getProperties() : mixed
- Selects a value for a given IPv4 address, traversing tree and choosing most specific value available for a given address.
- getPropertyNames() : array<string|int, mixed>
- Return a list of all the property names.
- getPropertyNamesAsStrings() : string
- Return a list of all the property names.
- getVersion() : string
- Get data file version.
- loadDataFromFile() : mixed
- Load carrier data file.
- checkFileTypeGetHeaderLength() : int
- Check the first few bytes to make sure we are opening a Carrier Identification file. Also get the length of the header.
- readBuckets() : mixed
- Each bucket is comprised of the following. The BucketHandler is responsible for actually parsing the data in each bucket. This method keeps reading until either the end of the file or until all necessary buckets have been read. It will skip buckets with IDs it does not recognise to hopefully future proof the API against possible additions to the data file
- readHeader() : mixed
- The header of the file contains the following data:
Properties
$BUCKET_START_BYTES_LEN
bucket ID [2B], bucket CRC-32 [4B], bucket length [4B]
private
static mixed
$BUCKET_START_BYTES_LEN
= 10
$copyright
Data file copyright tag
private
mixed
$copyright
$CREATION_DATE_LEN
e.g. 2013-08-07T15:36:44+0000
private
static mixed
$CREATION_DATE_LEN
= 24
$creationDate
Data file creation date
private
mixed
$creationDate
$cursor
Data cursor
private
mixed
$cursor
$data
Carrier data
private
mixed
$data
$FILE_ID
Data file component
private
static mixed
$FILE_ID
= 1
$INVALID_DATA_FILE
Error message
private
static mixed
$INVALID_DATA_FILE
= 'Invalid data file.'
$MAGIC_NUMBER
Data file component
private
static mixed
$MAGIC_NUMBER
= 'DA'
$MAX_IPV4_BIT
MAX_IPV4_BIT
private
static mixed
$MAX_IPV4_BIT
= 0x80000000
$NULL_PTR
Data for the IPv4 radix tree
private
static mixed
$NULL_PTR
= -1
$PROBLEM_READING_DATA_FILE
Error message
private
static mixed
$PROBLEM_READING_DATA_FILE
= 'Problem reading data file.'
$propertyNames
Property Names
private
mixed
$propertyNames
= null
$propertyStringNames
Property String Names
private
mixed
$propertyStringNames
= null
$ROOT_PTR
Starting pointer
private
static mixed
$ROOT_PTR
= 0
$START_BYTES_LEN
magic number [2B] + file id [1B] + header length [2B]
private
static mixed
$START_BYTES_LEN
= 5
$treeLefts
Trie component
private
mixed
$treeLefts
$treeProperties
Trie component
private
mixed
$treeProperties
$treeRights
Trie component
private
mixed
$treeRights
$version
Data file version
private
mixed
$version
Methods
getCopyright()
Get data file copyright.
public
getCopyright() : string
Return values
string —the copyright
getCreationDate()
Get data file creation date.
public
getCreationDate() : string
Return values
string —the creationDate
getProperties()
Selects a value for a given IPv4 address, traversing tree and choosing most specific value available for a given address.
public
getProperties(mixed $key) : mixed
Parameters
- $key : mixed
Return values
mixed —value at most specific IPv4 network in a tree for a given IPv4 address
getPropertyNames()
Return a list of all the property names.
public
getPropertyNames() : array<string|int, mixed>
Return values
array<string|int, mixed> —array of property names
getPropertyNamesAsStrings()
Return a list of all the property names.
public
getPropertyNamesAsStrings() : string
Return values
string —of property names
getVersion()
Get data file version.
public
getVersion() : string
Return values
string —the version
loadDataFromFile()
Load carrier data file.
public
loadDataFromFile(mixed $filePath) : mixed
Parameters
- $filePath : mixed
Tags
checkFileTypeGetHeaderLength()
Check the first few bytes to make sure we are opening a Carrier Identification file. Also get the length of the header.
private
checkFileTypeGetHeaderLength(mixed $startBytes) : int
Parameters
- $startBytes : mixed
Tags
Return values
int —header length
readBuckets()
Each bucket is comprised of the following. The BucketHandler is responsible for actually parsing the data in each bucket. This method keeps reading until either the end of the file or until all necessary buckets have been read. It will skip buckets with IDs it does not recognise to hopefully future proof the API against possible additions to the data file
private
readBuckets() : mixed
Bucket structure:
2B Bucket ID 4B CRC-32 checksum - NOTE: unsigned int! 4B Length of the data ?B Data
Tags
readHeader()
The header of the file contains the following data:
private
readHeader() : mixed
2B DA (US-ASCII) 1B File type ID (1: carrier data, 2:some other data.... etc) 2B Header length - the total size of the header including the preceding bytes 2B Length of copyright text ?B Copyright (US-ASCII) "(c) Copyright 2013 - DeviceAtlas Limited" 24B Creation date (US-ASCII) "2013-08-07T15:36:44+0000" 1B Version, major 1B Version, minor 4B Licence ID 4B CRC-32 - all data after first bucket offset