예제 #1
0
        static Exception SerializeObjectFoundBuildIncompatibility(BlobSystem blobSystem,
                                                                  BlobGroup blobGroup, int version,
                                                                  Engine.EngineBuildHandle buildForBlobVersion, Engine.EngineBuildHandle actualBuild)
        {
            var msg = string.Format(
                "Build incompatibility for blob object {0} v{1} which uses build={2} " +
                "but stream uses build={3}",
                blobGroup.GroupTag.TagString, version, buildForBlobVersion.ToDisplayString(),
                actualBuild.ToDisplayString());

            return(new System.IO.InvalidDataException(msg));
        }
예제 #2
0
        public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
            where TDoc : class
            where TCursor : class
        {
            if (s.IsReading)
            {
                var system = KSoft.Debug.TypeCheck.CastReference <BlobSystem>(s.UserData);
                ParentSystem = system;
            }

            BlobSystem.SerializeGroupsKey(s, ParentSystem, ref mGroupTag);

            s.StreamAttributeEnumOpt("type", ref mKnownAs, v => v != WellKnownBlob.NotWellKnown);

            using (s.EnterCursorBookmark("Versions"))
            {
                s.StreamableElements("V",
                                     mVersionAndBuildMap,
                                     SerializeVersionToBuildMapKey);
            }
        }
예제 #3
0
        internal static void SerializeGroupsKey <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s,
                                                                BlobSystem system,
                                                                ref GroupTagDatum groupTag)
            where TDoc : class
            where TCursor : class
        {
            var tag_string = s.IsReading
                                ? null
                                : groupTag.TagString;

            s.StreamAttribute("tag", ref tag_string);

            if (s.IsReading)
            {
                groupTag = (GroupTagDatum)system.GroupTags.FindGroupByTag(tag_string);

                if (groupTag == null)
                {
                    s.ThrowReadException(new KeyNotFoundException(string.Format(
                                                                      "The tag '{0}' isn't defined in this system",
                                                                      tag_string)));
                }
            }
        }
예제 #4
0
 public SerializeObjectContext(BlobSystem system, Engine.BlamEngineTargetHandle gameTarget)
 {
     System     = system;
     GameTarget = gameTarget;
 }