using FSO.Common.DatabaseService.Framework;
using FSO.Common.DataService.Framework;
using FSO.Common.Serialization;
using FSO.Server.Protocol.Voltron.DataService;
using Ninject.Activation;
using Ninject.Modules;
using System;
namespace FSO.Server.DataService
{
///
/// Data service classes that can be shared between multiple shards when multi-tenanting
///
public class GlobalDataServiceModule : NinjectModule
{
public override void Load()
{
this.Bind().ToProvider().InSingletonScope();
this.Bind().ToProvider().InSingletonScope();
this.Bind().To();
}
}
class ModelSerializerProvider : IProvider
{
private Content.Content Content;
public ModelSerializerProvider(Content.Content content)
{
this.Content = content;
}
public Type Type
{
get
{
return typeof(IModelSerializer);
}
}
public object Create(IContext context)
{
var serializer = new ModelSerializer();
serializer.AddTypeSerializer(new DatabaseTypeSerializer());
serializer.AddTypeSerializer(new DataServiceModelTypeSerializer(Content.DataDefinition));
serializer.AddTypeSerializer(new DataServiceModelVectorTypeSerializer(Content.DataDefinition));
return serializer;
}
}
class cTSOSerializerProvider : IProvider
{
private Content.Content Content;
public cTSOSerializerProvider(Content.Content content)
{
this.Content = content;
}
public Type Type
{
get
{
return typeof(cTSOSerializer);
}
}
public object Create(IContext context){
return new cTSOSerializer(this.Content.DataDefinition);
}
}
}