Commit Graph

57 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 a9dd03de70 Simplified the inlined type cast state. Now it's time to try the integer sign part.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 10:52:44 +02:00
Adam Rocska bee57f211a Last try before dumping & preconditioning: Moved the typed value contruction into the padding & truncating functions. Here the integer signed cases could be handled properly.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 10:44:41 +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 5be584cfbc Reader will definitely face these errors.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-02 10:38:24 +02:00
Adam Rocska 24b54ec8cb Minor variable renaming & formatting.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-02 10:36:58 +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 ce17c62f90 Keep the code in the 80 char range.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 14:51:38 +02:00
Adam Rocska 322234151a Made the code leaner, and removed a few unnecessary self references.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 14:51:09 +02:00
Adam Rocska 379b3d576c Simplification step 1. One last piece of gunk to clear out.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 14:46:40 +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 b581f12b4f Just to be absolutely in sync with GitHub. This is just a sketch.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 13:44:26 +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 6d98c2d5ff Added docs' to the control byte.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-01 13:12:01 +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 7fff4d7a13 Removed unnecessary comment.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 23:38:35 +02:00
Adam Rocska 7bde17165c Source is good. Now let's make the tests faster and better.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 22:33:32 +02:00
Adam Rocska 927efa97f7 Half way done with the generalized solution. Tests are green. And I am proud.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 19:45:21 +02:00
Adam Rocska c349a08525 Simplified sliceFrom value definition
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-30 18:47:00 +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 5ee582ca93 Had the usual unnecessary header comment from CLion.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 19:37:33 +02:00
Adam Rocska 90a7e857ec We for sure will need an enum for MaxMind DB data types.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 19:36:10 +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 028b7ae23d Removed stray dead code.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-04-29 16:13:48 +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