# Interface Writer

public interface Writer
Packet Writer interface

## Method Summary

Modifier and Type
Method
Description
`byte[]`
`buf()`
Current buffer
`boolean`
`bufIsDataAfterMark()`
Buffer has data after marked position
`void`
`close()`
Close socket stream
`void`
`flush()`
Send packet to socket.
`void`
`flushBufferStopAtMark()`
Flush to last mark.
`void`
`flushPipeline()`
Send packet to buffered outputstream without flushing
`long`
`getCmdLength()`
Get current command length
`byte`
`getSequence()`
Get current sequence object
`boolean`
`hasFlushed()`
Current command has flushed packet to socket
`void`
`initPacket()`
reset sequences and position for sending a new packet
`boolean`
`isMarked()`
has some position been marked
`void`
`mark()`
mark position
`void`
`permitTrace(boolean permitTrace)`
Indicate if logging trace are permitted
`int`
`pos()`
current buffer position
`void`
`pos(int pos)`
Set current buffer position
`byte[]`
`resetMark()`
Reset mark flag and send bytes after mark flag.
`void`
`setServerThreadId(Long serverThreadId, HostAddress hostAddress)`
Set server thread id.
`boolean`
`throwMaxAllowedLength(int length)`
is length > to max allowed length
`boolean`
`throwMaxAllowedLengthOr16M(int length)`
is length > to max allowed length or 16M if unknown
`void`
`writeAscii(String str)`
Write ascii string to buffer
`void`
`writeByte(int value)`
Write byte into buf, flush buf to socket if needed.
`void`
`writeBytes(byte[] arr)`
Write byte array to buffer
`void`
`writeBytes(byte[] arr, int off, int len)`
Write byte array to buf.
`void`
`writeBytesAtPos(byte[] arr, int pos)`
Write byte array to buffer at a specific position
`void`
`writeBytesEscaped(byte[] bytes, int len, boolean noBackslashEscapes)`
Write escape bytes to socket.
`void`
`writeDouble(double value)`
Write Double binary value to buffer
`void`
`writeEmptyPacket()`
Send empty packet.
`void`
`writeFloat(float value)`
Write float binary value to buffer
`void`
`writeInt(int value)`
Write int value into buf.
`void`
`writeLength(long length)`
Write field length into buf, flush socket if needed.
`void`
`writeLong(long value)`
Write long value into buf.
`void`
`writeShort(short value)`
Write short value into buf.
`void`
`writeString(String str)`
Write utf8 string to buffer
`void`
`writeStringEscaped(String str, boolean noBackslashEscapes)`
Write string to socket.

## Method Details

### pos

int pos()
current buffer position

Returns:
  current buffer position

### buf

byte[] buf()
Current buffer

Returns:
  current buffer

### pos

void pos(int pos) throws IOException
Set current buffer position

Parameters:
  `pos` - position
Throws:
  `IOException` - if buffer cannot grow to position

### writeByte

void writeByte(int value) throws IOException
Write byte into buf, flush buf to socket if needed.

Parameters:
  `value` - byte to send
Throws:
  `IOException` - if socket error occur.

### writeShort

void writeShort(short value) throws IOException
Write short value into buf. flush buf if too small.

Parameters:
  `value` - short value
Throws:
  `IOException` - if socket error occur

### writeInt

void writeInt(int value) throws IOException
Write int value into buf. flush buf if too small.

Parameters:
  `value` - int value
Throws:
  `IOException` - if socket error occur

### writeLong

void writeLong(long value) throws IOException
Write long value into buf. flush buf if too small.

Parameters:
  `value` - long value
Throws:
  `IOException` - if socket error occur

### writeDouble

void writeDouble(double value) throws IOException
Write Double binary value to buffer

Parameters:
  `value` - double value
Throws:
  `IOException` - if socket error occur

### writeFloat

void writeFloat(float value) throws IOException
Write float binary value to buffer

Parameters:
  `value` - float value
Throws:
  `IOException` - if socket error occur

### writeBytes

void writeBytes(byte[] arr) throws IOException
Write byte array to buffer

Parameters:
  `arr` - bytes
Throws:
  `IOException` - if socket error occur

### writeBytesAtPos

void writeBytesAtPos(byte[] arr, int pos)
Write byte array to buffer at a specific position

Parameters:
  `arr` - bytes
  `pos` - position

### writeBytes

void writeBytes(byte[] arr, int off, int len) throws IOException
Write byte array to buf. If buf is full, flush socket.

Parameters:
  `arr` - byte array
  `off` - offset
  `len` - byte length to write
Throws:
  `IOException` - if socket error occur

### writeLength

void writeLength(long length) throws IOException
Write field length into buf, flush socket if needed.

Parameters:
  `length` - field length
Throws:
  `IOException` - if socket error occur.

### writeAscii

void writeAscii(String str) throws IOException
Write ascii string to buffer

Parameters:
  `str` - string
Throws:
  `IOException` - if socket error occurs

### writeString

void writeString(String str) throws IOException
Write utf8 string to buffer

Parameters:
  `str` - string
Throws:
  `IOException` - if socket error occurs

### writeStringEscaped

void writeStringEscaped(String str, boolean noBackslashEscapes) throws IOException
Write string to socket.

Parameters:
  `str` - string
  `noBackslashEscapes` - escape method
Throws:
  `IOException` - if socket error occur

### writeBytesEscaped

void writeBytesEscaped(byte[] bytes, int len, boolean noBackslashEscapes) throws IOException
Write escape bytes to socket.

Parameters:
  `bytes` - bytes
  `len` - len to write
  `noBackslashEscapes` - escape method
Throws:
  `IOException` - if socket error occur

### writeEmptyPacket

void writeEmptyPacket() throws IOException
Send empty packet.

Throws:
  `IOException` - if socket error occur.

### flush

void flush() throws IOException
Send packet to socket.

Throws:
  `IOException` - if socket error occur.

### flushPipeline

void flushPipeline() throws IOException
Send packet to buffered outputstream without flushing

Throws:
  `IOException` - if socket error occur.

### throwMaxAllowedLength

boolean throwMaxAllowedLength(int length)
is length > to max allowed length

Parameters:
  `length` - command length
Returns:
  true if too big

### throwMaxAllowedLengthOr16M

boolean throwMaxAllowedLengthOr16M(int length)
is length > to max allowed length or 16M if unknown

Parameters:
  `length` - command length
Returns:
  true if too big

### getCmdLength

long getCmdLength()
Get current command length

Returns:
  command length

### permitTrace

void permitTrace(boolean permitTrace)
Indicate if logging trace are permitted

Parameters:
  `permitTrace` - permits trace to be logged

### setServerThreadId

void setServerThreadId(Long serverThreadId, HostAddress hostAddress)
Set server thread id.

Parameters:
  `serverThreadId` - current server thread id.
  `hostAddress` - host information

### mark

void mark()
mark position

### isMarked

boolean isMarked()
has some position been marked

Returns:
  is marked

### hasFlushed

boolean hasFlushed()
Current command has flushed packet to socket

Returns:
  indicate if some packet have been flushed

### flushBufferStopAtMark

void flushBufferStopAtMark() throws IOException
Flush to last mark.

Throws:
  `IOException` - if flush fail.

### bufIsDataAfterMark

boolean bufIsDataAfterMark()
Buffer has data after marked position

Returns:
  indicate if there is data after marked position

### resetMark

byte[] resetMark()
Reset mark flag and send bytes after mark flag.

Returns:
  bytes after mark flag

### initPacket

void initPacket()
reset sequences and position for sending a new packet

### close

void close() throws IOException
Close socket stream

Throws:
  `IOException` - if any error occurs

### getSequence

byte getSequence()
Get current sequence object

Returns:
  current sequence