Commit graph

37 commits

Author SHA1 Message Date
Jonathan Barrow
f03f66853c
Added DataHolder list methods to streams 2023-08-31 00:47:27 -04:00
Jonathan Barrow
dbb309e9c9
Added more robust semver checks for NEX versions and Structure version checks 2023-08-30 17:39:40 -04:00
Jonathan Barrow
643ed8d44d
Added List<Buffer> read and write methods 2023-07-22 13:41:52 -04:00
Jonathan Barrow
b5b1381f95
Added StreamOut.WriteListStationURL 2023-07-21 21:42:16 -04:00
Jonathan Barrow
81594ad489
Added all missing Stream read/write methods for number types 2023-06-09 12:53:57 -04:00
Jonathan Barrow
eebdf279c6
StreamOut.WriteStructure() now writes the structure version 2023-06-08 18:51:05 -04:00
Daniel López Guimaraes
39045e2650
Revert ReadMap() to original implementation
And reimplement WriteMap() with less arguments.
2023-06-06 15:52:36 +01:00
Daniel López Guimaraes
062470d47a
Implement ReadMap() and WriteMap()
Maps were not completely implemented before and we only had the ability
to read them from streams. In order to support every stream type on
maps, let the user define the read or write function to call for the key
and value.

Since we have to allow every fucnction type, pass the functions as
`interface{}` and call them using reflect. Note that ReadMap() currently
does not support every stream type, like structures, because we would
have to get the structure we want to read and pass it as an argument
when making the call.
2023-06-05 20:11:38 +01:00
Daniel López Guimaraes
6eac68ab1a
Add Bytes() to Variant and minor changes
In order to implement the stream properly, add ReadFloat64LE() to
StreamIn and other required functions for the Variant.
2023-06-05 20:09:31 +01:00
Jonathan Barrow
5dc71db489
Removed hierarchy tree system in favor of a single parentType field 2023-05-21 17:09:10 -04:00
Daniel López Guimaraes
031f69c87b
Fix various DataHolder issues
While the hierarchy implementation from #27 works in some cases, it
has two problems:

- It only works for NEX version <3.5, as we aren't writing the stucture
  header. This isn't exactly a problem of the PR, as it was already
  wrong.
- It only checks for one layer of hierarchy, because there is no
  recursion applied.

Solve this by using `WriteStructure()` instead of getting the raw bytes,
since the object data is already a `StructureInterface`.

On `ExtractFromStream()` there is no need to use reflect as the object
data will be the correct structure. Using reflect also breaks with
hierarchy for unknown reasons, so just pass the dataType to
`ReadStructure()`.

Also fix a bug where the data holder is written twice when calling
`WriteDataHolder()` because of reusing the same stream on
`dataHolder.Bytes()`.
2023-05-21 14:58:55 +01:00
Daniel López Guimaraes
f6cb847021
Write structure hierarchy on WriteStructure
Also add hierarchy to nex.Structure and rename class to parent on
ReadStructure.
2023-05-19 21:05:59 +01:00
Jonathan Barrow
86eb9b08e0
Removed SetNexVersion and added methods for setting specific NEX protocol versions 2023-04-05 19:28:18 -04:00
light
127f685036 Add WriteDateTime for clarity 2023-04-01 17:02:22 -04:00
Jonathan Barrow
eef299b0bf
Corrected structure header check 2022-09-05 08:59:53 -04:00
Jonathan Barrow
0ff07954f8 Added WriteResult and WriteListResult 2022-04-15 10:46:24 -04:00
Jonathan Barrow
8be2d8bca2 Moved all source files back to root 2022-03-29 00:15:55 -04:00
Jonathan Barrow
a2d673a235 Moving to Go modules 2022-03-27 19:59:17 -04:00
Jonathan Barrow
7386599b73 Added WriteListInt64LE 2021-11-14 03:47:44 -05:00
Jonathan Barrow
9ee262532c Added signed methods 2021-11-12 00:31:14 -05:00
Jonathan Barrow
3b4aeefc36 Added DataHolder type 2021-10-30 00:07:57 -04:00
shutterbug2000
202a288ecd Changes for MK7 2021-10-13 20:38:44 +01:00
Jonathan Barrow
c0354ef79e added WriteListQBuffer 2021-10-03 02:59:47 -04:00
Jonathan Barrow
fafb1caeb4 Added WriteQBuffer 2021-09-05 08:28:47 -04:00
Jonathan Barrow
2596545e51 Fixed WriteBuffer and added WriteListString 2021-08-22 18:31:01 -04:00
Jonathan Barrow
2c77b483c9 Exported stream server 2020-04-19 22:54:47 -04:00
Jonathan Barrow
f78cd960d8 Changed getters to be more Go-like
Removed "Get" prefix from getters to conform to effective Go standards
2020-04-19 21:40:04 -04:00
Jonathan Barrow
49762a9957 Renamed nexMinorVersion
Renamed nexMinorVersion since NEX versions are more specific in reality
2020-04-19 21:32:02 -04:00
Jonathan Barrow
f90728baa9 Revert "remove usage of reflect. improve efficiency. don't use abstracted methods internally. add go module support"
This reverts commit 75511a1ecb.
2020-04-17 13:16:03 -04:00
superwhiskers
75511a1ecb
remove usage of reflect. improve efficiency. don't use abstracted methods internally. add go module support 2020-04-06 20:42:26 -05:00
Jonathan Barrow
420de12c89 Update stream_out.go 2020-03-22 13:20:41 -04:00
Jonathan Barrow
4021d2c32f Added basic list reading/writing support to streams
Streams now have basic methods for reading and writing lists of all number types as well as writing a list of Structure types. Reading Structure types is currently done by the protocol lib where those types are defined
2020-03-17 21:44:07 -04:00
Jonathan Barrow
1d690de84d New StreamOut API
StreamOut now has an abstraction layer to clean up some method calls from crunch
2020-02-16 17:42:03 -05:00
Jonathan Barrow
14a29f1b5c Added missing export comments 2020-02-16 16:59:47 -05:00
Jonathan Barrow
ca8b98c807 bump crunch version 2020-01-29 18:18:28 -05:00
Jonathan Barrow
70daceae50 updated structures to take in StreamOut in Bytes
Structure.Bytes() now requires an instance of StreamOut. This is so any Structures who contain properties which are also Structures can be passed the same stream during their encoding process and retain the stream content/settings
2020-01-27 15:10:44 -05:00
Jonathan Barrow
8ab25b0f16 new stream implementation and Structure type handling
Split the Stream struct into 2 separate stream types for clearer intent. Also now pass them a reference to the server pointer to access server config (namely the NEX minor version)

Structure NEX types are now being implemented (a push to nex-protocols-go will follow shortly). However the implementation is pretty jank and could use some work. Currently uses emulated inheritance
2020-01-26 21:38:33 -05:00