public void update(IObservableEx observable, object hint, object data) { //expected to be implemented by derived class throw new NotImplementedException(); }
public void update(IObservableEx observable, object hint, object data) { _observerWrapper(observable, hint, data); }
public void clientUpdate(IObservableEx observable, object hint, object clientObj) { //need to wait to notify until after base class has gotton response //to role request //or have library query first before creating client //WIP... var client = clientObj as IClient; Thread.Sleep(1000); Console.WriteLine("...SimManager.clientUpdate: " + hint); switch (hint) { case "CONNECTED": //was it an instrument? if (client.role == Role.Instrument) { Console.WriteLine(client.name + " INSTRUMENT CONNECTED"); //listen for run state changes client.addObserver(new ObserverAdapterEx((anobject, ahint, data) => { var bytes = (byte[])data; var anInstrumentClient = (InstrumentClient)anobject; if ((ahint as string) == "RUNSTATE_CHANGED") { var say = string.Format("{0} notified {1} with {2}", client.name, ahint, Encoding.UTF8.GetString(bytes, 0, bytes.Length) ); Console.WriteLine(say); } })); //add a status listener client.addStatusListener((name, data) => { Console.WriteLine("status listener: {0}", name); }); } if (client.role == Role.Sensor) { Console.WriteLine(client.name + " SENSOR CONNECTED"); //listen for run state changes client.addObserver(new ObserverAdapterEx((anobject, ahint, data) => { Console.WriteLine((ahint as string)); })); //add a status listener client.addStatusListener((name, bytes) => { Console.WriteLine("status listener: {0}:{1}", name, Encoding.UTF8.GetString(bytes, 0, bytes.Length)); }); } break; } }