• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# ActivationId类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中ActivationId的典型用法代码示例。如果您正苦于以下问题:C# ActivationId类的具体用法?C# ActivationId怎么用?C# ActivationId使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ActivationId类属于命名空间,在下文中一共展示了ActivationId类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: GetAddress

        public static ActivationAddress GetAddress(SiloAddress silo, GrainId grain, ActivationId activation, MultiClusterStatus status = MultiClusterStatus.Owned)
        {
            // Silo part is not mandatory
            if (grain == null) throw new ArgumentNullException("grain");

            return new ActivationAddress(silo, grain, activation, status);
        }
开发者ID:PaulNorth,项目名称:orleans,代码行数:7,代码来源:ActivationAddress.cs


示例2: GetAddress

        public static ActivationAddress GetAddress(SiloAddress silo, GrainId grain, ActivationId activation)
        {
            // Silo part is not mandatory
            if (grain == null) throw new ArgumentNullException("grain");

            return new ActivationAddress(silo, grain, activation);
        }
开发者ID:osjimenez,项目名称:orleans,代码行数:7,代码来源:ActivationAddress.cs


示例3: ActivationAddress

 private ActivationAddress(SiloAddress silo, GrainId grain, ActivationId activation, MultiClusterStatus status)
 {
     Silo = silo;
     Grain = grain;
     Activation = activation;
     Status = status;
 }
开发者ID:PaulNorth,项目名称:orleans,代码行数:7,代码来源:ActivationAddress.cs


示例4: AddSingleActivation

 public ActivationAddress AddSingleActivation(GrainId grain, ActivationId act, SiloAddress silo)
 {
     SingleInstance = true;
     if (Instances.Count > 0)
     {
         var item = Instances.First();
         return ActivationAddress.GetAddress(item.Value.SiloAddress, grain, item.Key);
     }
     else
     {
         Instances.Add(act, new ActivationInfo(silo));
         VersionTag = rand.Next();
         return ActivationAddress.GetAddress(silo, grain, act);
     }
 }
开发者ID:sbambach,项目名称:orleans,代码行数:15,代码来源:GrainDirectoryPartition.cs


示例5: AddSingleActivation

 public ActivationAddress AddSingleActivation(GrainId grain, ActivationId act, SiloAddress silo, MultiClusterStatus registrationStatus = MultiClusterStatus.Owned)
 {
     SingleInstance = true;
     if (Instances.Count > 0)
     {
         var item = Instances.First();
         return ActivationAddress.GetAddress(item.Value.SiloAddress, grain, item.Key);
     }
     else
     {
         Instances.Add(act, new ActivationInfo(silo, registrationStatus));
         VersionTag = rand.Next();
         return ActivationAddress.GetAddress(silo, grain, act, registrationStatus);
     }
 }
开发者ID:PaulNorth,项目名称:orleans,代码行数:15,代码来源:GrainDirectoryPartition.cs


示例6: AddActivation

 public bool AddActivation(ActivationId act, SiloAddress silo)
 {
     if (SingleInstance && (Instances.Count > 0) && !Instances.ContainsKey(act))
     {
         throw new InvalidOperationException(
             "Attempting to add a second activation to an existing grain in single activation mode");
     }
     IActivationInfo info;
     if (Instances.TryGetValue(act, out info))
     {
         if (info.SiloAddress.Equals(silo))
         {
             // just refresh, no need to generate new VersionTag
             return false;
         }
     }
     Instances[act] = new ActivationInfo(silo);
     VersionTag = rand.Next();
     return true;
 }
开发者ID:sbambach,项目名称:orleans,代码行数:20,代码来源:GrainDirectoryPartition.cs


示例7: CacheOrUpdateRemoteClusterRegistration

        public void CacheOrUpdateRemoteClusterRegistration(GrainId grain, ActivationId oldActivation, ActivationAddress otherClusterAddress)
        {
            lock (lockable)
            {
                if (partitionData.ContainsKey(grain))
                {
                    partitionData[grain].CacheOrUpdateRemoteClusterRegistration(grain, oldActivation,
                        otherClusterAddress.Activation, otherClusterAddress.Silo);

                }
                else
                {
                    AddSingleActivation(grain, otherClusterAddress.Activation, otherClusterAddress.Silo,
                        GrainDirectoryEntryStatus.Cached);
                }
            }
        }
开发者ID:vobradovich,项目名称:orleans,代码行数:17,代码来源:GrainDirectoryPartition.cs


示例8: DeactivateOnIdle

        public void DeactivateOnIdle(ActivationId id)
        {
            ActivationData data;
            if (!Catalog.TryGetActivationData(id, out data)) return; // already gone

            data.ResetKeepAliveRequest(); // DeactivateOnIdle method would undo / override any current “keep alive” setting, making this grain immideately avaliable for deactivation.
            Catalog.DeactivateActivationOnIdle(data);
        }
开发者ID:PaulNorth,项目名称:orleans,代码行数:8,代码来源:InsideRuntimeClient.cs


示例9: RemoveActivation

 /// <summary>
 /// Removes an activation of the given grain from the partition
 /// </summary>
 /// <param name="grain"></param>
 /// <param name="activation"></param>
 /// <param name="force"></param>
 internal void RemoveActivation(GrainId grain, ActivationId activation, bool force)
 {
     lock (lockable)
     {
         if (partitionData.ContainsKey(grain) && partitionData[grain].RemoveActivation(activation, force))
         {
             partitionData.Remove(grain);
         }
     }
     if (log.IsVerbose3) log.Verbose3("Removing activation for grain {0}", grain.ToString());
 }
开发者ID:sbambach,项目名称:orleans,代码行数:17,代码来源:GrainDirectoryPartition.cs


示例10: IsReentrantGrain

 internal bool IsReentrantGrain(ActivationId running)
 {
     ActivationData target;
     GrainTypeData data;
     return TryGetActivationData(running, out target) &&
         target.GrainInstance != null &&
         GrainTypeManager.TryGetData(TypeUtils.GetFullName(target.GrainInstanceType), out data) &&
         data.IsReentrant;
 }
开发者ID:kucheruk,项目名称:orleans,代码行数:9,代码来源:Catalog.cs


示例11: CanInterleave

 internal bool CanInterleave(ActivationId running, Message message)
 {
     ActivationData target;
     GrainTypeData data;
     return TryGetActivationData(running, out target) &&
         target.GrainInstance != null &&
         GrainTypeManager.TryGetData(TypeUtils.GetFullName(target.GrainInstanceType), out data) &&
         (data.IsReentrant || data.MayInterleave((InvokeMethodRequest)message.BodyObject));
 }
开发者ID:Carlm-MS,项目名称:orleans,代码行数:9,代码来源:Catalog.cs


示例12: LookUpActivations

        /// <summary>
        /// Returns a list of activations (along with the version number of the list) for the given grain.
        /// If the grain is not found, null is returned.
        /// </summary>
        /// <param name="grain"></param>
        /// <returns></returns>
        internal AddressesAndTag LookUpActivations(GrainId grain)
        {
            var result = new AddressesAndTag();
            ActivationId[] activationIds;
            IActivationInfo[] activationInfos;
            const int arrayReusingThreshold = 100;
            int grainInfoInstancesCount;

            lock (lockable)
            {
                IGrainInfo graininfo;
                if (!partitionData.TryGetValue(grain, out graininfo))
                {
                    return result;
                }

                result.VersionTag = graininfo.VersionTag;

                grainInfoInstancesCount = graininfo.Instances.Count;
                if (grainInfoInstancesCount < arrayReusingThreshold)
                {
                    if ((activationIds = activationIdsHolder) == null)
                    {
                        activationIdsHolder = activationIds = new ActivationId[arrayReusingThreshold];
                    }

                    if ((activationInfos = activationInfosHolder) == null)
                    {
                        activationInfosHolder = activationInfos = new IActivationInfo[arrayReusingThreshold];
                    }
                }
                else
                {
                    activationIds = new ActivationId[grainInfoInstancesCount];
                    activationInfos = new IActivationInfo[grainInfoInstancesCount];
                }


                graininfo.Instances.Keys.CopyTo(activationIds, 0);
                graininfo.Instances.Values.CopyTo(activationInfos, 0);
            }

            result.Addresses = new List<ActivationAddress>(grainInfoInstancesCount);
            for (var i = 0; i < grainInfoInstancesCount; i++)
            {
                var activationInfo = activationInfos[i];
                if (IsValidSilo(activationInfo.SiloAddress))
                {
                    result.Addresses.Add(ActivationAddress.GetAddress(activationInfo.SiloAddress, grain, activationIds[i]));
                }

                activationInfos[i] = null;
                activationIds[i] = null;
            }

            return result;
        }
开发者ID:osjimenez,项目名称:orleans,代码行数:63,代码来源:GrainDirectoryPartition.cs


示例13: AddActivation

        /// <summary>
        /// Adds a new activation to the directory partition
        /// </summary>
        /// <param name="grain"></param>
        /// <param name="activation"></param>
        /// <param name="silo"></param>
        /// <returns>The version associated with this directory mapping</returns>
        internal virtual int AddActivation(GrainId grain, ActivationId activation, SiloAddress silo)
        {
            if (!IsValidSilo(silo))
            {
                return GrainInfo.NO_ETAG;
            }

            IGrainInfo grainInfo;
            lock (lockable)
            {
                if (!partitionData.TryGetValue(grain, out grainInfo))
                {
                    partitionData[grain] = grainInfo = new GrainInfo();
                }

                grainInfo.AddActivation(activation, silo);
            }

            if (log.IsVerbose3) log.Verbose3("Adding activation for grain {0}", grain.ToString());
            return grainInfo.VersionTag;
        }
开发者ID:osjimenez,项目名称:orleans,代码行数:28,代码来源:GrainDirectoryPartition.cs


示例14: UpdateClusterRegistrationStatus

 public bool UpdateClusterRegistrationStatus(GrainId grain, ActivationId activationId, MultiClusterStatus registrationStatus, MultiClusterStatus? compareWith = null)
 {
     lock (lockable)
     {
         if (partitionData.ContainsKey(grain))
         {
             return partitionData[grain].UpdateClusterRegistrationStatus(activationId, registrationStatus, compareWith);
         }
         return false;
     }
 }
开发者ID:PaulNorth,项目名称:orleans,代码行数:11,代码来源:GrainDirectoryPartition.cs


示例15: UpdateClusterRegistrationStatus

 public bool UpdateClusterRegistrationStatus(GrainId grain, ActivationId activationId, GrainDirectoryEntryStatus registrationStatus, GrainDirectoryEntryStatus? compareWith = null)
 {
     lock (lockable)
     {
         IGrainInfo graininfo;
         if (partitionData.TryGetValue(grain, out graininfo))
         {
             return graininfo.UpdateClusterRegistrationStatus(activationId, registrationStatus, compareWith);
         }
         return false;
     }
 }
开发者ID:vobradovich,项目名称:orleans,代码行数:12,代码来源:GrainDirectoryPartition.cs


示例16: Write

 /// <summary> Write a <c>ActivationId</c> value to the stream. </summary>
 internal void Write(ActivationId id)
 {
     Write(id.Key);
 }
开发者ID:taoliseki,项目名称:orleans,代码行数:5,代码来源:BinaryTokenStreamWriter.cs


示例17: RemoveActivation

 public bool RemoveActivation(ActivationId act, UnregistrationCause cause, out IActivationInfo info, out bool wasRemoved)
 {
     info = null;
     wasRemoved = false;
     if (Instances.TryGetValue(act, out info) && info.OkToRemove(cause))
     {
         Instances.Remove(act);
         wasRemoved = true;
         VersionTag = rand.Next();
     }
     return Instances.Count == 0;
 }
开发者ID:vobradovich,项目名称:orleans,代码行数:12,代码来源:GrainDirectoryPartition.cs


示例18: TryGetActivationData

        /// <summary>
        /// Try to get runtime data for an activation
        /// </summary>
        /// <param name="activationId"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public bool TryGetActivationData(ActivationId activationId, out ActivationData data)
        {
            data = null;
            if (activationId.IsSystem) return false;

            data = activations.FindTarget(activationId);
            return data != null;
        }
开发者ID:kucheruk,项目名称:orleans,代码行数:14,代码来源:Catalog.cs


示例19: AddSingleActivation

        /// <summary>
        /// Adds a new activation to the directory partition
        /// </summary>
        /// <param name="grain"></param>
        /// <param name="activation"></param>
        /// <param name="silo"></param>
        /// <param name="registrationStatus"></param>
        /// <returns>The registered ActivationAddress and version associated with this directory mapping</returns>
        internal virtual AddressAndTag AddSingleActivation(GrainId grain, ActivationId activation, SiloAddress silo, GrainDirectoryEntryStatus registrationStatus)
        {
            if (log.IsVerbose3) log.Verbose3("Adding single activation for grain {0}{1}{2}", silo, grain, activation);

            AddressAndTag result = new AddressAndTag();

            if (!IsValidSilo(silo))
                return result;
            
            lock (lockable)
            {
                if (!partitionData.ContainsKey(grain))
                {
                    partitionData[grain] = new GrainInfo();
                }
                var grainInfo = partitionData[grain];
                result.Address = grainInfo.AddSingleActivation(grain, activation, silo, registrationStatus);
                result.VersionTag = grainInfo.VersionTag;
            }
            return result;
        }
开发者ID:vobradovich,项目名称:orleans,代码行数:29,代码来源:GrainDirectoryPartition.cs


示例20: DeactivateOnIdle

 public void DeactivateOnIdle(ActivationId id)
 {
     throw new InvalidOperationException();
 }
开发者ID:randa1,项目名称:orleans,代码行数:4,代码来源:OutsideRuntimeClient.cs



注:本文中的ActivationId类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# ActivationNetwork类代码示例发布时间:2022-05-24
下一篇:
C# ActivatedEventArgs类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap