using System; using Christie_net.datagear.command; using Christie_net.datagear.dg; namespace Christie_net.datagear { public class LocalDataGearManager : DataGearManager { // 通常はこちらを使用する public override void Put(string key, object data) { DataGear dg = new DataGear(data); PutRun(key, dg); } public void PutRun(string key, DataGear dg) { Command cm = new CommandBuilder().Init(CommandType.PUT).CgmID(1) .ToDgmName("local").Key(key).Dg(dg).Build(); RunCommand(cm); } public override void RunCommand(Command cm) { switch (cm.type) { case CommandType.PUT: dataGears.SetData(cm); if (waitList.ContainsKey(cm.key)) { RunCommand(waitList.GetAndRemoveCommand(cm.key)); } break; case CommandType.TAKE: case CommandType.REMOTETAKE: case CommandType.PEEK: case CommandType.REMOTEPEEK: if (dataGears.ContainsKey(cm.key)) { SetData(cm); cm.Execute(); } else { waitList.Add(cm); } break; case CommandType.REPLY: cm.Execute(); break; } } private void SetData(Command cm) { cm.SetDg(dataGears.GetData(cm)); } public override void ResolveWaitCommand(string key, DataGear dg) { } public override void Finish() { } public override void Close() { } public override void Shutdown() { } } }