Forcing BytesTotal/BytesUploaded to return sane information

This commit is contained in:
Garry Newman 2017-12-06 13:08:48 +00:00
parent 6ce4e637d9
commit d60ebf5fdd
2 changed files with 42 additions and 21 deletions

View File

@ -433,6 +433,21 @@ public void CreatePublish()
item.Tags.Add( "Apple" ); item.Tags.Add( "Apple" );
item.Tags.Add( "Banana" ); item.Tags.Add( "Banana" );
// Make a folder
var testFolder = new System.IO.DirectoryInfo("BlahBlah");
if (!testFolder.Exists) testFolder.Create();
item.Folder = testFolder.FullName;
// Upload a file of random bytes
var rand = new Random();
var testFile = new byte[1024 * 1024 * 32];
rand.NextBytes(testFile);
System.IO.File.WriteAllBytes( testFolder.FullName + "/testfile1.bin", testFile);
Console.WriteLine(item.Folder);
try try
{ {
item.Publish(); item.Publish();
@ -440,7 +455,11 @@ public void CreatePublish()
while ( item.Publishing ) while ( item.Publishing )
{ {
client.Update(); client.Update();
Thread.Sleep( 100 ); Thread.Sleep( 10 );
Console.WriteLine("Progress: " + item.Progress);
Console.WriteLine("BytesUploaded: " + item.BytesUploaded);
Console.WriteLine("BytesTotal: " + item.BytesTotal);
} }
Assert.IsFalse( item.Publishing ); Assert.IsFalse( item.Publishing );
@ -469,6 +488,8 @@ public void CreatePublish()
{ {
Console.WriteLine( "Deleting: {0}", item.Id ); Console.WriteLine( "Deleting: {0}", item.Id );
item.Delete(); item.Delete();
System.IO.File.Delete(testFolder.FullName + "/testfile.bin");
} }
} }
} }

View File

@ -43,56 +43,54 @@ public double Progress
{ {
get get
{ {
if ( !Publishing ) return 1.0; var bt = BytesTotal;
if ( CreateItem != null ) return 0.0; if (bt == 0) return 0;
if ( SubmitItemUpdate == null ) return 1.0;
ulong b = 0; return (double)BytesUploaded / (double)bt;
ulong t = 0;
workshop.steamworks.native.ugc.GetItemUpdateProgress( UpdateHandle, out b, out t );
if ( t == 0 )
return 0;
return (double)b / (double) t;
} }
} }
private int bytesUploaded = 0;
public int BytesUploaded public int BytesUploaded
{ {
get get
{ {
if ( !Publishing ) return 0; if ( !Publishing ) return bytesUploaded;
if ( CreateItem != null ) return 0; if (UpdateHandle == 0) return bytesUploaded;
if ( SubmitItemUpdate == null ) return 0;
ulong b = 0; ulong b = 0;
ulong t = 0; ulong t = 0;
workshop.steamworks.native.ugc.GetItemUpdateProgress( UpdateHandle, out b, out t ); workshop.steamworks.native.ugc.GetItemUpdateProgress( UpdateHandle, out b, out t );
return (int) b; bytesUploaded = Math.Max( bytesUploaded, (int) b );
return (int)bytesUploaded;
} }
} }
private int bytesTotal = 0;
public int BytesTotal public int BytesTotal
{ {
get get
{ {
if ( !Publishing ) return 0; if ( !Publishing ) return bytesTotal;
if ( CreateItem != null ) return 0; if (UpdateHandle == 0 ) return bytesTotal;
if ( SubmitItemUpdate == null ) return 0;
ulong b = 0; ulong b = 0;
ulong t = 0; ulong t = 0;
workshop.steamworks.native.ugc.GetItemUpdateProgress( UpdateHandle, out b, out t ); workshop.steamworks.native.ugc.GetItemUpdateProgress( UpdateHandle, out b, out t );
return (int)t; bytesTotal = Math.Max(bytesTotal, (int)t);
return (int)bytesTotal;
} }
} }
public void Publish() public void Publish()
{ {
bytesUploaded = 0;
bytesTotal = 0;
Publishing = true; Publishing = true;
Error = null; Error = null;
@ -117,6 +115,7 @@ private void OnItemCreated( SteamNative.CreateItemResult_t obj, bool Failed )
{ {
NeedToAgreeToWorkshopLegal = obj.UserNeedsToAcceptWorkshopLegalAgreement; NeedToAgreeToWorkshopLegal = obj.UserNeedsToAcceptWorkshopLegalAgreement;
CreateItem.Dispose(); CreateItem.Dispose();
CreateItem = null;
if ( obj.Result == SteamNative.Result.OK && !Failed ) if ( obj.Result == SteamNative.Result.OK && !Failed )
{ {
@ -188,6 +187,7 @@ private void OnChangesSubmitted( SteamNative.SubmitItemUpdateResult_t obj, bool
if ( Failed ) if ( Failed )
throw new System.Exception( "CreateItemResult_t Failed" ); throw new System.Exception( "CreateItemResult_t Failed" );
UpdateHandle = 0;
SubmitItemUpdate = null; SubmitItemUpdate = null;
NeedToAgreeToWorkshopLegal = obj.UserNeedsToAcceptWorkshopLegalAgreement; NeedToAgreeToWorkshopLegal = obj.UserNeedsToAcceptWorkshopLegalAgreement;
Publishing = false; Publishing = false;