protected WriteResult processWriteValue ( final Variant value, final OperationParameters operationParameters ) { final AttributeWriteHandler handler = this.writeHandler; if ( handler == null ) { return new WriteResult ( new IllegalStateException ( "No write handler set" ).fillInStackTrace () ); } try { handler.handleWrite ( value ); } catch ( final Exception e ) { return new WriteResult ( e ); } return new WriteResult (); }
@Override public WriteResult call () throws Exception { writeHandler.handleWrite ( value, operationParameters ); return new WriteResult (); } } );
@Override public void complete ( final WriteAttributeResults results ) { setResult ( new WriteResult () ); }
@Override public NotifyFuture<WriteResult> startWriteValue ( final Variant value, final OperationParameters operationParameters ) { if ( !this.value.equals ( value ) ) { this.value = value; notifyData ( value, null ); } // we can handle this directly return new InstantFuture<WriteResult> ( new WriteResult () ); }
@Override public WriteResult call () throws Exception { writeHandler.handleWrite ( operationParameters.getUserInformation (), value ); return new WriteResult (); } } );
@Override public WriteResult call () throws Exception { writeHandler.handleWrite ( operationParameters.getUserInformation (), value ); return new WriteResult (); } } );
@Override protected NotifyFuture<WriteResult> handleWrite ( final Variant value ) { final MemoryRequestBlock block = this.block; if ( block == null ) { return new InstantErrorFuture<> ( new IllegalStateException ( "Device is not connected" ) ); } final Double d = value.asDouble ( null ); if ( d != null ) { final ByteBuffer b = ByteBuffer.allocate ( 4 ); b.putFloat ( d.floatValue () ); block.writeData ( toAddress ( this.index ), b.array () ); return new InstantFuture<WriteResult> ( new WriteResult () ); } else { return new InstantErrorFuture<WriteResult> ( new IllegalArgumentException ( String.format ( "Can only write doubles: %s is not a double", value ) ) ); } }
@Override protected NotifyFuture<WriteResult> handleWrite ( final Variant value ) { final MemoryRequestBlock block = this.block; if ( block == null ) { return new InstantErrorFuture<> ( new IllegalStateException ( "Device is not connected" ) ); } final Double d = value.asDouble ( null ); if ( d != null ) { final ByteBuffer b = ByteBuffer.allocate ( 8 ); b.putDouble ( d ); block.writeData ( toAddress ( this.index ), b.array () ); return new InstantFuture<WriteResult> ( new WriteResult () ); } else { return new InstantErrorFuture<WriteResult> ( new IllegalArgumentException ( String.format ( "Can only write doubles: %s is not a double", value ) ) ); } }
@Override protected NotifyFuture<WriteResult> handleWrite ( final Variant value ) { final MemoryRequestBlock block = this.block; if ( block == null ) { return new InstantErrorFuture<WriteResult> ( new OperationException ( "Device not connected" ).fillInStackTrace () ); } block.writeBit ( toAddress ( this.index ), this.subIndex, value.asBoolean () ); return new InstantFuture<WriteResult> ( new WriteResult () ); } }
protected void handleComplete () { final Result<WriteRequest> result; try { result = this.opcFuture.get (); logger.info ( "Write returned" ); setResult ( new WriteResult () ); } catch ( final Throwable e ) { logger.info ( "Failed to write", e ); this.opcItem.setLastWriteError ( null ); setError ( new OperationException ( "Failed to write", e ).fillInStackTrace () ); return; } if ( result.isFailed () ) { this.opcItem.setLastWriteError ( result ); setError ( new OperationException ( String.format ( "Write returned with failure: 0x%08X", result.getErrorCode () ) ).fillInStackTrace () ); } } }