Beispiel #1
0
        public string Read(string idPart, string idObj, string idServ)
        {
            var sReq = new List <string>();

            if (!CheckAvailFrontend() || !SParts[idPart].IdServs.Contains(frontend.IdServ))
            {
                frontend = null;
            }

            if (frontend != null)
            {
                var res = DoRead(idPart, idObj);
                if (!res.Equals(NA))
                {
                    return(res);
                }
                sReq.Add(frontend.IdServ);
            }

            if (idServ != ANY &&
                !sReq.Contains(idServ) &&
                SParts[idPart].IdServs.Contains(idServ) &&
                Servs[idServ].GetAvailSync())
            {
                frontend = fronts[idServ];
                var res = DoRead(idPart, idObj);
                if (!res.Equals(NA))
                {
                    return(res);
                }
                sReq.Add(idServ);
            }

            foreach (var s in SParts[idPart].IdServs)
            {
                if (sReq.Contains(s) || !Servs[s].GetAvailSync())
                {
                    continue;
                }

                frontend = fronts[s];
                var res = DoRead(idPart, idObj);
                if (!res.Equals(NA))
                {
                    return(res);
                }
            }
            return(NA);
        }
Beispiel #2
0
        public int Write(string idPart, string idObj, string val)
        {
            var mid = SParts[idPart].Mid;

            if (!Servs[mid].GetAvailSync())
            {
                return(-1);
            }

            if (!CheckAvailFrontend() || frontend.IdServ != mid)
            {
                frontend = fronts[mid];
            }

            return(frontend.Write(idPart, idObj, val));
        }