本文整理汇总了C#中Cache.Exists方法的典型用法代码示例。如果您正苦于以下问题:C# Cache.Exists方法的具体用法?C# Cache.Exists怎么用?C# Cache.Exists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cache
的用法示例。
在下文中一共展示了Cache.Exists方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: m_InterProcess_RegisterRequestedEvent
bool m_InterProcess_RegisterRequestedEvent(object sender, ApplicationInstanceEventArgs e)
{
Cache c = new Cache(false);
if (c.Exists("locked") && c.Get<bool>("locked"))
return false;
if (!c.Exists("instances"))
c.Set<ApplicationInstanceList>("instances", new ApplicationInstanceList());
ApplicationInstanceList list = c.Get<ApplicationInstanceList>("instances");
if (list.Count(v => v.FilesystemPath == e.LocalPath) > 0)
return false;
list.Add(new ApplicationInstance
{
LastCheckTime = new DateTime(1970, 1, 1),
FilesystemPath = e.LocalPath,
UpdateUrl = e.UpdateURI.ToString()
});
c.Set<ApplicationInstanceList>("instances", list);
return true;
}
示例2: Handle
public void Handle(string appname, string[] components, HttpRequestHead head, IDataProducer body, IHttpResponseDelegate response)
{
// Look inside the cache for the specified file.
Cache c = new Cache(false);
string path = HttpUtility.UrlDecode(components.Where((value, row) => row >= 2).Aggregate((a, b) => a + "/" + b));
if (!c.Exists("server/" + appname + "/store/" + path))
{
response.OnResponse(HttpErrorResponseHead.Get(), new HttpErrorDataProducer());
return;
}
// Calculate patch path from source to destination.
string result = "";
Hash source = Hash.FromString(components[0]);
Hash destination = Hash.FromString(components[1]);
while (source != destination)
{
// Find the patch in the patches that will turn source
// into the next patch.
IEnumerable<string> patches = c.List("server/" + appname + "/patches/" + path).Where(v => v.StartsWith(source.ToString() + "-"));
if (patches.Count() != 1)
{
response.OnResponse(HttpErrorResponseHead.Get(), new HttpErrorDataProducer());
return;
}
string next = patches.First();
source = Hash.FromString(next.Substring((source.ToString() + "-").Length));
using (StreamReader reader = new StreamReader(c.GetFilePath("server/" + appname + "/patches/" + path + "/" + next)))
{
result += "--- NEXT PATCH (" + reader.BaseStream.Length + ") ---\r\n";
result += reader.ReadToEnd();
result += "\r\n";
}
}
result += "--- END OF PATCHES ---\r\n";
// Return data.
response.OnResponse(new HttpResponseHead()
{
Status = "200 OK",
Headers = new Dictionary<string, string>
{
{ "Content-Type", "text/plain" },
{ "Content-Length", result.Length.ToString() },
{ "Connection", "close" }
}
}, new BufferedProducer(result));
}
示例3: Handle
public void Handle(string appname, string[] components, HttpRequestHead head, IDataProducer body, IHttpResponseDelegate response)
{
// Look inside the cache for the specified file.
Cache c = new Cache(false);
string path = HttpUtility.UrlDecode(components.Aggregate((a, b) => a + "/" + b));
if (!c.Exists("server/" + appname + "/store/" + path))
{
response.OnResponse(HttpErrorResponseHead.Get(), new HttpErrorDataProducer());
return;
}
response.OnResponse(new HttpResponseHead()
{
Status = "200 OK",
Headers = new Dictionary<string, string>
{
{ "Connection", "close" }
}
}, new StreamReaderProducer(c.GetFilePath("server/" + appname + "/store/" + path)));
}
示例4: Main
static void Main(string[] args)
{
if (args.Length < 1)
{
Console.WriteLine("must have at least 1 argument.");
return;
}
switch (args[0])
{
case "create":
{
if (args.Length < 2)
{
Console.WriteLine("must have at least 2 arguments (create <appname>).");
return;
}
string appname = args[1];
Cache c = new Cache(false);
if (c.Exists("server/" + appname))
{
Console.WriteLine("this app is already created.");
return;
}
if (!File.Exists(".pvdeploy"))
{
Console.WriteLine("no .pvdeploy file found; please create one.");
return;
}
FileFilter filter = FileFilterParser.Parse(".pvdeploy", GetRecursiveFilesInCwd());
foreach (KeyValuePair<string, string> kv in filter)
{
// Key is original filename.
// Value is filename to store as.
Hash hash = Hash.FromFile(Path.Combine(Environment.CurrentDirectory, kv.Key));
Console.WriteLine(Hash.Empty.ToString() + " => " + hash.ToString() + " " + kv.Value);
c.Set<Hash>("server/" + appname + "/hashes/" + kv.Value, hash);
if (c.Exists("server/" + appname + "/store/" + kv.Value))
c.Delete("server/" + appname + "/store/" + kv.Value);
File.Copy(Path.Combine(Environment.CurrentDirectory, kv.Key), c.GetFilePath("server/" + appname + "/store/" + kv.Value));
}
return;
}
case "test-pvdeploy":
{
if (args.Length < 1)
{
Console.WriteLine("must have at least 1 argument (test-pvdeploy).");
return;
}
if (!File.Exists(".pvdeploy"))
{
Console.WriteLine("no .pvdeploy file found; please create one.");
return;
}
FileFilter filter = FileFilterParser.Parse(".pvdeploy", GetRecursiveFilesInCwd());
foreach (KeyValuePair<string, string> kv in filter)
{
// Key is original filename.
// Value is filename to store as.
Console.WriteLine(kv.Key + " => " + kv.Value);
}
return;
}
case "flash":
{
if (args.Length < 2)
{
Console.WriteLine("must have at least 2 arguments (flash <appname>).");
return;
}
string appname = args[1];
Cache c = new Cache(false);
if (!c.Exists("server/" + appname))
{
Console.WriteLine("use create to create this app first.");
return;
}
if (!File.Exists(".pvdeploy"))
{
Console.WriteLine("no .pvdeploy file found; please create one.");
return;
}
// Find all files in the current working directory.
diff_match_patch dmf = new diff_match_patch();
FileFilter filter = FileFilterParser.Parse(".pvdeploy", GetRecursiveFilesInCwd());
foreach (KeyValuePair<string, string> kv in filter)
{
//.........这里部分代码省略.........
示例5: PerformUpdate
private void PerformUpdate(bool initial)
{
Cache c = new Cache(false);
this.m_DualLog.WriteEntry("Periodic update check has started.");
// Find all application instances.
try
{
if (!c.Exists("instances"))
c.Set<ApplicationInstanceList>("instances", new ApplicationInstanceList());
ApplicationInstanceList list = c.Get<ApplicationInstanceList>("instances");
this.m_DualLog.WriteEntry("Application instance list retrieved with " + list.Count + " applications to check.");
for (int i = 0; i < list.Count; i++)
{
if (initial || (DateTime.Now - list[i].LastCheckTime).TotalHours >= 3)
this.PerformUpdateSingle(list[i].FilesystemPath);
else
this.m_DualLog.WriteEntry("The application at " + list[i].UpdateUrl + " has been checked in the last 3 hours.");
}
this.m_DualLog.WriteEntry("Periodic update check has finished.");
}
catch (Exception e)
{
this.m_DualLog.WriteException("Periodic update check failed with exception:", e);
}
}