Version 1.5 (10. May 2012)

amarok.common

  • CHG: [Breaking] Renamed assembly amarok.framework to amarok.common.

  • FIX: Fixed serialization support for StringDictionary and TypeDictionary. Added missing constructors that accept SerializationInfo and StreamingContext.

  • NEW: Introduced overloaded extension method WaitForCompletion() on Task that blocks the calling thread until the task enters a completion state much like task.Wait(), but in contrast to task.Wait() these extension methods do not throw exceptions when the task completed in a canceled or faulted state.

  • NEW: Introduced interface ICompletable and implementation base class CompletableObject. The dispose pattern represented by IDisposable is well suited for disposing (or tearing down) objects in a synchronous blocking manner; the calling thread is blocked until the object is finally disposed. For a thread-safe implementation one can derive from DisposableObject. In an asynchronous world blocking isn't a good idea. ICompletable represents a new pattern (borrowed from TPL Dataflow) for tearing down objects asychronously. The caller initiates completion by calling Complete(..) and may optionally wait until completion finished by using the Task object returned from property Completion.

amarok.agents

  • CHG: [Breaking] Renamed type Unit to Empty. Use Empty.Instance instead of Unit.Instance.
Message
  • CHG: [Breaking] Renamed property Address to Label and changed type from String to Object. The new name 'Label' expresses the meaning of the property: it's not thought as an address for routing the message to a destination, but instead it is intended to be an optional attached tag, a label carrying some kind of information that can be used to filter messages.

  • CHG: [Breaking] The property Label will now throw an InvalidOperationException (instead of an ArgumentException) in case that the property setter is called and Label is already set.

  • NEW: Added property HasLabel that returns a boolean value indicating whether a Label has already been set.

  • NEW: Added implementation for ToString() that returns a string containing the set label.

Operation
  • CHG: [Breaking] Changed property Progress from delegate to an event. Now, multiple handler may register for the same progress events.

  • FIX: [Breaking] The thread reporting progress is now decoupled from the threads that handle progress events. Prior, the reporting thread was calling the progress event handlers directly. This was an unintended behavior and has been changed.

  • NEW: Introduced methods Acquire() and TryAcquire(). Those methods are used by the agent infrastructure to ensure that an operation message is processed by only one operation handler.

Agents
  • CHG: [Breaking] Changed namespace of following types from Amarok.Agents.Core to Amarok.Agents:

    • ExecutionMode
    • ExecutionModeAttribute
    • ParallelismLevel
    • ParallelismLevelAttribute
  • CHG: [Breaking] Removed property Address and method ResetAddress() from Agent. The concept that agents contain an address has been deprecated.

  • CHG: [Breaking] The agent infrastructure now ensures that an operation messages is processed by only one operation handler, even if multiple operation handlers are registered for this operation message type. The first operation handler that receives the operation message will acquire and process the operation; all other operation handler will output a warning message. This new behavior does not affect message handler; those are still able to handle all kinds of messages.

  • CHG: [Breaking] Agents now implement the new asynchronous completion pattern represented by ICompletable. The interface IAgent derives from ICompletable and provides functionality to tear down agents asynchronously.

  • CHG: [Breaking] The overridable method OnDispose() was replaced by OnCleanup(). For full control over the completion you can override OnCompleting(..), OnComplete(..) or OnCompleted(). For simple cleanup tasks OnCleanup() should be suitable.

  • CHG: The overloaded extension method Subscribe() on IAgent now returns ISubscription instead of IDisposable. This enables one to release the subscription in an asynchronous manner.

  • FIX: Fixed exception in agent handler inspection logic when encountering an operation handler with a method parameter type (message type) that derives directly from Operation. Now an appropriate warning message is generated. Message types for operation handler must derive directly or indirectly from Operation.

  • NEW: Introduced static class AgentGlobals that contains global configuration values primarily used to provide the underlying Task Parallel Library (TPL) Data Flow Blocks with block options.

AgentFactory
  • CHG: [Breaking] Removed overloaded methods SpawnAgent(..) from AgentFactory that accept an address. The concept that agents contain an address has been deprecated.

  • NEW: Added overloaded methods SpawnAgent(..) without AgentOptions argument. The agent options on these messages default to AgentOptions.Empty.

MessageBus
  • CHG: [Breaking] MessageBus now implements the new asynchronous completion pattern represented by ICompletable. The interface IMessageBus derives from ICompletable and provides functionality for tearing down the message bus asynchronously.

  • CHG: [Breaking] The overloaded methods Connect(..) and Subscribe(..) on IMessageBus now return ISubscription instead of IDisposable, enabling one to disconnect or unsubscribe in an asynchronous manner.

Subsystem
  • CHG: [Breaking] Subsystem now implements the new asynchronous completion pattern represented by ICompletable. The interface ISubsystem derives from ICompletable and provides functionality for tearing down the subsystem and contained agents asynchronously.

  • CHG: [Breaking] The overridable method OnDispose() was removed from Subsystem. If you need more control over the completion you can override OnCompleting(..), OnComplete(..) or OnCompleted().

  • CHG: [Breaking] Removed overloaded methods SpawnAgent(..) from Subsystem that accept an address. The concept that agents contain an address has been deprecated.

  • NEW: Added overloaded methods SpawnAgent(..) without AgentOptions argument to Subsystem. The agent options for these methods default to AgentOptions.Empty.

Runtime
  • CHG: [Breaking] Runtime now implements the new asynchronous completion pattern represented by ICompletable.

  • CHG: [Breaking] The overridable method OnDispose() on Runtime was replaced by OnCleanup(). For full control over the completion one can override OnCompleting(..), OnComplete(..) or OnCompleted(). For simple cleanup tasks OnCleanup() should be suitable.

  • CHG: [Breaking] Removed types RuntimeAgent and RuntimeAgent. Derive from Agent or Agent instead.

  • CHG: Added optional boolean parameter to method Shutdown() in IRuntime. This new parameter controls how the entire runtime including all subsystems and agents should shut down.

amarok.presentation

  • CHG: [Breaking] Changed namespace of following types from Amarok.Presentation.Core to Amarok.Presentation:

    • CloseWindowAction
    • ShowMessageBoxAction
    • ShowConfirmationMessageBoxAction
    • ShowInformationMessageBoxAction
    • ShowWarningMessageBoxAction
    • ShowErrorMessageBoxAction
    • ViewActionManager
    • ViewActionRoutedEventHandler
    • ViewActionRoutedEventArgs
    • ViewHelper
  • NEW: Added overloaded constructors to all Controller types that accept a view-model instance as argument.

  • NEW: Added overloaded methods SpawnController(..) to ControllerFactory that accept a view-model instance as argument.

 

Last edited Nov 2, 2012 at 3:06 PM by OlafKober, version 1

Comments

No comments yet.