On Mon, 5 Oct 2009, Andrew Johnson wrote:
> Jeff,
>
> While you're responding on this subject could you definitively answer
> Michael's original questions, which were:
>
> > Firstly, is it possible for the element count of a channel to change
> > while the channel is connected? I'm thinking in particular of the
> > case when using camonitor (well, ok, I mean ca_create_subscription())
> > to monitor a waveform PV. Each event_handler callback is informed of
> > the dbr count -- but as far as I can tell, it's always the maximum
> > waveform size, even if NORD is smaller.
>
> > Is the fact that the update size doesn't change, ca_element_count()
> > always reports the NELM, and subscribing with zero count gets the full
> > wavelength, is this restriction fundamental to channel access, a
> > limitation of the channel access server, or just something that hasn't
> > been implemented in the waveform record? This question becomes more
> > interesting as we use waveform records for large images!
Let me try and understand Jeff's remarks to possibly make it easier for
him to interpret my question.
By the options I listed:
1. Fundamental to channel access
I think Jeff is saying that current implementations of channel access do
not expect the update size to change, but that there is nothing in the
protocol over the wire to preclude such a change, merely the risk of
breaking existing clients.
I like Jeff's suggestion of interpreting a zero size request as "give me
what you've got, whatever size it is, and always send me the current
size." No doubt there are client applications that might have lazily
allocated a fixed rx buffer but still specified zero size, and they'll
break, but I suspect that's not so painful. Point the finger at them,
laugh, and fix them or tell them to set the CA_FIXED_SIZE option on their
new servers (I'm going to guess that the CA wire protocol has no provision
for such extensible settings, or does it?).
However, are there implementations of libca which are lazy in this way?
Hopefully not!
2. A limitation of channel access server
I think that Jeff is saying precisely this, dynamic channel size doesn't
exist because it's never been implemented in any channel access server.
3. Not implemented in Waveform record
Well clearly not, there's no mechanism there! However, the Waveform
record can do two things. Firstly, send updates on changes to NORD!
It's a bit remarkable that this doesn't happen already; and secondly, of
course, use dynamic channel size as soon as the CA server layer provides
it.
- Replies:
- RE: Channel access dynamic array subscription update element count Jeff Hill
- References:
- Channel access and ca_element_count michael.abbott
- RE: Channel access and ca_element_count Jeff Hill
- RE: Channel access dynamic array subscription update element count Jeff Hill
- Re: Channel access dynamic array subscription update element count Andrew Johnson
- Navigate by Date:
- Prev:
Re: Channel access dynamic array subscription update element count Andrew Johnson
- Next:
RE: state notation code flags Mark Rivers
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
<2009>
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: Channel access dynamic array subscription update element count Andrew Johnson
- Next:
RE: Channel access dynamic array subscription update element count Jeff Hill
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
<2009>
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|