aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-19 16:38:31 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-19 16:38:31 -0400
commit937d27ae9d6aa571ab9327f138bfba1b84c158db (patch)
tree94be178039621ea6d6235967414b0849912af4ed /MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs
parent64887fa74347260d44a8cb5cc7058cd22b08c1c5 (diff)
One async call leads to another, and another, all the way up the call stack...
Diffstat (limited to 'MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs')
-rw-r--r--MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs37
1 files changed, 14 insertions, 23 deletions
diff --git a/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs
index a35af9231..a3a47a4a3 100644
--- a/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs
+++ b/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs
@@ -6,19 +6,22 @@ namespace MediaBrowser.Common.Net.Handlers
{
public abstract class BaseJsonHandler<T> : BaseHandler
{
- public override string ContentType
+ public override Task<string> GetContentType()
{
- get { return MimeTypes.JsonMimeType; }
+ return Task.Run(() =>
+ {
+ return MimeTypes.JsonMimeType;
+ });
}
private bool _ObjectToSerializeEnsured = false;
private T _ObjectToSerialize;
- private void EnsureObjectToSerialize()
+ private async Task EnsureObjectToSerialize()
{
if (!_ObjectToSerializeEnsured)
{
- _ObjectToSerialize = GetObjectToSerialize();
+ _ObjectToSerialize = await GetObjectToSerialize();
if (_ObjectToSerialize == null)
{
@@ -29,30 +32,18 @@ namespace MediaBrowser.Common.Net.Handlers
}
}
- private T ObjectToSerialize
- {
- get
- {
- EnsureObjectToSerialize();
- return _ObjectToSerialize;
- }
- }
+ protected abstract Task<T> GetObjectToSerialize();
- protected abstract T GetObjectToSerialize();
-
- protected override void PrepareResponse()
+ protected override async Task PrepareResponse()
{
- base.PrepareResponse();
-
- EnsureObjectToSerialize();
+ await EnsureObjectToSerialize();
}
- protected override Task WriteResponseToOutputStream(Stream stream)
+ protected async override Task WriteResponseToOutputStream(Stream stream)
{
- return Task.Run(() =>
- {
- JsonSerializer.SerializeToStream<T>(ObjectToSerialize, stream);
- });
+ await EnsureObjectToSerialize();
+
+ JsonSerializer.SerializeToStream<T>(_ObjectToSerialize, stream);
}
}
}