public VMAbstractEODRackPlugin(VMEODServer server) : base(server)
        {
            // Get the data from the global server containing the rack name
            server.vm.GlobalLink.LoadPluginPersist(server.vm, server.Object.PersistID, server.PluginID, (byte[] data) =>
            {
                lock (this)
                {
                    if (data == null)
                    {
                        Data          = new VMEODRackData();
                        Data.RackName = "Name your rack";
                    }
                    else
                    {
                        Data = new VMEODRackData(data);
                    }
                }
            });

            Lobby = new EODLobby <VMEODPaperChaseSlot>(server, 1)
                    .OnFailedToJoinDisconnect();

            PlaintextHandlers["close"]  = Lobby.Close;
            server.CanBeActionCancelled = true;
        }
 public override void OnDisconnection(VMEODClient client)
 {
     // check to see if the rack name was changed by owner, if so save the new name on the server
     if (HasRackNameChanged)
     {
         Data.RackName = ProposedNewRackName;
         var newData = new VMEODRackData(Data.Save());
         Server.vm.GlobalLink.SavePluginPersist(Server.vm, Server.Object.PersistID, (uint)VMEODRackPluginIDs.RackOwnerPlugin, newData.Save());
         Server.vm.GlobalLink.SavePluginPersist(Server.vm, Server.Object.PersistID, (uint)VMEODRackPluginIDs.RackCustomerPlugin, newData.Save());
     }
     Lobby.Leave(client);
 }