/* (non-Javadoc) * @see org.epics.pvdata.monitor.MonitorRequester#monitorConnect(org.epics.pvdata.pv.Status, org.epics.pvdata.monitor.Monitor, org.epics.pvdata.pv.Structure) */ @Override public void monitorConnect(Status status, Monitor monitor, Structure structure) { reportStatus("Failed to create monitor", status); if (status.isSuccess()) { // this.monitor = monitor; monitor.start(); } }
/* (non-Javadoc) * @see org.epics.pvaccess.client.GetFieldRequester#getDone(org.epics.pvdata.pv.Status, org.epics.pvdata.pv.Field) */ @Override public void getDone(Status status, Field field) { reportStatus("Failed to instrospect channel '" + channel.getChannelName() + "'", status); if (status.isSuccess()) { channelType = field; Field valueField = ((Structure) channelType).getField("value"); if (valueField != null && valueField.getID().equals("enum_t")) { isChannelEnumType = true; // TODO could create a monitor just to get value.choices } else isChannelEnumType = false; } processConnection(this); }
/* (non-Javadoc) * @see org.epics.pvaccess.client.ChannelPutRequester#putDone(org.epics.pvdata.pv.Status) */ @Override public void putDone(Status status) { reportStatus("Failed to put value", status); WriteRequest writeRequest; synchronized (writeRequests) { writeRequest = writeRequests.poll(); } if (writeRequest != null) { if (status.isSuccess()) { writeRequest.getCallback().channelWritten(null); } else { writeRequest.getCallback().channelWritten(new Exception(status.getMessage())); } doNextWrite(); } }
/* (non-Javadoc) * @see org.epics.pvaccess.client.ChannelPutRequester#channelPutConnect(org.epics.pvdata.pv.Status, org.epics.pvaccess.client.ChannelPut, org.epics.pvdata.pv.PVStructure, org.epics.pvdata.misc.BitSet) */ @Override public void channelPutConnect( Status status, ChannelPut channelPut, PVStructure pvStructure, BitSet bitSet) { reportStatus("Failed to create ChannelPut instance", status); if (status.isSuccess()) { this.channelPut = channelPut; if (isChannelEnumType) { // handle inconsistent behavior this.channelPutValueField = pvStructure.getSubField("value"); if (this.channelPutValueField instanceof PVStructure) this.channelPutValueField = ((PVStructure) pvStructure).getSubField("index"); } else { this.channelPutValueField = pvStructure.getSubField("value"); } // set BitSet bitSet.clear(); // re-connect case if (this.channelPutValueField != null) bitSet.set(channelPutValueField.getFieldOffset()); } doNextWrite(); }
@Override public void channelCreated(Status status, Channel channel) { reportStatus("Failed to create channel instance '" + channel.getChannelName(), status); this.channel = channel; }