예제 #1
0
        public void Dispatch(Message message)
        {
            if (!ObserverGrainId.TryParse(message.TargetGrain, out var observerId))
            {
                this.logger.LogError(
                    (int)ErrorCode.ProxyClient_OGC_TargetNotFound_2,
                    "Message is not addresses to an observer. {Message}",
                    message);
                return;
            }

            if (this.localObjects.TryGetValue(observerId, out var objectData))
            {
                this.Invoke(objectData, message);
            }
            else
            {
                this.logger.Error(
                    ErrorCode.ProxyClient_OGC_TargetNotFound,
                    String.Format(
                        "Unexpected target grain in request: {0}. Message={1}",
                        message.TargetGrain,
                        message));
            }
        }
예제 #2
0
        public void DeleteObjectReference(IAddressable obj)
        {
            if (!(obj is GrainReference reference))
            {
                throw new ArgumentException("Argument reference is not a grain reference.");
            }

            if (!ObserverGrainId.TryParse(reference.GrainId, out var observerId))
            {
                throw new ArgumentException($"Reference {reference.GrainId} is not an observer reference");
            }

            if (!localObjects.TryDeregister(observerId))
            {
                throw new ArgumentException("Reference is not associated with a local object.", "reference");
            }
        }
예제 #3
0
        public void Dispatch(Message message)
        {
            if (!ObserverGrainId.TryParse(message.TargetGrain, out var observerId))
            {
                this.logger.LogError(
                    (int)ErrorCode.ProxyClient_OGC_TargetNotFound_2,
                    "Message is not addressed to an observer. {Message}",
                    message);
                return;
            }

            if (this.localObjects.TryGetValue(observerId, out var objectData))
            {
                objectData.ReceiveMessage(message);
            }
            else
            {
                this.logger.LogError(
                    (int)ErrorCode.ProxyClient_OGC_TargetNotFound,
                    "Unexpected target grain in request: {TargetGrain}. Message: {Message}",
                    message.TargetGrain,
                    message);
            }
        }
예제 #4
0
        public void Dispatch(Message message)
        {
            if (!ObserverGrainId.TryParse(message.TargetGrain, out var observerId))
            {
                this.logger.Error(
                    ErrorCode.ProxyClient_OGC_TargetNotFound_2,
                    string.Format("Did not find TargetObserverId header in the message = {0}. A request message to a client is expected to have an observerId.", message));
                return;
            }

            if (this.localObjects.TryGetValue(observerId, out var objectData))
            {
                this.Invoke(objectData, message);
            }
            else
            {
                this.logger.Error(
                    ErrorCode.ProxyClient_OGC_TargetNotFound,
                    String.Format(
                        "Unexpected target grain in request: {0}. Message={1}",
                        message.TargetGrain,
                        message));
            }
        }