public void add(StateSubscriberBase subscriber) { // TODO: revise for performance Subscriber s = new Subscriber(); s.subscriber = subscriber; s.ref_id_at_subscriber = (ulong)subscribers.Count; s.ref_id_at_publisher = 0; subscribers.Add(s); }
public void remove(StateSubscriberBase subscriber) { for (int i = 0; i < subscribers.Count; ++i) { if (subscribers[i].subscriber == subscriber) { // TODO: if unsubscribeMessaage is to be sent, it's probably the right place subscribers.RemoveAt(i); return; } } Debug.Assert(false); // not found }
public void subscribe(StateSubscriberBase subscriber, string path) { for (int i = 0; i < subscribers.Count; ++i) if (subscribers[i].subscriber == subscriber) { BufferT buff = platform.makeBuffer(); IPublishableComposer composer = platform.makePublishableComposer(buff); PublishableStateMessageHeader mh = new PublishableStateMessageHeader(); mh.type = PublishableStateMessageHeader.MsgType.subscriptionRequest; mh.priority = 0; // TODO: source mh.state_type_id_or_direction = subscriber.stateTypeID(); mh.path = path; Debug.Assert(subscribers[i].ref_id_at_subscriber == (ulong)i); mh.ref_id_at_subscriber = subscribers[i].ref_id_at_subscriber; GMQueue.helperComposePublishableStateMessageBegin(composer, mh); GMQueue.helperComposePublishableStateMessageEnd(composer); //assert(transport != nullptr); transport.postMessage(buff); return; } Debug.Assert(false); // not found }
public void subscribe(StateSubscriberBase subscriber, string path) { subPool.subscribe(subscriber, path); }
public void remove(StateSubscriberBase obj) { subPool.remove(obj); }
public void add(StateSubscriberBase obj) { subPool.add(obj); }