Reacting to Caching api review changes
This commit is contained in:
parent
e86f571011
commit
7ed6802bba
|
|
@ -98,10 +98,10 @@ namespace Microsoft.AspNet.Session
|
||||||
{
|
{
|
||||||
if (!_loaded)
|
if (!_loaded)
|
||||||
{
|
{
|
||||||
Stream data;
|
var data = _cache.Get(_sessionId);
|
||||||
if (_cache.TryGetValue(_sessionId, out data))
|
if (data != null)
|
||||||
{
|
{
|
||||||
Deserialize(data);
|
Deserialize(new MemoryStream(data));
|
||||||
}
|
}
|
||||||
else if (!_isNewSessionKey)
|
else if (!_isNewSessionKey)
|
||||||
{
|
{
|
||||||
|
|
@ -115,16 +115,19 @@ namespace Microsoft.AspNet.Session
|
||||||
{
|
{
|
||||||
if (_isModified)
|
if (_isModified)
|
||||||
{
|
{
|
||||||
Stream data;
|
var data = _cache.Get(_sessionId);
|
||||||
if (_logger.IsEnabled(LogLevel.Information) && !_cache.TryGetValue(_sessionId, out data))
|
if (_logger.IsEnabled(LogLevel.Information) && data == null)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Session {0} started", _sessionId);
|
_logger.LogInformation("Session {0} started", _sessionId);
|
||||||
}
|
}
|
||||||
_isModified = false;
|
_isModified = false;
|
||||||
_cache.Set(_sessionId, context => {
|
|
||||||
context.SetSlidingExpiration(_idleTimeout);
|
var stream = new MemoryStream();
|
||||||
Serialize(context.Data);
|
Serialize(stream);
|
||||||
});
|
_cache.Set(
|
||||||
|
_sessionId,
|
||||||
|
stream.ToArray(),
|
||||||
|
new DistributedCacheEntryOptions().SetSlidingExpiration(_idleTimeout));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -165,9 +168,9 @@ namespace Microsoft.AspNet.Session
|
||||||
for (int i = 0; i < expectedEntries; i++)
|
for (int i = 0; i < expectedEntries; i++)
|
||||||
{
|
{
|
||||||
int keyLength = DeserializeNumFrom2Bytes(content);
|
int keyLength = DeserializeNumFrom2Bytes(content);
|
||||||
var key = new EncodedKey(content.ReadBytes(keyLength));
|
var key = new EncodedKey(ReadBytes(content, keyLength));
|
||||||
int dataLength = DeserializeNumFrom4Bytes(content);
|
int dataLength = DeserializeNumFrom4Bytes(content);
|
||||||
_store[key] = content.ReadBytes(dataLength);
|
_store[key] = ReadBytes(content, dataLength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,6 +222,22 @@ namespace Microsoft.AspNet.Session
|
||||||
return content.ReadByte() << 24 | content.ReadByte() << 16 | content.ReadByte() << 8 | content.ReadByte();
|
return content.ReadByte() << 24 | content.ReadByte() << 16 | content.ReadByte() << 8 | content.ReadByte();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private byte[] ReadBytes(Stream stream, int count)
|
||||||
|
{
|
||||||
|
var output = new byte[count];
|
||||||
|
int total = 0;
|
||||||
|
while (total < count)
|
||||||
|
{
|
||||||
|
var read = stream.Read(output, total, count - total);
|
||||||
|
if (read == 0)
|
||||||
|
{
|
||||||
|
throw new EndOfStreamException();
|
||||||
|
}
|
||||||
|
total += read;
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
// Keys are stored in their utf-8 encoded state.
|
// Keys are stored in their utf-8 encoded state.
|
||||||
// This saves us from de-serializing and re-serializing every key on every request.
|
// This saves us from de-serializing and re-serializing every key on every request.
|
||||||
private class EncodedKey
|
private class EncodedKey
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
"description": "ASP.NET 5 session state middleware.",
|
"description": "ASP.NET 5 session state middleware.",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNet.Http.Extensions": "1.0.0-*",
|
"Microsoft.AspNet.Http.Extensions": "1.0.0-*",
|
||||||
"Microsoft.Framework.Caching.Distributed": "1.0.0-*",
|
"Microsoft.Framework.Caching.Memory": "1.0.0-*",
|
||||||
"Microsoft.Framework.Logging.Abstractions": "1.0.0-*",
|
"Microsoft.Framework.Logging.Abstractions": "1.0.0-*",
|
||||||
"Microsoft.Framework.NotNullAttribute.Sources": { "type": "build", "version": "1.0.0-*" }
|
"Microsoft.Framework.NotNullAttribute.Sources": { "type": "build", "version": "1.0.0-*" }
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue