Esempio n. 1
0
        public Type GetTypeFrom(Frame frame)
        {
            Type type;
            ArraySegment<Byte> encodedBytes = frame.Body;
            String typeName = Encoding.UTF8.GetString(encodedBytes.Array, encodedBytes.Offset, encodedBytes.Count);

            if (knownTypes.TryGetValue(typeName, out type))
                return type;

            knownTypes[typeName] = type = Type.GetType(typeName);

            return type;
        }
Esempio n. 2
0
        public Frame GetTypeFrameFor(Type type)
        {
            Frame typeFrame;

            if (this.typeHeaders.TryGetValue(type, out typeFrame))
                return typeFrame;

            var assemblyQualifiedName = type.AssemblyQualifiedName ?? String.Empty;
            var versionlessAssemblyQualifiedName = Regex.Replace(assemblyQualifiedName, @", Version=\d+.\d+.\d+.\d+,", ",");
            var encodedBytes = Encoding.UTF8.GetBytes(versionlessAssemblyQualifiedName);
            var rawFrame = new Byte[encodedBytes.Length + sizeof(Byte)];

            rawFrame[0] = (Byte)(FrameFlags.Header | FrameFlags.More);
            Buffer.BlockCopy(encodedBytes, 0, rawFrame, 0, encodedBytes.Length);

            this.typeHeaders[type] = typeFrame = new Frame(rawFrame);

            return typeFrame;
        }