# Class SocketWrapperBase.OperationState<A>

java.lang.Object
org.apache.tomcat.util.net.SocketWrapperBase.OperationState<A>

Type Parameters:
  `A` - The attachment type

All Implemented Interfaces:
  `Runnable`

Enclosing class:
  `SocketWrapperBase<E>`

protected abstract class SocketWrapperBase.OperationState<A> extends Object implements Runnable
Internal state tracker for vectored operations.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final A`
`attachment`
Attachment object passed to the completion handler.
`protected final SocketWrapperBase.BlockingMode`
`block`
Blocking mode for the operation.
`protected final ByteBuffer[]`
`buffers`
Buffers used for the vectored I/O operation.
`protected final AtomicBoolean`
`callHandler`
Flag to ensure the completion handler is called only once.
`protected final SocketWrapperBase.CompletionCheck`
`check`
Completion check to determine handler invocation.
`protected final SocketWrapperBase<E>.VectoredIOCompletionHandler<A>`
`completion`
Vectored I/O completion handler.
`protected boolean`
`completionDone`
Indicates whether the vectored I/O completion processing is done.
`protected final CompletionHandler<Long, ? super A>`
`handler`
Completion handler to invoke when the operation completes.
`protected final int`
`length`
Number of buffers in the operation.
`protected long`
`nBytes`
Total number of bytes transferred by the operation.
`protected final int`
`offset`
Offset in the buffer array.
`protected final boolean`
`read`
Indicates whether this is a read operation.
`protected final Semaphore`
`semaphore`
Semaphore for synchronizing concurrent operations.
`protected SocketWrapperBase.CompletionState`
`state`
Current completion state of the operation.
`protected final long`
`timeout`
Timeout value for the operation.
`protected final TimeUnit`
`unit`
Time unit for the timeout.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`OperationState(boolean read, ByteBuffer[] buffers, int offset, int length, SocketWrapperBase.BlockingMode block, long timeout, TimeUnit unit, A attachment, SocketWrapperBase.CompletionCheck check, CompletionHandler<Long, ? super A> handler, Semaphore semaphore, SocketWrapperBase<E>.VectoredIOCompletionHandler<A> completion)`
Creates a new operation state for a vectored I/O operation.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`end()`
End the operation.
`protected boolean`
`hasOutboundRemaining()`
Checks if there is remaining outbound data in the buffers.
`protected abstract boolean`
`isInline()`
Determines whether the operation is still executing on the original caller thread.
`protected boolean`
`process()`
Process the operation using the connector executor.
`protected void`
`start()`
Start the operation, this will typically call run.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface Runnable

`run`

## Field Details

### read

protected final boolean read
Indicates whether this is a read operation.

### buffers

protected final ByteBuffer[] buffers
Buffers used for the vectored I/O operation.

### offset

protected final int offset
Offset in the buffer array.

### length

protected final int length
Number of buffers in the operation.

### attachment

protected final A attachment
Attachment object passed to the completion handler.

### timeout

protected final long timeout
Timeout value for the operation.

### unit

protected final TimeUnit unit
Time unit for the timeout.

### block

protected final SocketWrapperBase.BlockingMode block
Blocking mode for the operation.

### check

protected final SocketWrapperBase.CompletionCheck check
Completion check to determine handler invocation.

### handler

protected final CompletionHandler<Long, ? super A> handler
Completion handler to invoke when the operation completes.

### semaphore

protected final Semaphore semaphore
Semaphore for synchronizing concurrent operations.

### completion

protected final SocketWrapperBase<E>.VectoredIOCompletionHandler<A> completion
Vectored I/O completion handler.

### callHandler

protected final AtomicBoolean callHandler
Flag to ensure the completion handler is called only once.

### nBytes

protected volatile long nBytes
Total number of bytes transferred by the operation.

### state

protected volatile SocketWrapperBase.CompletionState state
Current completion state of the operation.

### completionDone

protected boolean completionDone
Indicates whether the vectored I/O completion processing is done.

## Constructor Details

### OperationState

protected OperationState(boolean read, ByteBuffer[] buffers, int offset, int length, SocketWrapperBase.BlockingMode block, long timeout, TimeUnit unit, A attachment, SocketWrapperBase.CompletionCheck check, CompletionHandler<Long, ? super A> handler, Semaphore semaphore, SocketWrapperBase<E>.VectoredIOCompletionHandler<A> completion)
Creates a new operation state for a vectored I/O operation.

Parameters:
  `read` - Whether this is a read operation
  `buffers` - The buffers for the operation
  `offset` - The offset in the buffer array
  `length` - The number of buffers
  `block` - The blocking mode
  `timeout` - The timeout duration
  `unit` - The timeout time unit
  `attachment` - An attachment object
  `check` - The completion check
  `handler` - The completion handler
  `semaphore` - The semaphore for synchronization
  `completion` - The vectored I/O completion handler

## Method Details

### isInline

protected abstract boolean isInline()
Determines whether the operation is still executing on the original caller thread.

Returns:
  `true` if the operation is still inline, `false` if running on a separate thread

### hasOutboundRemaining

protected boolean hasOutboundRemaining()
Checks if there is remaining outbound data in the buffers.

Returns:
  `false` by default; overridden by NIO implementations

### process

protected boolean process()
Process the operation using the connector executor.

Returns:
  true if the operation was accepted, false if the executor rejected execution

### start

protected void start()
Start the operation, this will typically call run.

### end

protected void end()
End the operation.