Commit Graph

36 Commits

Author SHA1 Message Date
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