Beispiel #1
0
        public App()
        {
            InitializeComponent();

            StacheMeister Meister = new StacheMeister("memstache.demo", null, null, StashPlan.spSerializeCompress);
            string        key     = "app01_Test";

            string value = Meister[key]; //app just started, so fetching value from db cache, not memory

            //int rowcount;
            if (value != null)
            {
                //rowcount = Meister.DB.Delete<Stash>(key); //delete the record
                StashRepo.Delete(key);
            }

            Meister[key] = "This is a Test"; //Assign value to MemStache
            value        = Meister[key];     //will find value in memory cache, no need to check db cache

            //Now let's cache an Object
            Person user = new Person()
            {
                Name = "Dennis", Age = 44
            };

            key          = "App.User.Name";
            Meister[key] = user;                   //assign object to cache
            Person user2 = Meister[key] as Person; //the retrieved object is automatically deserialized.

            MainPage = new MainPage();
        }
Beispiel #2
0
        public static WebApplication Run(string[] args, StacheMeister _meister)
        {
            StacheMeister meister = _meister ?? throw new ArgumentNullException(nameof(meister));
            var           builder = Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder(args);

            builder.Services.AddSingleton <StacheMeister>(s => meister);
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen();
            builder.Services.AddCors();
            var app = builder.Build();

            app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
            if (app.Environment.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.MapGet("/stash/{key}", async(HttpContext http, [FromServices] StacheMeister meister, string key) =>
            {
                if (!http.Request.RouteValues.TryGetValue("Key", out var _key))
                {
                    http.Response.StatusCode = 400;
                    return;
                }
                string result = JsonConvert.SerializeObject(meister ![key !]);
Beispiel #3
0
        public void _0_TestStasher()
        {
            string        key     = "test01";
            StacheMeister meister = new StacheMeister("memstache.demo");

            // var rowcount = Meister.DB.Delete<Stash>(key);
            StashRepo.Delete(key);
            Stasher stash = meister.MakeStasher("test", StashPlan.spSerialize);

            Console.WriteLine("MemStache Initialized: {0}", stash.Purpose);

            var payload = new Stash()
            {
                Key = key, Object = "This is a test"
            };

            var hash1 = Stasher.Hash(payload.Value);

            stash[key] = payload;

            payload.Value = string.Empty;

            payload = stash[key];

            Console.WriteLine("Payload Test: {0}", payload.Value);

            var hash2 = Stasher.Hash(payload.Value);

            Assert.AreEqual(hash1, hash2);
        }
Beispiel #4
0
        public void _0_TestDBInsert_2()
        {
#pragma warning disable CS0219 // Variable is assigned but its value is never used
            string appId, filename, password;
#pragma warning restore CS0219 // Variable is assigned but its value is never used
            appId    = "memstache.demo";
            filename = "MemstacheTest.cv";
            password = "******";
            string key = "test02";

            StacheMeister meister = new StacheMeister("memstache.demo");
            //StacheMeister meister = new StacheMeister(appId, filename, password);

            // var rowcount = Meister.DB.Delete<Stash>(key);
            StashRepo.Delete(key);
            Stasher stash = meister.MakeStasher("test", StashPlan.spSerialize);
            string  s     = "another test";
            s = JsonConvert.SerializeObject(s);

            stash.DbAddOrUpdate(new Stash()
            {
                Key = key, Value = s, Serialized = true
            });

            // stash.DB.Insert(new Stash() { key = key,  value = s, serialized=true });
            Task.Delay(1000);
            Stash result = stash.DbGet(key);
            Console.WriteLine("Payload Test: {0}", result.Value);
        }
Beispiel #5
0
        public void _6_StacheMeisterSerializeAndCompressAndEncrypt()
        {
            string        key     = "test08";
            StacheMeister meister = new StacheMeister("memstache.demo", null, null, StashPlan.spProtectCompress);

            // var rowcount = Meister.DB.Delete<Stash>(key);
            StashRepo.Delete(key);

            Employee emp1 = employee1; // CreateEmployee();
            string   v1   = JsonConvert.SerializeObject(emp1);

            meister[key] = emp1;

            Employee emp2 = meister[key] as Employee;

            string v2 = JsonConvert.SerializeObject(emp2);

            Assert.AreEqual(v1, v2);
        }
Beispiel #6
0
        public void _4_StacheMeisterSerialization()
        {
            string        key     = "test06";
            StacheMeister meister = new StacheMeister("memstache.demo");

            // var rowcount = Meister.DB.Delete<Stash>(key);
            StashRepo.Delete(key);

            Employee emp1 = employee1; // CreateEmployee();
            string   v1   = JsonConvert.SerializeObject(emp1);

            meister[key] = emp1;

            Employee emp2 = meister[key] as Employee;

            string v2 = JsonConvert.SerializeObject(emp2);

            Assert.AreEqual(v1, v2);
        }
Beispiel #7
0
        public void _0_InsertAndRetrieve()
        {
#pragma warning disable CS0219 // Variable is assigned but its value is never used
            string appId, filename, password;
#pragma warning restore CS0219 // Variable is assigned but its value is never used
            appId    = "memstache.demo";
            filename = "MemstacheTest.cv";
            password = "******";
            string key = "test02";

            StacheMeister meister = new StacheMeister("memstache.demo");
            //StacheMeister meister = new StacheMeister(appId, filename, password, StashPlan.spProtectCompress);

            // var rowcount = Meister.DB.Delete<Stash>(key);

            StashRepo.Delete(key);

            meister[key] = "testing01";

            // stash.DB.Insert(new Stash() { key = key,  value = s, serialized=true });
            Task.Delay(1).Wait();
            string result = meister[key];
            if (result != null)
            {
                Console.WriteLine("1st Payload Test: {0}", result); // result.Id.ToString());
            }

            meister[key] = "testing02";
            Task.Delay(1).Wait();
            result = meister[key];
            if (result != null)
            {
                Console.WriteLine("2nd Payload Test: {0}", result); // result.Id.ToString());
            }

            meister[key] = "testing03";
            Task.Delay(1).Wait();
            result = meister[key];
            if (result != null)
            {
                Console.WriteLine("3rd Payload Test: {0}", result); // result.Id.ToString());
            }
        }
Beispiel #8
0
        public void _3_StasherSerializeAndCompressAndEncrypt()
        {
            string        key     = "test05";
            StacheMeister meister = new StacheMeister("memstache.demo");

            // var rowcount = Meister.DB.Delete<Stash>(key);
            StashRepo.Delete(key);
            Stasher stash = meister.MakeStasher("test", StashPlan.spProtectCompress);

            Console.WriteLine("MemStache Initialized: {0}", stash.Purpose);

            Valuation valuation1 = new Valuation();

            var payload = new Stash()
            {
                Key = key, StashPlan = StashPlan.spProtectCompress, Object = valuation1
            };
            var typeName = payload.StoredType;

            var hash1 = Stasher.Hash(payload.Value);

            stash[key] = payload;

            // payload.value = "";
            if (payload == null)
            {
                Console.WriteLine("Payload is nulls");
            }

            payload = stash[key];

            Valuation valuation2 = payload.Object as Valuation;

            Console.WriteLine("Payload Test: {0}", payload.Value);

            var hash2 = Stasher.Hash(payload.Value);

            Assert.AreEqual(hash1, hash2);
        }
Beispiel #9
0
        public void _0_TestDBInsert()
        {
            string        key     = "test02";
            StacheMeister meister = new StacheMeister("memstache.demo");

            // var rowcount = Meister.DB.Delete<Stash>(key);
            StashRepo.Delete(key);
            Stasher stash = meister.MakeStasher("test", StashPlan.spSerialize);
            string  s     = "another test";

            s = JsonConvert.SerializeObject(s);

            stash.DbAddOrUpdate(new Stash()
            {
                Key = key, Value = s, Serialized = true
            });

            // stash.DB.Insert(new Stash() { key = key,  value = s, serialized=true });
            Task.Delay(1000);
            Stash result = stash.DbGet(key);

            Console.WriteLine("Payload Test: {0}", result.Value);
        }