Пример #1
0
        public void OnInvoke(InvokeMethodRequest request, IGrain grain)
        {
            // (NOT YET AVAILABLE) Interface name is available from: <c>grainReference.InterfaceName</c>
            // (NOT YET AVAILABLE) Method name is available from: <c>grainReference.GetMethodName(request.InterfaceId, request.MethodId)</c>
            // GrainId is available from: <c>grainReference.GrainId</c>
            // PrimaryKey is availabe from: <c>grainReference.GrainId.GetPrimaryKeyLong()</c> or <c>grainReference.GrainId.GetPrimaryKey()</c> depending on key type.
            // Call arguments are available from: <c>request.Arguments</c> array

            TotalCalls++;

            output.WriteLine("OnInvoke TotalCalls={0}", TotalCalls);

            try
            {
                output.WriteLine("OnInvoke called for Grain={0} PrimaryKey={1} with {2} arguments",
                                 grain.GetType().FullName,
                                 grain.GetGrainIdentity(),
                                 request.Arguments != null ? request.Arguments.Length : 0);
            }
            catch (Exception exc)
            {
                output.WriteLine("**** Error OnInvoke for Grain={0} GrainId={1} with {2} arguments. Exception = {3}",
                                 grain.GetType().FullName,
                                 ((GrainReference)grain).GrainId,
                                 request.Arguments != null ? request.Arguments.Length : 0,
                                 exc);
            }

            if (setActivityId != Guid.Empty)
            {
                RequestContextTestUtils.SetActivityId(setActivityId);

                output.WriteLine("OnInvoke Set ActivityId={0}", setActivityId);
            }
            output.WriteLine("OnInvoke Current ActivityId={0}", RequestContextTestUtils.GetActivityId());
        }
Пример #2
0
        public static TIdentity GetId <TIdentity>(this IGrain grain)
        {
            var strId = grain.GetGrainIdentity().PrimaryKeyString;

            return((TIdentity)Activator.CreateInstance(typeof(TIdentity), strId));
        }