Esempio n. 1
0
 ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type, IFieldHandler itemSpecialized)
 {
     _fieldHandlerFactory = fieldHandlerFactory;
     _typeConvertorGenerator = typeConvertorGenerator;
     _type = type;
     _itemsHandler = itemSpecialized;
 }
Esempio n. 2
0
 public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory)
 {
     var fieldHandler = fieldHandlerFactory.CreateFromType(pi.PropertyType, FieldHandlerOptions.None);
     if (fieldHandler == null) throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName));
     var a = pi.GetCustomAttribute<PersistedNameAttribute>();
     return new TableFieldInfo(a != null ? a.Name : pi.Name, fieldHandler);
 }
Esempio n. 3
0
        public PropertyInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory)
        {
            _name = reader.ReadString();
            var resultFieldHandlerName = reader.ReadString();

            _fieldHandler = fieldHandlerFactory.CreateFromName(resultFieldHandlerName, reader.ReadByteArray(), FieldHandlerOptions.None);
        }
Esempio n. 4
0
        static bool IsMethodSupported(MethodInfo method, IFieldHandlerFactory fieldHandlerFactory)
        {
            var syncReturnType = method.ReturnType.UnwrapTask();

            if (syncReturnType != typeof(void))
            {
                if (!fieldHandlerFactory.TypeSupported(syncReturnType))
                {
                    return(false);
                }
            }
            foreach (var parameter in method.GetParameters())
            {
                if (parameter.IsOptional)
                {
                    return(false);
                }
                if (parameter.IsOut)
                {
                    return(false);
                }
                if (parameter.IsRetval)
                {
                    return(false);
                }
                if (!fieldHandlerFactory.TypeSupported(parameter.ParameterType))
                {
                    return(false);
                }
            }
            return(true);
        }
Esempio n. 5
0
 ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type, IFieldHandler itemSpecialized)
 {
     _fieldHandlerFactory    = fieldHandlerFactory;
     _typeConvertorGenerator = typeConvertorGenerator;
     _type         = type;
     _itemsHandler = itemSpecialized;
 }
Esempio n. 6
0
        public static IFieldHandler CreateFromReader(this IFieldHandlerFactory factory, AbstractBufferedReader reader, FieldHandlerOptions options)
        {
            var handlerName          = reader.ReadString();
            var handlerConfiguration = reader.ReadByteArray();

            return(factory.CreateFromName(handlerName, handlerConfiguration, options));
        }
Esempio n. 7
0
 DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type, IFieldHandler keySpecialized, IFieldHandler valueSpecialized)
 {
     _fieldHandlerFactory = fieldHandlerFactory;
     _typeConvertorGenerator = typeConvertorGenerator;
     _type = type;
     _keysHandler = keySpecialized;
     _valuesHandler = valueSpecialized;
 }
Esempio n. 8
0
 DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type, IFieldHandler keySpecialized, IFieldHandler valueSpecialized)
 {
     _fieldHandlerFactory    = fieldHandlerFactory;
     _typeConvertorGenerator = typeConvertorGenerator;
     _type          = type;
     _keysHandler   = keySpecialized;
     _valuesHandler = valueSpecialized;
 }
Esempio n. 9
0
 public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, byte[] configuration)
 {
     _fieldHandlerFactory = fieldHandlerFactory;
     _typeConvertorGenerator = typeConvertorGenerator;
     _configuration = configuration;
     var reader = new ByteArrayReader(configuration);
     _itemsHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None);
 }
Esempio n. 10
0
        public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, byte[] configuration)
        {
            _fieldHandlerFactory    = fieldHandlerFactory;
            _typeConvertorGenerator = typeConvertorGenerator;
            _configuration          = configuration;
            var reader = new ByteArrayReader(configuration);

            _itemsHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None);
        }
Esempio n. 11
0
 ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, Type type, IFieldHandler itemSpecialized)
 {
     _fieldHandlerFactory  = fieldHandlerFactory;
     _typeConvertGenerator = typeConvertGenerator;
     _type         = type;
     _isSet        = type.InheritsOrImplements(typeof(ISet <>));
     _itemsHandler = itemSpecialized;
     Configuration = Array.Empty <byte>();
 }
Esempio n. 12
0
        public NullableFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, byte[] configuration)
        {
            _fieldHandlerFactory    = fieldHandlerFactory;
            _typeConvertorGenerator = typeConvertorGenerator;
            Configuration           = configuration;
            var reader = new SpanReader(configuration);

            _itemHandler = _fieldHandlerFactory.CreateFromReader(ref reader, FieldHandlerOptions.None);
        }
Esempio n. 13
0
 internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName)
 {
     var name = reader.ReadString();
     var handlerName = reader.ReadString();
     var configuration = reader.ReadByteArray();
     var fieldHandler = fieldHandlerFactory.CreateFromName(handlerName, configuration, FieldHandlerOptions.None);
     if (fieldHandler == null) throw new BTDBException(string.Format("FieldHandlerFactory did not created handler {0} in {1}.{2}", handlerName, tableName, name));
     return new TableFieldInfo(name, fieldHandler);
 }
Esempio n. 14
0
 DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, Type type, IFieldHandler keySpecialized, IFieldHandler valueSpecialized)
 {
     _fieldHandlerFactory  = fieldHandlerFactory;
     _typeConvertGenerator = typeConvertGenerator;
     _type          = type;
     _keysHandler   = keySpecialized;
     _valuesHandler = valueSpecialized;
     Configuration  = Array.Empty <byte>();
 }
Esempio n. 15
0
 public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type)
 {
     _fieldHandlerFactory = fieldHandlerFactory;
     _typeConvertorGenerator = typeConvertorGenerator;
     _type = type;
     _itemsHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None);
     var writer = new ByteBufferWriter();
     writer.WriteFieldHandler(_itemsHandler);
     _configuration = writer.Data.ToByteArray();
 }
Esempio n. 16
0
 internal static TableVersionInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName)
 {
     var fieldCount = reader.ReadVUInt32();
     var fieldInfos = new TableFieldInfo[fieldCount];
     for (int i = 0; i < fieldCount; i++)
     {
         fieldInfos[i] = TableFieldInfo.Load(reader, fieldHandlerFactory, tableName, FieldHandlerOptions.None);
     }
     return new TableVersionInfo(fieldInfos);
 }
Esempio n. 17
0
        public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory, Type clientType)
        {
            var fieldHandler = fieldHandlerFactory.CreateFromProperty(tableName, clientType, pi);

            if (fieldHandler == null)
            {
                throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName));
            }
            return(new TableFieldInfo(pi.Name, fieldHandler));
        }
Esempio n. 18
0
        public DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, byte[] configuration)
        {
            _fieldHandlerFactory  = fieldHandlerFactory;
            _typeConvertGenerator = typeConvertGenerator;
            Configuration         = configuration;
            var reader = new ByteArrayReader(configuration);

            _keysHandler   = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None);
            _valuesHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None);
        }
Esempio n. 19
0
 ODBDictionaryFieldHandler(IObjectDB odb, byte[] configuration, int configurationId, IFieldHandler specializedKeyHandler, IFieldHandler specializedValueHandler)
 {
     _odb = odb;
     _fieldHandlerFactory = odb.FieldHandlerFactory;
     _typeConvertorGenerator = odb.TypeConvertorGenerator;
     _configuration = configuration;
     _keysHandler = specializedKeyHandler;
     _valuesHandler = specializedValueHandler;
     CreateConfiguration();
 }
Esempio n. 20
0
 ODBDictionaryFieldHandler(IObjectDB odb, byte[] configuration, int configurationId, IFieldHandler specializedKeyHandler, IFieldHandler specializedValueHandler)
 {
     _odb = odb;
     _fieldHandlerFactory    = odb.FieldHandlerFactory;
     _typeConvertorGenerator = odb.TypeConvertorGenerator;
     _configuration          = configuration;
     _keysHandler            = specializedKeyHandler;
     _valuesHandler          = specializedValueHandler;
     CreateConfiguration();
 }
Esempio n. 21
0
        internal static TableVersionInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName)
        {
            var fieldCount = reader.ReadVUInt32();
            var fieldInfos = new TableFieldInfo[fieldCount];

            for (int i = 0; i < fieldCount; i++)
            {
                fieldInfos[i] = TableFieldInfo.Load(reader, fieldHandlerFactory, tableName);
            }
            return(new TableVersionInfo(fieldInfos));
        }
Esempio n. 22
0
        public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type)
        {
            _fieldHandlerFactory    = fieldHandlerFactory;
            _typeConvertorGenerator = typeConvertorGenerator;
            _type         = type;
            _itemsHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None);
            var writer = new ByteBufferWriter();

            writer.WriteFieldHandler(_itemsHandler);
            _configuration = writer.Data.ToByteArray();
        }
Esempio n. 23
0
 internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory,
     string tableName, FieldHandlerOptions handlerOptions)
 {
     var name = reader.ReadString();
     var handlerName = reader.ReadString();
     var configuration = reader.ReadByteArray();
     var fieldHandler = fieldHandlerFactory.CreateFromName(handlerName, configuration, handlerOptions);
     if (fieldHandler == null) throw new BTDBException(
         $"FieldHandlerFactory did not created handler {handlerName} in {tableName}.{name}");
     return new TableFieldInfo(name, fieldHandler);
 }
Esempio n. 24
0
 public ODBDictionaryFieldHandler(IObjectDB odb, byte[] configuration)
 {
     _odb = odb;
     _fieldHandlerFactory = odb.FieldHandlerFactory;
     _typeConvertorGenerator = odb.TypeConvertorGenerator;
     _configuration = configuration;
     var reader = new ByteArrayReader(configuration);
     _keysHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream);
     _valuesHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None);
     CreateConfiguration();
 }
Esempio n. 25
0
        internal TableFieldInfo Resolve(IFieldHandlerFactory fieldHandlerFactory)
        {
            var fieldHandler = fieldHandlerFactory.CreateFromName(_handlerName, _configuration, _handlerOptions);

            if (fieldHandler == null)
            {
                throw new BTDBException(
                          $"FieldHandlerFactory did not created handler {_handlerName} in {_tableName}.{_name}");
            }
            return(Create(_name, fieldHandler));
        }
Esempio n. 26
0
        internal static TableVersionInfo Load(ref SpanReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName)
        {
            var fieldCount = reader.ReadVUInt32();
            var fieldInfos = new TableFieldInfo[fieldCount];

            for (var i = 0; i < fieldCount; i++)
            {
                fieldInfos[i] = TableFieldInfo.Load(ref reader, fieldHandlerFactory, tableName, FieldHandlerOptions.None);
            }
            return(new TableVersionInfo(fieldInfos));
        }
Esempio n. 27
0
        public ODBSetFieldHandler(IObjectDB odb, Type type, IFieldHandlerFactory fieldHandlerFactory)
        {
            _odb = odb;
            _typeConvertGenerator = odb.TypeConvertorGenerator;
            _type        = type;
            _keysHandler = fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream);
            var writer = new ByteBufferWriter();

            writer.WriteFieldHandler(_keysHandler);
            _configuration = writer.Data.ToByteArray();
            CreateConfiguration();
        }
Esempio n. 28
0
        public ODBDictionaryFieldHandler(IObjectDB odb, byte[] configuration)
        {
            _odb = odb;
            _fieldHandlerFactory    = odb.FieldHandlerFactory;
            _typeConvertorGenerator = odb.TypeConvertorGenerator;
            _configuration          = configuration;
            var reader = new ByteArrayReader(configuration);

            _keysHandler   = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream);
            _valuesHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None);
            CreateConfiguration();
        }
Esempio n. 29
0
        public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, Type type)
        {
            _fieldHandlerFactory  = fieldHandlerFactory;
            _typeConvertGenerator = typeConvertGenerator;
            _type         = type;
            _isSet        = type.InheritsOrImplements(typeof(ISet <>));
            _itemsHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None);
            var writer = new SpanWriter();

            writer.WriteFieldHandler(_itemsHandler);
            Configuration = writer.GetSpan().ToArray();
        }
Esempio n. 30
0
        public DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, Type type)
        {
            _fieldHandlerFactory  = fieldHandlerFactory;
            _typeConvertGenerator = typeConvertGenerator;
            _type          = type;
            _keysHandler   = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None);
            _valuesHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[1], FieldHandlerOptions.None);
            var writer = new SpanWriter();

            writer.WriteFieldHandler(_keysHandler);
            writer.WriteFieldHandler(_valuesHandler);
            Configuration = writer.GetSpan().ToArray();
        }
Esempio n. 31
0
        internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName)
        {
            var name          = reader.ReadString();
            var handlerName   = reader.ReadString();
            var configuration = reader.ReadByteArray();
            var fieldHandler  = fieldHandlerFactory.CreateFromName(tableName, name, handlerName, configuration);

            if (fieldHandler == null)
            {
                throw new BTDBException(string.Format("FieldHandlerFactory did not created handler {0} in {1}.{2}", handlerName, tableName, name));
            }
            return(new TableFieldInfo(name, fieldHandler));
        }
Esempio n. 32
0
        public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory,
                                           FieldHandlerOptions handlerOptions)
        {
            var fieldHandler = fieldHandlerFactory.CreateFromType(pi.PropertyType, handlerOptions);

            if (fieldHandler == null)
            {
                throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName));
            }
            var a = pi.GetCustomAttribute <PersistedNameAttribute>();

            return(new TableFieldInfo(a != null ? a.Name : pi.Name, fieldHandler));
        }
Esempio n. 33
0
 public ODBDictionaryFieldHandler(IObjectDB odb, Type type)
 {
     _odb = odb;
     _fieldHandlerFactory = odb.FieldHandlerFactory;
     _typeConvertorGenerator = odb.TypeConvertorGenerator;
     _type = type;
     _keysHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream);
     _valuesHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[1], FieldHandlerOptions.None);
     var writer = new ByteBufferWriter();
     writer.WriteFieldHandler(_keysHandler);
     writer.WriteFieldHandler(_valuesHandler);
     _configuration = writer.Data.ToByteArray();
     CreateConfiguration();
 }
Esempio n. 34
0
        public static RelationVersionInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string relationName)
        {
            var pkCount     = reader.ReadVUInt32();
            var primaryKeys = new List <TableFieldInfo>((int)pkCount);

            for (var i = 0u; i < pkCount; i++)
            {
                primaryKeys.Add(TableFieldInfo.Load(reader, fieldHandlerFactory, relationName, FieldHandlerOptions.Orderable));
            }
            var skFieldCount       = reader.ReadVUInt32();
            var secondaryKeyFields = new TableFieldInfo[skFieldCount];

            for (var i = 0; i < skFieldCount; i++)
            {
                secondaryKeyFields[i] = TableFieldInfo.Load(reader, fieldHandlerFactory, relationName,
                                                            FieldHandlerOptions.Orderable);
            }
            var skCount            = reader.ReadVUInt32();
            var secondaryKeys      = new Dictionary <uint, SecondaryKeyInfo>((int)skCount);
            var secondaryKeysNames = new Dictionary <string, uint>((int)skCount);

            for (var i = 0; i < skCount; i++)
            {
                var skIndex = reader.ReadVUInt32();
                var info    = new SecondaryKeyInfo();
                info.Index = reader.ReadVUInt32();
                info.Name  = reader.ReadString();
                var cnt = reader.ReadVUInt32();
                info.Fields = new List <FieldId>((int)cnt);
                for (var j = 0; j < cnt; j++)
                {
                    var fromPrimary = reader.ReadBool();
                    var index       = reader.ReadVUInt32();
                    info.Fields.Add(new FieldId(fromPrimary, index));
                }
                secondaryKeys.Add(skIndex, info);
                secondaryKeysNames.Add(info.Name, skIndex);
            }

            var fieldCount = reader.ReadVUInt32();
            var fieldInfos = new TableFieldInfo[fieldCount];

            for (int i = 0; i < fieldCount; i++)
            {
                fieldInfos[i] = TableFieldInfo.Load(reader, fieldHandlerFactory, relationName, FieldHandlerOptions.None);
            }

            return(new RelationVersionInfo(primaryKeys, secondaryKeys, secondaryKeysNames, fieldInfos));
        }
Esempio n. 35
0
        internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory,
                                            string tableName, FieldHandlerOptions handlerOptions)
        {
            var name          = reader.ReadString();
            var handlerName   = reader.ReadString();
            var configuration = reader.ReadByteArray();
            var fieldHandler  = fieldHandlerFactory.CreateFromName(handlerName !, configuration, handlerOptions);

            if (fieldHandler == null)
            {
                throw new BTDBException(
                          $"FieldHandlerFactory did not created handler {handlerName} in {tableName}.{name}");
            }
            return(new TableFieldInfo(name !, fieldHandler));
        }
Esempio n. 36
0
 public void ResolveFieldHandlers(IFieldHandlerFactory fieldHandlerFactory)
 {
     for (var i = 0; i < _primaryKeyFields.Count; i++)
     {
         _primaryKeyFields[i] = ((UnresolvedTableFieldInfo)_primaryKeyFields[i]).Resolve(fieldHandlerFactory);
     }
     for (var i = 0; i < _secondaryKeyFields.Count; i++)
     {
         _secondaryKeyFields[i] = ((UnresolvedTableFieldInfo)_secondaryKeyFields[i]).Resolve(fieldHandlerFactory);
     }
     for (var i = 0; i < _fields.Length; i++)
     {
         _fields[i] = ((UnresolvedTableFieldInfo)_fields[i]).Resolve(fieldHandlerFactory);
     }
 }
Esempio n. 37
0
        public NullableFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type)
        {
            _fieldHandlerFactory    = fieldHandlerFactory;
            _typeConvertorGenerator = typeConvertorGenerator;
            _type        = type;
            _itemHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None);
            if (_itemHandler.NeedsCtx())
            {
                throw new NotSupportedException("Nullable complex types are not supported.");
            }
            var writer = new SpanWriter();

            writer.WriteFieldHandler(_itemHandler);
            Configuration = writer.GetSpan().ToArray();
        }
Esempio n. 38
0
 public MethodInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory)
 {
     _name = reader.ReadString();
     _ifaceName = reader.ReadString();
     var resultFieldHandlerName = reader.ReadString();
     if (resultFieldHandlerName != null)
     {
         _resultFieldHandler = fieldHandlerFactory.CreateFromName(resultFieldHandlerName, reader.ReadByteArray(), FieldHandlerOptions.None);
     }
     var parameterCount = reader.ReadVUInt32();
     _parameters = new ParameterInf[parameterCount];
     for (int i = 0; i < _parameters.Length; i++)
     {
         _parameters[i] = new ParameterInf(reader, fieldHandlerFactory);
     }
 }
Esempio n. 39
0
        public ODBDictionaryFieldHandler(IObjectDB odb, Type type, IFieldHandlerFactory fieldHandlerFactory)
        {
            _odb = odb;
            _typeConvertGenerator = odb.TypeConvertorGenerator;
            _type        = type;
            _keysHandler = fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0],
                                                              FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream);
            _valuesHandler =
                fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[1], FieldHandlerOptions.None);
            var writer = new SpanWriter();

            writer.WriteFieldHandler(_keysHandler);
            writer.WriteFieldHandler(_valuesHandler);
            _configuration = writer.GetSpan().ToArray();
            CreateConfiguration();
        }
Esempio n. 40
0
 public TypeInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory)
 {
     _type = null;
     _name = reader.ReadString();
     var methodCount = reader.ReadVUInt32();
     _methodInfs = new MethodInf[methodCount];
     for (int i = 0; i < methodCount; i++)
     {
         _methodInfs[i] = new MethodInf(reader, fieldHandlerFactory);
     }
     var properyCount = reader.ReadVUInt32();
     _propertyInfs = new PropertyInf[properyCount];
     for (int i = 0; i < properyCount; i++)
     {
         PropertyInfs[i] = new PropertyInf(reader, fieldHandlerFactory);
     }
 }
Esempio n. 41
0
        public MethodInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory)
        {
            _name      = reader.ReadString();
            _ifaceName = reader.ReadString();
            var resultFieldHandlerName = reader.ReadString();

            if (resultFieldHandlerName != null)
            {
                _resultFieldHandler = fieldHandlerFactory.CreateFromName(resultFieldHandlerName, reader.ReadByteArray(), FieldHandlerOptions.None);
            }
            var parameterCount = reader.ReadVUInt32();

            _parameters = new ParameterInf[parameterCount];
            for (int i = 0; i < _parameters.Length; i++)
            {
                _parameters[i] = new ParameterInf(reader, fieldHandlerFactory);
            }
        }
Esempio n. 42
0
 public MethodInf(MethodInfo method, IFieldHandlerFactory fieldHandlerFactory)
 {
     MethodInfo = method;
     _name = method.Name;
     foreach (var itf in GetInterfacesForMethod(method.DeclaringType, method.GetBaseDefinition()))
     {
         _ifaceName = itf.Name;
         break;
     }
     var syncReturnType = method.ReturnType.UnwrapTask();
     if (syncReturnType != typeof(void))
         _resultFieldHandler = fieldHandlerFactory.CreateFromType(syncReturnType, FieldHandlerOptions.None);
     var parameterInfos = method.GetParameters();
     _parameters = new ParameterInf[parameterInfos.Length];
     for (int i = 0; i < parameterInfos.Length; i++)
     {
         _parameters[i] = new ParameterInf(parameterInfos[i], fieldHandlerFactory);
     }
 }
Esempio n. 43
0
        public TypeInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory)
        {
            _type = null;
            _name = reader.ReadString();
            var methodCount = reader.ReadVUInt32();

            _methodInfs = new MethodInf[methodCount];
            for (int i = 0; i < methodCount; i++)
            {
                _methodInfs[i] = new MethodInf(reader, fieldHandlerFactory);
            }
            var properyCount = reader.ReadVUInt32();

            _propertyInfs = new PropertyInf[properyCount];
            for (int i = 0; i < properyCount; i++)
            {
                PropertyInfs[i] = new PropertyInf(reader, fieldHandlerFactory);
            }
        }
Esempio n. 44
0
 public TypeInf(Type type, IFieldHandlerFactory fieldHandlerFactory)
 {
     _type = type;
     _name = type.Name;
     var methodInfs = new List<MethodInf>();
     var propertyInfs = new List<PropertyInf>();
     if (type.IsSubclassOf(typeof(Delegate)))
     {
         var method = type.GetMethod("Invoke");
         if (IsMethodSupported(method, fieldHandlerFactory))
         {
             methodInfs.Add(new MethodInf(method, fieldHandlerFactory));
         }
     }
     else
     {
         var methods = type.GetMethods();
         foreach (var method in methods)
         {
             var methodBase = method.GetBaseDefinition();
             if (methodBase.DeclaringType == typeof(object)) continue;
             if (methodBase.GetBaseDefinition().DeclaringType == typeof(IDisposable)) continue;
             if (!methodBase.IsPublic) continue;
             if (!IsMethodSupported(method, fieldHandlerFactory)) continue;
             methodInfs.Add(new MethodInf(method, fieldHandlerFactory));
         }
         var properties = type.GetProperties();
         foreach (var property in properties)
         {
             if (!property.CanRead || !property.CanWrite) continue;
             if (property.GetCustomAttributes(typeof(NotStoredAttribute), true).Length != 0) continue;
             if (property.GetIndexParameters().Length != 0) continue;
             if (property.GetGetMethod()==null) continue;
             if (property.GetSetMethod()==null) continue;
             if (!fieldHandlerFactory.TypeSupported(property.PropertyType)) continue;
             propertyInfs.Add(new PropertyInf(property, fieldHandlerFactory));
         }
     }
     _methodInfs = methodInfs.ToArray();
     _propertyInfs = propertyInfs.ToArray();
 }
Esempio n. 45
0
        public MethodInf(MethodInfo method, IFieldHandlerFactory fieldHandlerFactory)
        {
            MethodInfo = method;
            _name      = method.Name;
            foreach (var itf in GetInterfacesForMethod(method.DeclaringType, method.GetBaseDefinition()))
            {
                _ifaceName = itf.Name;
                break;
            }
            var syncReturnType = method.ReturnType.UnwrapTask();

            if (syncReturnType != typeof(void))
            {
                _resultFieldHandler = fieldHandlerFactory.CreateFromType(syncReturnType, FieldHandlerOptions.None);
            }
            var parameterInfos = method.GetParameters();

            _parameters = new ParameterInf[parameterInfos.Length];
            for (int i = 0; i < parameterInfos.Length; i++)
            {
                _parameters[i] = new ParameterInf(parameterInfos[i], fieldHandlerFactory);
            }
        }
Esempio n. 46
0
 public ParameterInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory)
 {
     _name = reader.ReadString();
     var handlerName = reader.ReadString();
     _fieldHandler = fieldHandlerFactory.CreateFromName(handlerName, reader.ReadByteArray(), FieldHandlerOptions.None);
 }
Esempio n. 47
0
 public ParameterInf(ParameterInfo parameter, IFieldHandlerFactory fieldHandlerFactory)
 {
     _name = parameter.Name;
     _fieldHandler = fieldHandlerFactory.CreateFromType(parameter.ParameterType, FieldHandlerOptions.None);
 }
Esempio n. 48
0
 public PropertyInf(PropertyInfo property, IFieldHandlerFactory fieldHandlerFactory)
 {
     _name = property.Name;
     _fieldHandler= fieldHandlerFactory.CreateFromType(property.PropertyType, FieldHandlerOptions.None);
 }
Esempio n. 49
0
 public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory, Type clientType)
 {
     var fieldHandler = fieldHandlerFactory.CreateFromProperty(tableName, clientType, pi);
     if (fieldHandler == null) throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName));
     return new TableFieldInfo(pi.Name, fieldHandler);
 }
Esempio n. 50
0
 public RelationInfoResolver(ObjectDB objectDB)
 {
     _fieldHandlerFactory = objectDB.FieldHandlerFactory;
     _typeConvertorGenerator = objectDB.TypeConvertorGenerator;
 }
Esempio n. 51
0
 static bool IsMethodSupported(MethodInfo method, IFieldHandlerFactory fieldHandlerFactory)
 {
     var syncReturnType = method.ReturnType.UnwrapTask();
     if (syncReturnType != typeof(void))
         if (!fieldHandlerFactory.TypeSupported(syncReturnType)) return false;
     foreach (var parameter in method.GetParameters())
     {
         if (parameter.IsOptional) return false;
         if (parameter.IsOut) return false;
         if (parameter.IsRetval) return false;
         if (!fieldHandlerFactory.TypeSupported(parameter.ParameterType)) return false;
     }
     return true;
 }