コード例 #1
0
 public void update(IObservableEx observable, object hint, object data)
 {
     //expected to be implemented by derived class
     throw new NotImplementedException();
 }
コード例 #2
0
 public void update(IObservableEx observable, object hint, object data)
 {
     _observerWrapper(observable, hint, data);
 }
コード例 #3
0
        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;
            }
        }