private string GetActorMethodName(ActorMessageHeaders actorMessageHeaders) { if (actorMessageHeaders == null) { return(null); } try { var methodName = "-"; var lookup = HashUtil.Combine(actorMessageHeaders.InterfaceId, actorMessageHeaders.MethodId); if (ActorMethodMap.ContainsKey(lookup)) { methodName = ActorMethodMap[lookup]; return(methodName); } methodName = ((Microsoft.ServiceFabric.Actors.Remoting.Runtime.ActorServiceRemotingDispatcher)_innerMessageHandler).GetMethodDispatcherMapName( actorMessageHeaders.InterfaceId, actorMessageHeaders.MethodId); ActorMethodMap[lookup] = methodName; return(methodName); } catch (Exception ex) { // ignored _logger?.FailedToGetActorMethodName(actorMessageHeaders, ex); } return(null); }
private async Task <byte[]> RequestResponseActorMessageAsync( IServiceRemotingRequestContext requestContext, ServiceRemotingMessageHeaders messageHeaders, byte[] requestBody, ActorMessageHeaders actorMessageHeaders, CustomServiceRequestHeader customHeader) { var methodName = GetActorMethodName(actorMessageHeaders); byte[] result = null; using (new ServiceRequestContextWrapper(customHeader)) { using (_logger?.RecieveActorMessage(_actorService.Context.ServiceName, methodName, actorMessageHeaders, customHeader)) { try { result = await _innerMessageHandler.RequestResponseAsync(requestContext, messageHeaders, requestBody); } catch (Exception ex) { _logger?.RecieveActorMessageFailed(_actorService.Context.ServiceName, methodName, actorMessageHeaders, customHeader, ex); throw; } } } return(result); }
public static bool TryFromServiceMessageHeaders(ServiceRemotingMessageHeaders headers, out ActorMessageHeaders actorHeaders) { actorHeaders = (ActorMessageHeaders)null; byte[] headerValue; if (!headers.TryGetHeaderValue(ActorMessageHeaderName, out headerValue)) { return(false); } actorHeaders = ActorMessageHeaders.Deserialize(headerValue); return(true); }
internal static ActorMessageHeaders GetActorMessageHeaders(this ServiceRemotingMessageHeaders messageHeaders, IActorServiceCommunicationLogger logger) { try { ActorMessageHeaders actorMessageHeaders; if (ActorMessageHeaders.TryFromServiceMessageHeaders(messageHeaders, out actorMessageHeaders)) { return(actorMessageHeaders); } } catch (Exception ex) { // ignored logger?.FailedToReadActorMessageHeaders(messageHeaders, ex); } return(null); }