public static IList <IDevice> GetAllDevices(this IDeviceGroup deviceGroup) { return(deviceGroup .GetAllNodesUsingTraverseFromTopLeft() .SelectMany(x => x.Devices) .ToList()); }
void AppendParent(IDeviceGroup deviceGroup, IDeviceGroup parent = null) { deviceGroup.Parent = parent; foreach (var @group in deviceGroup.DeviceGroups) { AppendParent(group, deviceGroup); } }
// private void NotifyMissedDeviceName(string deviceName) // { // Debug.WriteLine("deviceName is not be found: " + deviceName); // MissedDeviceCount++; // } // // public IDevice<T> GetDevice<T>(string deviceName) // { // var device = Context.Devices.SingleOrDefault(x => x.Name == deviceName); // var deviceT = device as IDevice<T>; // if (deviceT != null) return deviceT; // // NotifyMissedDeviceName(deviceName); // MissedDeviceCount++; // // IDevice sharedDevice; // var isExist = _sharedDevices.TryGetValue(deviceName, out sharedDevice); // if (isExist) // return sharedDevice as IDevice<T>; // // var newDevice = ServiceLocator.GetInstance<ISimpleDevice<T>>(); // _sharedDevices.Add(deviceName, newDevice); // // return newDevice; // } public void Initialize(IDeviceGroup context) { OnInitializing(context); _context = context; OnInitialized(context); }
public static IDevice GetDevice(this IDeviceGroup deviceGroup, string deviceName, Type dataType) { MethodInfo mi = typeof(IDeviceGroup).GetMethod("GetDevice"); mi = mi.MakeGenericMethod(new Type[] { dataType }); var o = mi.Invoke(deviceGroup, new object[] { deviceName }); return(o as IDevice); }
public void Reset() { OnResetting(Context); var context = _context; _context = null; OnReset(context); }
public Mood( IDeviceGroup deviceGroup, Request moodRequest, int id, Func <int, Task <IDevice> > getDeviceFunc) { _moodRequest = moodRequest; _getDeviceFunc = getDeviceFunc; DeviceGroup = deviceGroup; Id = id; }
public void Initial() { string wurflDataFile = HttpContext.Current.Server.MapPath(Constants.WurflDataFilePath); string wurflPatchFile = HttpContext.Current.Server.MapPath(Constants.WurflPatchFilePath); InMemoryConfigurer configurer = new InMemoryConfigurer().MainFile(wurflDataFile).PatchFile(wurflPatchFile); IWURFLManager manager = WURFLManagerBuilder.Build(configurer); AppCtx.Cache.AddObject(Constants.WurflManagerCacheKey, manager); #region 初始化所有的设备组实现类 if (deviceGroups == null) { deviceGroups = new List <IDeviceGroup>(); } if (deviceGroups.Count == 0) { GeneralConfigInfo si = GeneralConfigs.GetConfig(); if (string.IsNullOrEmpty(si.DeviceGroups)) { Exception ex = new Exception("请配置IDeviceGroup设备组接口的实现类,在general.config里配置。"); Framework.LogHelper.WriteLog(GetType(), ex); throw ex; } string[] DeviceGroups = si.DeviceGroups.Split(';'); foreach (string s in DeviceGroups) { Assembly assembly = Assembly.Load(s.Split(',')[1]); string className = s.Split(',')[0]; IDeviceGroup gGroup = (IDeviceGroup)assembly.CreateInstance(className, true); gGroup.Initial(); deviceGroups.Add(gGroup); } deviceGroups.Sort(new DeviceGroupComparer()); deviceGroups.Reverse(); } #endregion }
protected virtual void OnInitializing(IDeviceGroup context) { }
protected override void OnInitialized(IDeviceGroup context) { base.OnInitialized(context); }
protected virtual void OnBindingTo(IDeviceGroup context) { }
protected override void OnInitialized(IDeviceGroup context) { base.OnInitialized(context); var type = this.GetType(); /* foreach (var prop in type.GetProperties()) * { * var attri = prop.GetCustomAttributes(typeof(DeviceAttribute), false).FirstOrDefault() as DeviceAttribute; * if (attri == null) continue; * * var dataType = prop.PropertyType.GetGenericArguments()[0]; * * string deviceName; * if (attri.Key == null || string.IsNullOrEmpty(attri.Key.ToString())) * { * var i = prop.Name.LastIndexOf("Device", System.StringComparison.Ordinal); * if (i == -1) * { * throw new InvalidOperationException("DeviceAttribute must declare name end with [Device]"); * } * deviceName = prop.Name.Remove(i, "Device".Count()); * } * else * { * deviceName = attri.Key.ToString(); * } * * var device = Context.GetDevice(deviceName, dataType); * this.SetPropertyValue(prop.Name, device); * }*/ var attributePropertyInfos = type.GetAttributePropertyInfos(typeof(DeviceAttribute), false); foreach (var attributePropertyInfo in attributePropertyInfos) { // var attri = prop.GetCustomAttributes(typeof(DeviceAttribute), false).FirstOrDefault() as DeviceAttribute; // if (attri == null) continue; var attri = (DeviceAttribute)attributePropertyInfo.Attribute; var prop = attributePropertyInfo.PropertyInfo; var dataType = prop.PropertyType.GetGenericArguments()[0]; string deviceName; if (attri.Key == null || string.IsNullOrEmpty(attri.Key.ToString())) { var i = prop.Name.LastIndexOf("Device", System.StringComparison.Ordinal); if (i == -1) { throw new InvalidOperationException("DeviceAttribute must declare name end with [Device]"); } deviceName = prop.Name.Remove(i, "Device".Count()); } else { deviceName = attri.Key.ToString(); } var device = Context.GetDevice(deviceName, dataType); this.SetPropertyValue(prop.Name, device); } }
/// <summary>TRUE allows a device to change states only once</summary> public void device_group_change_only_once_more_set(IDeviceGroup device_group, bool boolean) { }
/// <summary>changes the desired value of the specified device group.</summary> public void device_group_set(IDevice device, IDeviceGroup device_group, float real) { }
protected virtual void OnReset(IDeviceGroup context) { }
public static IDevice <T> GetDevice <T>(this IDeviceGroup deviceGroup, object deviceName) { return(deviceGroup.GetDevice <T>(deviceName.ToString())); }
public static IDeviceGroup GetDeviceGroupByName(this IDeviceGroup deviceGroup, string deviceGroupName) { return(GetDeviceGroupsByName(deviceGroup, deviceGroupName).FirstOrDefault()); }
public static IEnumerable <IDeviceGroup> GetDeviceGroupsByName(this IDeviceGroup deviceGroup, string deviceGroupName, int count) { return(GetDeviceGroupsByName(deviceGroup, deviceGroupName).Take(count)); }
public static IEnumerable <IDeviceGroup> GetDeviceGroupsByName(this IDeviceGroup deviceGroup, string deviceGroupName) { return(deviceGroup.DeviceGroups.Where(x => x.Name == deviceGroupName)); }
public void BindingTo(IDeviceGroup context) { _context = context; OnBindingTo(context); }
public static IRetainedSubject <T> GetSharedSubject <T>(this IDeviceGroup deviceGroup, object deviceName) { return(deviceGroup.GetSharedSubject <T>(deviceName.ToString())); }
/// <summary>returns the desired value of the specified device group.</summary> public float device_group_get(IDeviceGroup device_group) { return(default(float)); }
public static IDevice <bool> GetBooleanDevice(this IDeviceGroup deviceGroup, object deviceName) { return(deviceGroup.GetDevice <bool>(deviceName.ToString())); }
/// <summary>instantaneously changes the value of the specified device group.</summary> public void device_group_set_immediate(IDeviceGroup device_group, float real) { }
public static IDevice <int> GetInt32Device(this IDeviceGroup deviceGroup, object deviceName) { return(deviceGroup.GetDevice <int>(deviceName.ToString())); }