Commit Graph

210 Commits

Author SHA1 Message Date
Adam Rocska a3eaa2b8c9 MaxMind Iterator is done.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 13:33:03 +02:00
Adam Rocska f97ca19be5 Iterator in progress. The concept is good enough, just has to be polished.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 00:31:52 +02:00
Adam Rocska 017626c3a7 Added nextValue skeleton.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 21:08:27 +02:00
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