Adam Rocska
3f4914190d
A strategy emerged on how to process MaxMindDB data. May not be the best, but it could work.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 21:05:55 +02:00
Adam Rocska
6449c653b2
It works. The motto should still remain "RTFM". Signed integers arrive as two's complement instead of signed magnitude (duh).
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 15:24:44 +02:00
Adam Rocska
438c0eca44
Doing a commit, to save the state. But will remove truncation logic at all, and just simply set a precondition. MaxMind's DB format could possible have an "overflow case" happen, but it just won't be supported.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 10:35:42 +02:00
Adam Rocska
9d34199730
I'll figure out int32 later.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-03 18:23:09 +02:00
Adam Rocska
9adc855359
Work in progress with the decoder. I want to avoid creating a copy in memory just because maxmind's binary data format sucks jack's shit...
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-03 17:41:57 +02:00
Adam Rocska
4ab4518902
Found some dead code.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-03 15:11:02 +02:00
Adam Rocska
1c8ead14ce
Can decode UInt16
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-03 14:15:15 +02:00
Adam Rocska
bac7cedd36
Renamed the file from SafeIndexOffset to LimitedIndex & its test. I think it's more expressive.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-02 10:32:59 +02:00
Adam Rocska
92806b035d
I really needed these limitedIndex accessors. I don't know if it's an anti-pattern with Swift or not, but I couldn't find another way around.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-02 10:30:17 +02:00
Adam Rocska
94465bb5f9
Added a field to ControlByte which expresses the definition's size.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 17:49:58 +02:00
Adam Rocska
09469628e3
The quick and dirty implementation for lastIndexOf. I'll make it a bit nicer (definitely not faster), and move on.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 14:37:30 +02:00
Adam Rocska
d37ac6856c
Accepted the compiler warning's suggestion. Dunno what it helps, but sure.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 13:37:50 +02:00
Adam Rocska
1f80a1ac6e
Syncing github repo with local experiments :
...
- Reader now has the data separator defined as is.
- removed dead dummy playground code from MetadataStructTest.swift
- started to work out a last index of concept (naïve one of-course)
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 13:35:24 +02:00
Adam Rocska
cc4305f2d2
Can't get tests any better than they are for now.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 13:05:09 +02:00
Adam Rocska
3901f2dc1a
Tests refactored.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 12:56:15 +02:00
Adam Rocska
5f7d42e458
Moved the typealiases outside of the class context. I have an idea to make compilation faster.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 12:12:06 +02:00
Adam Rocska
bda2c458b2
Payload size definition tests given. Ugly as hell. Must refactor.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 12:09:10 +02:00
Adam Rocska
8c21e60f20
Added the test case for the range between 30 and 65.821 but now it's time to refactor.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 18:44:28 +02:00
Adam Rocska
cbe43c1bc6
ControlByte payloadSize determined for values between 29 and 284. On to the next challenge.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 18:11:56 +02:00
Adam Rocska
934dadc269
ControlByte payloadSize determined for values smaller than 29. On to the next challenge.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 16:59:44 +02:00
Adam Rocska
7bc612efee
ControlByte constructor got changed, because the byte sequence is at least 1 byte, at most 5 bytes long.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 14:43:44 +02:00
Adam Rocska
b020fb2944
Finally got a concept on how to program this in a non-convoluted way.
...
- Extended UInt8 with a nice and juicy bitmask helper function
- Foundation for a ControlByte type
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 13:27:23 +02:00
Adam Rocska
311cdc3342
Figured out a rather unorthodox, and unsafe way of transforming `Data` to certain Swift types. Will come in handy to represent the MaxMindDB somehow.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 18:01:16 +02:00
Adam Rocska
067ee0be4c
Bada test class naming fixed.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 17:07:57 +02:00
Adam Rocska
bbda680aff
Fixed the bad test naming.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 16:53:03 +02:00
Adam Rocska
c1c9c55d4f
New test data just found a bug. Fixed it.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 16:51:36 +02:00
Adam Rocska
4a854026ec
Removed useless dead code remaining from previous states.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 16:44:57 +02:00
Adam Rocska
fe668afb9e
Better assertions.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 16:44:20 +02:00
Adam Rocska
e06afd3d7a
Making the tests & the API nicer.
...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 16:41:19 +02:00
Adam Rocska
58cf90498d
uncommented rest of the tests.
2020-04-29 16:04:30 +02:00
Adam Rocska
a98db16edb
Bugfixing in the search algorithm.
2020-04-29 15:53:22 +02:00
Adam Rocska
661125fc80
I was an inattentive prick, and misimplemented the algorithm. It works now.
2020-04-29 13:29:16 +02:00
Adam Rocska
c0dba1887b
Committing half made not working code to ask for some help. The search algorithm gets stuck at index 20990 as if it was an overflow, while it can't be an overflow, since it's a typealias for Int, and also, it's not a square number. Weird. Bughunting.
2020-04-29 13:03:10 +02:00
Adam Rocska
3173807987
Removed submodules, and doing stuff.
2020-04-28 11:08:31 +02:00
Adam Rocska
4fc53d970c
I figured out what the problem was. I was an idiot in many ways :
...
- the submodule had an invalid detatched head commit hash. Dunno why.
- the package swift file defined a wrong version number for libmaxminddb. Moral of the story : don't be an ass.
- some leftover garbage from automake made me believe I was done
- potato
2020-04-27 21:27:28 +02:00
Adam Rocska
3b32769926
Initial Commit.
2020-04-27 15:25:09 +02:00