public void SharedObjectTrack(BaseClientApplication app, string name, uint version, bool isPersistent, Variant primitives)
{
SlaveClusterAppProtocolHandler.GotAppIdDelegate task = appId =>
{
Send(ClusterMessageType.SharedObjectTrack, o =>
{
o.Write7BitValue(appId);
o.Write(name);
o.Write7BitValue(version);
o.Write(isPersistent);
o.Write(primitives.ToBytes());
});
primitives.Recycle();
};
if (app.Id == 0)
{
var gotAppIdTasks = Application.GetProtocolHandler<SlaveClusterAppProtocolHandler>().GotAppIdTasks;
if (gotAppIdTasks.ContainsKey(app.Name))
{
gotAppIdTasks[app.Name] += task;
}
else
{
gotAppIdTasks[app.Name] = task;
}
}
else
{
task(app.Id);
}
}