|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
package sun.nio.ch.sctp; |
|
|
|
import java.net.SocketAddress; |
|
import com.sun.nio.sctp.MessageInfo; |
|
import com.sun.nio.sctp.Association; |
|
|
|
|
|
|
|
*/ |
|
public class MessageInfoImpl extends MessageInfo { |
|
private final SocketAddress address; |
|
private final int bytes; /* 0 */ |
|
|
|
private Association association; |
|
private int assocId; |
|
private int streamNumber; |
|
private boolean complete = true; |
|
private boolean unordered; |
|
private long timeToLive; |
|
private int ppid; /* 0 */ |
|
|
|
public MessageInfoImpl(Association association, |
|
SocketAddress address, |
|
int streamNumber) { |
|
this.association = association; |
|
this.address = address; |
|
this.streamNumber = streamNumber; |
|
bytes = 0; |
|
} |
|
|
|
|
|
private MessageInfoImpl(int assocId, |
|
SocketAddress address, |
|
int bytes, |
|
int streamNumber, |
|
boolean complete, |
|
boolean unordered, |
|
int ppid) { |
|
this.assocId = assocId; |
|
this.address = address; |
|
this.bytes = bytes; |
|
this.streamNumber = streamNumber; |
|
this.complete = complete; |
|
this.unordered = unordered; |
|
this.ppid = ppid; |
|
} |
|
|
|
@Override |
|
public Association association() { |
|
return association; |
|
} |
|
|
|
|
|
|
|
|
|
*/ |
|
void setAssociation(Association association) { |
|
this.association = association; |
|
} |
|
|
|
int associationID() { |
|
return assocId; |
|
} |
|
|
|
@Override |
|
public SocketAddress address() { |
|
return address; |
|
} |
|
|
|
@Override |
|
public int bytes() { |
|
return bytes; |
|
} |
|
|
|
@Override |
|
public int streamNumber() { |
|
return streamNumber; |
|
} |
|
|
|
@Override |
|
public MessageInfo streamNumber(int streamNumber) { |
|
if (streamNumber < 0 || streamNumber > 65536) |
|
throw new IllegalArgumentException("Invalid stream number"); |
|
|
|
this.streamNumber = streamNumber; |
|
return this; |
|
} |
|
|
|
@Override |
|
public int payloadProtocolID() { |
|
return ppid; |
|
} |
|
|
|
@Override |
|
public MessageInfo payloadProtocolID(int ppid) { |
|
this.ppid = ppid; |
|
return this; |
|
} |
|
|
|
@Override |
|
public boolean isComplete() { |
|
return complete; |
|
} |
|
|
|
@Override |
|
public MessageInfo complete(boolean complete) { |
|
this.complete = complete; |
|
return this; |
|
} |
|
|
|
@Override |
|
public boolean isUnordered() { |
|
return unordered; |
|
} |
|
|
|
@Override |
|
public MessageInfo unordered(boolean unordered) { |
|
this.unordered = unordered; |
|
return this; |
|
} |
|
|
|
@Override |
|
public long timeToLive() { |
|
return timeToLive; |
|
} |
|
|
|
@Override |
|
public MessageInfo timeToLive(long millis) { |
|
timeToLive = millis; |
|
return this; |
|
} |
|
|
|
@Override |
|
public String toString() { |
|
StringBuilder sb = new StringBuilder(super.toString()); |
|
sb.append( "[Address: ").append(address) |
|
.append(", Association: ").append(association) |
|
.append(", Assoc ID: ").append(assocId) |
|
.append(", Bytes: ").append(bytes) |
|
.append(", Stream Number: ").append(streamNumber) |
|
.append(", Complete: ").append(complete) |
|
.append(", isUnordered: ").append(unordered) |
|
.append("]"); |
|
return sb.toString(); |
|
} |
|
} |