Ниже приведён пример использования операции SetMbUpdate для продолжения установки обновления. Указанный пример должен выполняться циклически после того, как был осуществлён запуск установки обновления. Выполнение может продолжаться до того момента, пока в результате выполнения операции в поле SetMbUpdateResult.meta.execute.state не будет получено значение Finished или FinishedWithError.
{
"SetMbUpdate" :
{
"tMbUpdate" :
{
"id" : "HIDMDIEFBHCHGOAEGIHPHLGMDNKCMEDEBIGGMJJBPLDGFEOG!M!S!MbUpdOJFBNIEFBHCHGOAEJCKDBGBGODBNBCBEIIDAJOFDEKCIONGC"
},
"tArg" :
{
"pattern" :
{
"execute" : "true"
},
"meta" :
{
"execute" :
{
"async" : "false",
"callback" :
{
"onProgress" : ""
}
}
},
"metaGet" :
{
"execute" : "true"
}
}
}
}
{
"SetMbUpdateResult" :
{
"id" :
{
"id" : "HIDMDIEFBHCHGOAEGIHPHLGMDNKCMEDEBIGGMJJBPLDGFEOG!M!S!MbUpdOJFBNIEFBHCHGOAEJCKDBGBGODBNBCBEIIDAJOFDEKCIONGC"
},
"meta" :
{
"execute" :
{
"resolveTimeout" : "600000",
"state" : "Finished"
}
}
}
}
public static SetMbUpdateResult UpdateExecuteState(string moniker)
{
var somClient = new SomPortTypeClient(); // Прокси-объект для выполнения операций
// Параметры выполнения операции
var tSet = new SetMbUpdate()
{
tArg = new SetMbUpdateArg()
{
pattern = new MbUpdateMdPattern()
{
execute = true
},
meta = new MbUpdateMd()
{
execute = new MbUpdateExecute()
{
callback = new MbUpdateExecuteCallback()
{
onProgress = new MbUpdateProgressData() //Чтобы разрешить обратный вызов хода выполнения
},
async = false
},
},
metaGet = new MbUpdateMdPattern()
{
execute = true
}
},
tMbUpdate = new MbUpdateId() { id = moniker }
};
var result = somClient.SetMbUpdate(tSet);
// Циклическое выполнение SetMbUpdate до того момента, пока обновление не установится полностью
do
{
// Продолжение обновления
result = somClient.SetMbUpdate(tSet);
} while ((result.meta.execute.state != MbUpdateExecuteState.Finished) && (result.meta.execute.state != MbUpdateExecuteState.FinishedWithError));
return result;
}
См. также: