@Override protected void write(Object newValue, ChannelWriteCallback callback) { if (file == null) { callback.channelWritten(new RuntimeException("Channel is closed")); } if (format == null || !format.isWriteSupported()) { callback.channelWritten(new RuntimeException("Format does not support write")); } // If the new value is not a VType, try to convert it using // the standard conversions if (!(newValue instanceof VType)) { Object converted = ValueFactory.toVType(newValue); if (converted != null) { newValue = converted; } } try (OutputStream out = new FileOutputStream(file)) { format.writeValue(newValue, out); callback.channelWritten(null); } catch (Exception ex) { callback.channelWritten(ex); } }
@Override public void putCompleted(PutEvent ev) { if (log.isLoggable(Level.FINEST)) { log.log(Level.FINEST, "JCA putCompleted for channel {0} event {1}", new Object[] {getChannelName(), ev}); } if (ev.getStatus().isSuccessful()) { callback.channelWritten(null); } else { callback.channelWritten(new Exception(ev.toString())); } } };
@Override public void write(Object newValue, final ChannelWriteCallback callback) { try { if (isPutCallback()) putWithCallback(newValue, callback); else put(newValue, callback); } catch (CAException ex) { callback.channelWritten(ex); } }
private void doNextWrite() { WriteRequest writeRequest; synchronized (writeRequests) { writeRequest = writeRequests.peek(); } if (writeRequest != null) { try { if (channelPutValueField == null) throw new RuntimeException("No 'value' field"); fromObject(channelPutValueField, writeRequest.getNewValue()); channelPut.put(channelPutStructure, bitSet); } catch (Exception ex) { writeRequests.poll(); writeRequest.getCallback().channelWritten(ex); } } }
@Override public void putDone(Status status, ChannelPut channePut) { 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(); } }
channel.put((Double) newValue); } else { callback.channelWritten(new Exception(new RuntimeException("Unsupported type for CA: " + newValue.getClass()))); return; callback.channelWritten(null);