Skip to content

Commit

Permalink
add cmd to publish to nuget
Browse files Browse the repository at this point in the history
  • Loading branch information
ShiningRush committed Dec 27, 2017
1 parent 462d7ae commit 7dbd2f8
Show file tree
Hide file tree
Showing 16 changed files with 315 additions and 46 deletions.
5 changes: 4 additions & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@
<PackageProjectUrl>https://github.com/ShiningRush/ServiceAnt</PackageProjectUrl>
<PackageIconUrl></PackageIconUrl>
<PackageLicenseUrl>https://github.com/ShiningRush/ServiceAnt/blob/master/LICENSE</PackageLicenseUrl>
<RepositoryUrl>https://github.com/ShiningRush/ServiceAnt</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageReleaseNotes></PackageReleaseNotes>
<NoPackageAnalysis>true</NoPackageAnalysis>
<Version>2.0.0-clinteastwood</Version>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Version>1.0.0</Version>
</PropertyGroup>
</Project>
16 changes: 15 additions & 1 deletion src/ServiceAnt.IocInstaller.Autofac/IocResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@

namespace ServiceAnt.IocInstaller.Autofac
{
/// <summary>
/// IocResolver
/// </summary>
public class IocResolver : IIocResolver
{
private readonly IComponentContext _componentContext;
Expand All @@ -17,11 +20,22 @@ public IocResolver(IComponentContext componentContext)
_componentContext = componentContext;
}

/// <summary>
/// Releases a pre-resolved object. See Resolve methods.
/// </summary>
/// <param name="obj">Object to be released</param>
public void Release(object obj)
{
//_componentContext
// AutoFac is no need to release object
}

/// <summary>
/// Gets an object from IOC container.
/// Returning object must be Released (see <see cref="Release"/>) after usage.
/// </summary>
/// <typeparam name="T">Type of the object to cast</typeparam>
/// <param name="type">Type of the object to resolve</param>
/// <returns>The object instance</returns>
public T Resolve<T>(Type type)
{
return (T)_componentContext.Resolve(type);
Expand Down
13 changes: 12 additions & 1 deletion src/ServiceAnt.IocInstaller.Autofac/ServiceAntModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,26 @@

namespace ServiceAnt.IocInstaller.Autofac
{
/// <summary>
/// It used to install ServiceAnt to Ioc of Autofac
/// </summary>
public class ServiceAntModule : Module
{
private static System.Reflection.Assembly[] _handlerAssemblies;

/// <summary>
/// Constructor
/// </summary>
/// <param name="handlerAssemblies"> the assemblies which containg handler, thos will be register to container</param>
public ServiceAntModule(params System.Reflection.Assembly[] handlerAssemblies)
{
_handlerAssemblies = handlerAssemblies;
}

/// <summary>
/// Excute this method ater you builded container
/// </summary>
/// <param name="container"></param>
public static void RegisterHandlers(IComponentContext container)
{
foreach (var aHandlerAssembly in _handlerAssemblies)
Expand Down Expand Up @@ -63,7 +74,7 @@ private static void RegisterHandlerType(IComponentContext container, Type aHandl
if (typeof(IRequestHandler).IsAssignableFrom(aInterface))
container.Resolve<IServiceBus>().AddRequestHandler(genericArgs[0], new ServiceAnt.Handler.IocHandlerFactory(container.Resolve<IocResolver>(), aHandlerType, genericArgs[0]));
else
container.Resolve<IServiceBus>().AddSubScription(genericArgs[0], new ServiceAnt.Handler.IocHandlerFactory(container.Resolve<IocResolver>(), aHandlerType, genericArgs[0]));
container.Resolve<IServiceBus>().AddSubscription(genericArgs[0], new ServiceAnt.Handler.IocHandlerFactory(container.Resolve<IocResolver>(), aHandlerType, genericArgs[0]));
}
}
}
Expand Down
18 changes: 18 additions & 0 deletions src/ServiceAnt.IocInstaller.Castle/IocResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,38 @@

namespace ServiceAnt.IocInstaller.Castle
{
/// <summary>
/// IocResolver
/// </summary>
public class IocResolver : IIocResolver
{
private readonly IWindsorContainer _container;

/// <summary>
/// Constructor
/// </summary>
/// <param name="container">the container of castle</param>
public IocResolver(IWindsorContainer container)
{
_container = container;
}

/// <summary>
/// Releases a pre-resolved object. See Resolve methods.
/// </summary>
/// <param name="obj">Object to be released</param>
public void Release(object obj)
{
_container.Release(obj);
}

/// <summary>
/// Gets an object from IOC container.
/// Returning object must be Released (see <see cref="Release"/>) after usage.
/// </summary>
/// <typeparam name="T">Type of the object to cast</typeparam>
/// <param name="type">Type of the object to resolve</param>
/// <returns>The object instance</returns>
public T Resolve<T>(Type type)
{
return (T)_container.Resolve(type);
Expand Down
9 changes: 8 additions & 1 deletion src/ServiceAnt.IocInstaller.Castle/ServiceAntInstaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,19 @@

namespace ServiceAnt.IocInstaller.Castle
{
/// <summary>
/// It used to install ServiceAnt to Ioc of Castle
/// </summary>
public class ServiceAntInstaller : IWindsorInstaller
{
private readonly Assembly[] _handlerAssemblies;
private IWindsorContainer _container;
private IServiceBus _serviceBus;

/// <summary>
/// Constructor
/// </summary>
/// <param name="handlerAssemblies"> the assemblies which containg handler, thos will be register to container</param>
public ServiceAntInstaller(params Assembly[] handlerAssemblies)
{
_handlerAssemblies = handlerAssemblies;
Expand Down Expand Up @@ -71,7 +78,7 @@ private void Kernel_ComponentRegistered(string key, IHandler handler)
if (typeof(IRequestHandler).GetTypeInfo().IsAssignableFrom(aInterface))
_serviceBus.AddRequestHandler(genericArgs[0], new ServiceAnt.Handler.IocHandlerFactory(resolver, handler.ComponentModel.Implementation, genericArgs[0]));
else
_serviceBus.AddSubScription(genericArgs[0], new ServiceAnt.Handler.IocHandlerFactory(resolver, handler.ComponentModel.Implementation, genericArgs[0]));
_serviceBus.AddSubscription(genericArgs[0], new ServiceAnt.Handler.IocHandlerFactory(resolver, handler.ComponentModel.Implementation, genericArgs[0]));
}
}
}
Expand Down
15 changes: 15 additions & 0 deletions src/ServiceAnt/Handler/IHandlerFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,27 @@

namespace ServiceAnt.Handler
{
/// <summary>
/// The interface is used to get handler
/// </summary>
public interface IHandlerFactory
{
/// <summary>
/// Get Handler
/// </summary>
/// <returns></returns>
IHandler GetHandler();

/// <summary>
/// Get event type of registering event type
/// </summary>
/// <returns></returns>
Type GetLocalEventType();

/// <summary>
/// Releast generated handler if need
/// </summary>
/// <param name="obj"></param>
void ReleaseHandler(object obj);
}
}
16 changes: 8 additions & 8 deletions src/ServiceAnt/InProcessServiceBus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,25 +35,25 @@ public InProcessServiceBus(ISubscriptionManager subcriptionManager, IRequestHand

#region Pub/Sub

public void AddDynamicSubScription(string eventName, Func<dynamic, Task> action)
public void AddDynamicSubscription(string eventName, Func<dynamic, Task> action)
{
_subcriptionManager.AddDynamicSubScription(eventName, action);
_subcriptionManager.AddDynamicSubscription(eventName, action);
}


public void AddSubScription(Type eventType, IHandlerFactory factory)
public void AddSubscription(Type eventType, IHandlerFactory factory)
{
_subcriptionManager.AddSubScription(eventType, factory);
_subcriptionManager.AddSubscription(eventType, factory);
}

public void AddSubScription<TEvent>(Func<TEvent, Task> action) where TEvent : TransportTray
public void AddSubscription<TEvent>(Func<TEvent, Task> action) where TEvent : TransportTray
{
_subcriptionManager.AddSubScription<TEvent>(action);
_subcriptionManager.AddSubscription<TEvent>(action);
}

public void AddSubScription<TEvent>(IHandlerFactory factory) where TEvent : TransportTray
public void AddSubscription<TEvent>(IHandlerFactory factory) where TEvent : TransportTray
{
_subcriptionManager.AddSubScription<TEvent>(factory);
_subcriptionManager.AddSubscription<TEvent>(factory);
}

public void RemoveDynamicSubscription(string eventName, Func<dynamic, Task> action)
Expand Down
3 changes: 3 additions & 0 deletions src/ServiceAnt/Infrastructure/Dependency/IIocResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

namespace ServiceAnt.Infrastructure.Dependency
{
/// <summary>
/// IocResolver
/// </summary>
public interface IIocResolver
{
/// <summary>
Expand Down
47 changes: 42 additions & 5 deletions src/ServiceAnt/Request/Handler/ActionRequestHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,77 @@

namespace ServiceAnt.Request.Handler
{
public class ActionRequestHandler<TEvent> : IRequestHandler<TEvent> where TEvent : TransportTray
/// <summary>
/// The container of request handler registing with delegate
/// </summary>
/// <typeparam name="TRequest"></typeparam>
public class ActionRequestHandler<TRequest> : IRequestHandler<TRequest> where TRequest : TransportTray
{
private Func<TEvent, IRequestHandlerContext, Task> _action;
private Func<TRequest, IRequestHandlerContext, Task> _action;

public ActionRequestHandler(Func<TEvent, IRequestHandlerContext, Task> action)
/// <summary>
/// Constructor
/// </summary>
/// <param name="action">register delagate</param>
public ActionRequestHandler(Func<TRequest, IRequestHandlerContext, Task> action)
{
_action = action;
}

public Task HandleAsync(TEvent param, IRequestHandlerContext handlerContext)
/// <summary>
/// Handle request async
/// </summary>
/// <param name="param">request</param>
/// <param name="handlerContext">handler context</param>
/// <returns></returns>
public Task HandleAsync(TRequest param, IRequestHandlerContext handlerContext)
{
return _action(param, handlerContext);
}

public bool IsSame(Func<TEvent, IRequestHandlerContext, Task> compareAction)
/// <summary>
/// Compare the registered delegate is same with inpurt delegate
/// </summary>
/// <param name="compareAction">inpurt delegate</param>
/// <returns></returns>
public bool IsSame(Func<TRequest, IRequestHandlerContext, Task> compareAction)
{
return compareAction == _action;
}
}

/// <summary>
/// The container of request handler registing with delegate having dynamic request parameter
/// </summary>
public class ActionRequestHandler : IDynamicRequestHandler
{
private Func<dynamic, IRequestHandlerContext, Task> _action;

/// <summary>
/// Constructor
/// </summary>
/// <param name="action"></param>
public ActionRequestHandler(Func<dynamic, IRequestHandlerContext, Task> action)
{
_action = action;
}

/// <summary>
/// Handle request async
/// </summary>
/// <param name="param">dynamic request parameter</param>
/// <param name="handlerContext">handler context</param>
/// <returns></returns>
public Task HandleAsync(dynamic param, IRequestHandlerContext handlerContext)
{
return _action(param, handlerContext);
}

/// <summary>
/// Compare the registered delegate is same with inpurt delegate
/// </summary>
/// <param name="compareAction">inpurt delegate</param>
/// <returns></returns>
public bool IsSame(Func<dynamic, IRequestHandlerContext, Task> compareAction)
{
return compareAction == _action;
Expand Down
26 changes: 24 additions & 2 deletions src/ServiceAnt/Request/Handler/IRequestHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,39 @@

namespace ServiceAnt.Request.Handler
{
/// <summary>
/// The inerface of handling request
/// </summary>
public interface IRequestHandler : IHandler
{
}

public interface IRequestHandler<TEvent> : IRequestHandler where TEvent : TransportTray
/// <summary>
/// The interface of handling request
/// </summary>
/// <typeparam name="TRequest">request parameter</typeparam>
public interface IRequestHandler<TRequest> : IRequestHandler where TRequest : TransportTray
{
Task HandleAsync(TEvent param, IRequestHandlerContext handlerContext);
/// <summary>
/// Handle request async
/// </summary>
/// <param name="param">request</param>
/// <param name="handlerContext">handler context</param>
/// <returns></returns>
Task HandleAsync(TRequest param, IRequestHandlerContext handlerContext);
}

/// <summary>
/// The interface of handling request with dynamic parameter
/// </summary>
public interface IDynamicRequestHandler : IRequestHandler
{
/// <summary>
/// Handle request async
/// </summary>
/// <param name="param">dynamic request parameter</param>
/// <param name="handlerContext">handler context</param>
/// <returns></returns>
Task HandleAsync(dynamic param, IRequestHandlerContext handlerContext);
}
}

0 comments on commit 7dbd2f8

Please sign in to comment.