/// <summary> /// Converts the bytes to an action method. /// </summary> /// <param name="bytes">The bytes.</param> /// <returns></returns> public Expression <Action <IReceivedMessage <MessageExpression>, IWorkerNotification> > ConvertBytesToMethod(byte[] bytes) { using (_bytesToMethodTimer.NewContext()) { return(_handler.ConvertBytesToMethod(bytes)); } }
/// <summary> /// De-serializes and runs a compiled linq expression. /// </summary> /// <param name="receivedMessage">The received message.</param> /// <param name="workerNotification">The worker notification.</param> private void HandleAction(IReceivedMessage <MessageExpression> receivedMessage, IWorkerNotification workerNotification) { var target = _serializer.ConvertBytesToMethod(receivedMessage.Body.SerializedExpression); try { HandleAction(target.Compile(), receivedMessage, workerNotification); } catch (Exception error) //throw the real exception if needed { if (error.Message == "Exception has been thrown by the target of an invocation." && error.InnerException != null) { throw error.InnerException; } throw; } }