I want to get all video walls from all connected servers via Configuration.Instance.GetItemsByKind(Kind.VideoWall).
I added 2 servers via VideoOS.Platform.SDK.Environment.AddServer. One server has corporate license and another one has essential+. Only corporate server has license for Video Walls.
I get VideoWalls from corporate server if I add first essential server and second corporate server.
I do not get any wall if I add this servers in different order.
I can reproduce it also in your Multi Site Viewer example (I changed filter in select camera button from Cameras to VideoWalls):
It seems it gets video walls only from server in Configuration.Instance.ServerFQID.ServerId and it ignores other connected servers.
It works fine for Cameras: Configuration.Instance.GetItemsByKind(Kind.Camera). I always get all cameras from both servers.
How can I get all video walls from all connected servers no matter on order of adding of servers?
XProtect Essential+ does not support Smart Wall. This means you will never get a Smart Wall from Essential+.
While this might explain that you never have a Smart Wall in one of the test servers you have, it does not explain why you see different behavior depending on the order of which the servers have been added. I will do some further investigation on this and get back..
On Smart Wall not on XProtect Essential+ see - https://content.milestonesys.com/media/?mediaId=462CC41E-6D0F-4BB4-8B4EEB1F0030C2CF
I would expect that I got all video walls from all added servers, e.g.
configuration of servers added via VideoOS.Platform.SDK.Environment.AddServer:
server essential+ (no video wall because of license)
server corporate (2 video walls)
server corporate (no video walls)
server corporate (3 video walls)
Expected bevaiour (as it works for Kind.Camera):
Configuration.Instance.GetItemsByKind(Kind.VideoWall) would return 4 servers and I could call GetChildren() for every server to get its video walls. The second server would return 2 video walls, the fourth server 3 video walls and others no video walls.
I’ve tried a workaround to get video walls via ProvideCurrentState event and it does not return video walls at all.
What you are doing is not supported. The sample will assume that the first site is the master site, and certain behaviors will depend on and communicate with that master site. The sample will work fine if the sites are the same Milestone Federated Architecture (MFA) setup and working with cameras
What you can do is to add the servers as already done in the sample. Then for each site read the Smart Wall using Configuration API.
Something like:
var ms = new ManagementServer(site.ServerId);
var vw= ms.VideoWallFolder.VideoWalls;
Your solution working great, thank you.