| IInfrascaleSdkListenerListenJobStartedT Method |
Add new Online Backup job request using existing settings.
Namespace:
SOS.SDK.Contracts
Assembly:
SOS.SDK (in SOS.SDK.dll) Version: 7.6.1.5742
Syntax JobSessionStartedListener<T> ListenJobStarted<T>(
Action<T> handler,
bool waitForFilter
)
where T : JobSessionContract
Parameters
- handler
- Type: SystemActionT
Handler, where the message will be redirected. - waitForFilter
- Type: SystemBoolean
Wait for the filter fields to be filled.
If TRUE, all incoming messages accumulate in the buffer and go the handler after the filter is assigned.
Type Parameters
- T
- Base type for event data. All events with other message type ignored.
Return Value
Type:
JobSessionStartedListenerTJobSessionStartedListenerT, subscribed to the current Infrascale Service callbacks.
Return Value
Type:
JobSessionStartedListenerTContainer with JobSession for monitoring.
Exceptions Remarks
Filter events by event type, session etc.
Dispose Listener after Job Completion for unsubscribe from Infrascale Service callbacks.
Remarks Backup jobs are added to jobs queue. Only one backup job can be performed simultaneously.
When current job is completed, next job reads actual settings from the settings storage.
Examples Run Online Backup using stored settings
using System;
using System.Diagnostics;
using System.Security.Principal;
using SOS.SDK.Contracts.DataContracts;
using SOS.SDK.Contracts.DataContracts.Jobs;
using SOS.SDK.Contracts.DataContracts.Jobs.Backup;
using SOS.SDK.Contracts.DataContracts.Requests;
using SOS.SDK.Tools.Creators;
using SOS.SDK.Tools.Runners;
namespace SOS.SDK.Test.Examples.OnlineBackup
{
public class RunOnlineBackupExamples
{
private string _testAccount = @"sdk.test@sosonlinebackup.com";
private string _testAccountPassword = @"qweqwe";
private InfrascaleClient _client;
private IdentityContract _identity;
public void SignIn()
{
if (_client == null)
{
_client = new InfrascaleClient();
_client.Connect();
_identity = null;
}
if (_identity == null)
{
var signInResponse = _client.SignIn(new SignInRequest
{
Credentials = new CredentialsContract { Login = _testAccount, Password = _testAccountPassword }
});
_identity = signInResponse.Identity;
_client.SubscribeCallback(new SubscribeCallbackRequest {Identity = _identity});
}
}
public void RunBackupWithMonitoringAndUsingRawContractsAndUseStoredSettings()
{
SignIn();
_client.SubscribeCallback(new SubscribeCallbackRequest {Identity = _identity});
using (var listener = _client.ListenOnlineBackupJob(
OnStarted, OnProgress,
OnEvents, OnCompleted))
{
var currentProcessName = Process.GetCurrentProcess().ProcessName;
string currentUserName;
using (var windowsIdentity = WindowsIdentity.GetCurrent())
{
currentUserName = windowsIdentity.Name;
}
var session = _client.RunOnlineBackupJob(new RunOnlineBackupJobRequest
{
Identity = _identity,
CallingProcessName = currentProcessName,
WindowsUser = currentUserName
});
listener.FilterJobId = session.JobId;
listener.WaitForCompletion();
}
_client.UnsubscribeCallback(new UnsubscribeCallbackRequest {Identity = _identity});
SignOut();
}
private void OnStarted(OnlineBackupJobSessionContract started)
{
Console.WriteLine("Backup Job {0} is Started", started.JobId);
}
private void OnProgress(OnlineBackupJobSessionContract progress)
{
Console.WriteLine("JobID: {0}", progress.JobId);
Console.WriteLine("\tJob state: {0}", progress.BackupState);
Console.WriteLine("\tCompleted, %: {0}", progress.ProgressPercentage);
Console.WriteLine("\tBackupSet Total: {0}", CountAndSizeToString(progress.Progress.BackupSet));
Console.WriteLine("\tFailed: {0}", CountAndSizeToString(progress.Progress.Failed));
Console.WriteLine("\tModified: {0}", CountAndSizeToString(progress.Progress.Modified));
Console.WriteLine("\tProcessed: {0}", CountAndSizeToString(progress.Progress.Total));
Console.WriteLine("\tUnchanged: {0}", CountAndSizeToString(progress.Progress.Unchanged));
Console.WriteLine("\tUploaded: {0}", CountAndSizeToString(progress.Progress.Uploaded));
foreach (var progressFileState in progress.Progress.FileStates)
{
Console.WriteLine("\t{0}: {1} ({2} / {3})", progressFileState.Name, progressFileState.Status, progressFileState.CompletedSizeBytes, progressFileState.TotalSizeBytes);
}
}
private void OnEvents(JobEventsContract events)
{
Console.WriteLine("JobID: {0}", events.JobId);
Console.WriteLine("\tEvents:");
foreach (var jobEventContract in events.Events)
{
Console.WriteLine("\t{0}: [{1}] {2}", jobEventContract.EventTime, jobEventContract.MessageType, jobEventContract.Message);
}
}
private void OnCompleted(OnlineBackupJobSessionContract completed)
{
Console.WriteLine("JobID: {0}", completed.JobId);
Console.WriteLine("\tBackup of {0} file(s) is completed.", completed.Progress.Total.Count);
}
private string CountAndSizeToString(CountAndSizeContract countAndSize)
{
return string.Format("{0} ({1} bytes)", countAndSize.Count, countAndSize.SizeBytes);
}
}
}
See Also