-
Notifications
You must be signed in to change notification settings - Fork 697
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expose serialization api #2336
Expose serialization api #2336
Conversation
Adds post-serialization and pre-deserialization hooks for additional customization.
* And revert the breaking change of the FormatterType removal * Add CHANGELOG entry
@lostmsu any notes? |
Add some tests. |
BTW, what's your interest in this functionality working? Cause if there's none, I think we should consider just bumping version to 4.x and dropping domain reload support altogether. Do you know anyone in Unity who stills works on it? There's been no communication for a while. |
Superseding/closing the previous PR. At this point, considering Unity's public plans, it's not unreasonable to drop this. Unity has their own fork with what was in the previous PR anyway.
I think so. Last I knew of, another team had assumed maintaintership of the package. I'll be sending a few messages see if they are still at Unity/on those projects |
@lostmsu Any more comments? I took the liberty to implement your comments on the formatter factory. P.S.: The current build failures are due to macos-14, I'll adjust the CI in another PR. |
To close the loop on this, the people I could get in touch with are no longer at Unity. |
/// <param name="stream">A MemoryStream that contains the data to be placed in the capsule</param> | ||
public static void StashSerializationData(string key, MemoryStream stream) | ||
{ | ||
var data = stream.GetBuffer(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This might have extra data in the end
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you mean by extra data? The stream container is longer than the data in it? The code is using Length
not Capacity
, so it should not be an issue, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The problem is that stream.GetBuffer()
is really just the internal buffer. The data represented may
- start at a different index than 0 (if a non-zero
index
is passed in the constructor) - be less than the full buffer
The primitive solution is to use ToArray
, but that creates another copy. Since .NET 4.6, there is also a TryGetBuffer
API that outputs an ArraySegment
containing all necessary information. I'll push a commit with the respective adjustment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 6e37568
Adds post-serialization and pre-deserialization hooks for additional customization.
What does this implement/fix? Explain your changes.
This PR supersedes #1892 , offer another workaround for issues #2335 #2221 #2282 , possibly others.
Does this close any currently open issues?
This addresses @lostmsu 's comments of exposing an API instead of adding functionality
Any other comments?
According to Unity dev answers on the Unity forums, they will implement a ring-link architecture as a replacement for domain load/unload. I have added no tests yet in this PR considering that domain load/unload is deprecated from a .NEt perspective.
https://forum.unity.com/threads/unity-future-net-development-status.1092205/page-34#post-8918231
This PR is made in my own name, I am no longer working at the company that signed the CLA for me.
Checklist
Check all those that are applicable and complete.
AUTHORS
CHANGELOG