Adam Rocska
c645dd40c4
Created the intentional duplicate of interpretArray. Intenional duplicate, because I know nothing about this php and perl scripter mountebank fantasy data type.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-27 09:44:54 +02:00
Adam Rocska
3bd97a83f1
Array interpretation in place, the logic seems to work. Gotta duplicate the data cache container, because there's no word in the spec, nor guarantee that its array-like structure related assumptions are correct.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-27 08:58:55 +02:00
Adam Rocska
5bcd7ba700
This awful design seems to be able to tackle php scripter stupidity. The code sucks, but at least is testable and works so far. Now I just gotta reconstruct sequence types, and I finally can forget about this horror, and stop taking sedatives.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-26 16:43:56 +02:00
Adam Rocska
8bbcfb3d3b
Data padding added. Necessary code to handle php retardnesss of having 32bit integers defined in 0, 1, 2, 3 bytes...
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-20 17:44:19 +02:00
Adam Rocska
13fdc79bf9
Attempting a different way of typeconversion in hope, that we can handle the php scripter style stupidifaction of 11bit integers, and God knows what other retarded concepts can arise.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-19 14:51:32 +02:00
Adam Rocska
ac0abc8607
WIP. Total mess.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-18 13:48:36 +02:00
Adam Rocska
f6ab2f4cac
Attempting another different approach.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-18 00:26:10 +02:00
Adam Rocska
966928cfd2
Falling back to the original crap code that emerged from crap php scripters' logic. Too many edge cases and stupidities to bother with. Dumb design can't be made straight.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-17 19:49:15 +02:00
Adam Rocska
4f3245561e
made code 1 line shorter, but can't make it cleaner. I'm super angry on crappy code.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-16 18:44:10 +02:00
Adam Rocska
ddd782925d
DataType foundations re-implemented. Can guess from this convoluted unclear non-unequivocal php scripter's fantasy the type of the data.
...
I must say, that it's outrageously stupid, that with this control byte data type definition the scripters "designed" implicitly allows for two different ways of defining map types. One is [0b111X_XXXX] and the other is [0b000X_XXXX, 0b0000_0000], where both resolve to fantasy 7 with that fucking retarded logic, though are not equal.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-16 18:24:06 +02:00
Adam Rocska
2969e82f3f
isExtendedType implemented for DataType enum value
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-16 16:44:12 +02:00
Adam Rocska
f02cb01293
Gotta redesign the whole decoder layer. Managed to sketch a way to tackle with these php scripter fantasies in the MaxMind DB spec on the whiteboard.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-16 15:09:22 +02:00
Adam Rocska
d236f8ce4e
Introduced a few new protocols in hope that it'll make code more manageable.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 19:24:41 +02:00
Adam Rocska
a59d860145
Removed another nonsense doc' from the code. The whole datatype guessing has to be rewritten somehow.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 16:32:57 +02:00
Adam Rocska
2cfe601c1f
Removed the nonsense doc' from the code. The whole datatype guessing has to be rewritten somehow.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 15:56:23 +02:00
Adam Rocska
057f29110a
MaxMindPointer needs to also be castable to int. This whole typecasting crap should be fixed at some point, if I figure out how to de-phpify the spec.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 15:26:55 +02:00
Adam Rocska
c67a040998
Refactored key resolution to open it for pointer resolution.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 14:36:08 +02:00
Adam Rocska
7132a933ec
Extract refactor to prepare for pointer handling.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 14:32:12 +02:00
Adam Rocska
2ec6980964
MaxMind Iterator now supports peek, an operation to seek control bytes, and binary data without modifying the pointer's state. Useful for MaaxMind's pointer lookup.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 13:19:26 +02:00
Adam Rocska
97407b3520
I figured out, that there's no case when Data would be nil.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 12:29:02 +02:00
Adam Rocska
c7dfc8b538
Preparation refactor for public peek.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 12:25:47 +02:00
Adam Rocska
f33b6f3bef
Preparation refactor for public peek.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 12:11:55 +02:00
Adam Rocska
e98405eaf7
Provided a test for the control byte skipping case.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 11:46:57 +02:00
Adam Rocska
be2d6bb103
Revert "Created the concept of MaxMindIterator.Entry"
...
This reverts commit 19f65467
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 10:54:20 +02:00
Adam Rocska
19f65467e4
Created the concept of MaxMindIterator.Entry
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 10:45:39 +02:00
Adam Rocska
09c5d36736
Dummy code in place.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 10:38:36 +02:00
Adam Rocska
3d372ee48b
Lookup edge cases.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 10:32:12 +02:00
Adam Rocska
6629236c0e
Dummy code commit. Work in progress.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 10:18:46 +02:00
Adam Rocska
24b51db462
Preparing the iterator for automatic pointer resolution.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 09:34:56 +02:00
Adam Rocska
52adc7d958
Any decoder extended to decode MaxMindPointer values.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 20:47:12 +02:00
Adam Rocska
a67bb082c5
MaxMind Pointer Decoder somewhat implemented. But this whole spiel with control bytes & things is insane. Code is as inconsistent as the spec.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 20:19:28 +02:00
Adam Rocska
4d0d5c9eb5
Narrowed down the maxamind pointer to unsigned 32 bit integers.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 19:57:58 +02:00
Adam Rocska
991dd27296
Misimplementation fixed.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 17:24:14 +02:00
Adam Rocska
bd5079e1c3
Decoder's ControlByte now also supports MaxMind's yet another edge case.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 17:17:29 +02:00
Adam Rocska
9cb6dace14
First step to refactoring the ControlByte.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 15:40:37 +02:00
Adam Rocska
dba4535513
DataSection protocol.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 15:35:37 +02:00
Adam Rocska
0ba9fa285c
Foundations for the DataSection module.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 15:35:23 +02:00
Adam Rocska
9bc3778877
ControlByte formatting.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 15:34:59 +02:00
Adam Rocska
59b5816f99
Had to implement some basic MaxMindPointer type. Surprisingly swift has no newtype typealias mechanism, and we only need to differentiate "plain naked" UInt from UInt intended to be used as MaxMind's php folks' pointer value.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 14:26:23 +02:00
Adam Rocska
8d5487b2a9
Fixed the precondition message typo in the InMemoryIndex stream status validation.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 12:14:09 +02:00
Adam Rocska
b1ac89d57c
Added a few fields to the metadata struct to make db file processing a bit more efficient in other layers.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 12:13:22 +02:00
Adam Rocska
92a66a6fa7
Cleaned out the sketch code we had.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 20:46:12 +02:00
Adam Rocska
196a53dd2e
Removed legacy data initialization from stream.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 19:03:25 +02:00
Adam Rocska
24c41b964c
Rephrased preconditions.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 19:00:20 +02:00
Adam Rocska
bf686792be
Fixed the bad description rep of v6 ip addresses.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 18:57:02 +02:00
Adam Rocska
79c9fe5fc6
Added assertion to an edge case I forgot about.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:58:29 +02:00
Adam Rocska
d01dd8256d
Fixed another broken precondition.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:55:17 +02:00
Adam Rocska
fa661011ab
Fixed the broken precondition.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:52:27 +02:00
Adam Rocska
3a7f8eb363
Forgot to do an equatable node equals node struct assertion.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:41:00 +02:00
Adam Rocska
30dc788d3f
Did proper assertions. This time I did pay attention.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:36:46 +02:00