DepotDownloader: Can't compile without this

pull/8/head
Ryan Kistner 13 years ago
parent 7c7ee18c2c
commit 2532f88768

@ -0,0 +1,103 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProtoBuf;
using System.IO;
using System.IO.Compression;
using System.Net;
namespace DepotDownloader
{
[ProtoContract]
class ConfigCache
{
public const string CONFIG_FILENAME = "config.proto";
public static ConfigCache Instance = Load(CONFIG_FILENAME);
[ProtoContract]
class IPEndpointSurrogate
{
[ProtoMember(1)]
private byte[] address;
[ProtoMember(2)]
private int port;
public IPEndpointSurrogate()
{
}
public IPEndpointSurrogate(byte[] address, int port)
{
this.address = address;
this.port = port;
}
public static implicit operator IPEndPoint(IPEndpointSurrogate ip)
{
if (ip == null || ip.address == null)
return null;
return new IPEndPoint(new IPAddress(ip.address), ip.port);
}
public static implicit operator IPEndpointSurrogate(IPEndPoint ip)
{
if (ip == null)
return null;
return new IPEndpointSurrogate(ip.Address.GetAddressBytes(), ip.Port);
}
}
[ProtoMember(1)]
public byte[] CDRHash { get; set; }
[ProtoMember(2)]
public DateTime CDRCacheTime { get; set; }
[ProtoMember(3)]
public ServerList ConfigServers { get; set; }
[ProtoMember(4)]
public ServerList CSDSServers { get; set; }
[ProtoMember(5)]
public DateTime ServerCacheTime { get; set; }
public static ConfigCache Load(string filename)
{
ProtoBuf.Meta.RuntimeTypeModel.Default.Add(typeof(IPEndPoint), true).SetSurrogate(typeof(IPEndpointSurrogate));
if(!File.Exists(filename))
return new ConfigCache();
try
{
using (FileStream fs = File.Open(filename, FileMode.Open))
using (DeflateStream ds = new DeflateStream(fs, CompressionMode.Decompress))
return ProtoBuf.Serializer.Deserialize<ConfigCache>(ds);
}
catch (IOException)
{
File.Delete(filename);
}
catch (Exception e)
{
Console.WriteLine("Unable to load config cache: {0}", e.Message);
}
return new ConfigCache();
}
public void Save(string filename)
{
try
{
using (FileStream fs = File.Open(filename, FileMode.Create))
using (DeflateStream ds = new DeflateStream(fs, CompressionMode.Compress))
ProtoBuf.Serializer.Serialize<ConfigCache>(ds, this);
}
catch (IOException)
{
}
}
}
}
Loading…
Cancel
Save