Skip to content

Commit

Permalink
add RTMPAcknowledgementMessage,
Browse files Browse the repository at this point in the history
add RTMPAbortMessage
  • Loading branch information
shogo4405 committed Dec 5, 2016
1 parent 24c2f41 commit b86f943
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 25 deletions.
4 changes: 2 additions & 2 deletions app/src/main/java/com/haishinkit/net/Socket.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ private void doOutput() {
outputQueue.remove(buffer);
} catch (IOException e) {
//IOUtils.closeQuietly(socket);
Log.e(getClass().getName() + "#doOutput", e.toString());
Log.e(getClass().getName() + "#doOutput()", e.toString());
}
}
}
Expand All @@ -108,7 +108,7 @@ public void run() {
doInput();
}
} catch (Exception e) {
Log.e(getClass().getName() + "#doOutput", e.toString());
Log.e(getClass().getName() + "#doConnection", e.toString());
close(true);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.haishinkit.rtmp.messages;

import com.haishinkit.rtmp.RTMPConnection;
import com.haishinkit.rtmp.RTMPSocket;

import java.nio.ByteBuffer;

public final class RTMPAbortMessage extends RTMPMessage {
private static final int CAPACITY = 4;

private int discarded = 0;

public RTMPAbortMessage() {
super(Type.ABORT);
}

public final int getDiscarded() {
return discarded;
}

public final RTMPAbortMessage setDiscarded(final int discarded) {
this.discarded = discarded;
return this;
}

@Override
public ByteBuffer encode(final RTMPSocket socket) {
if (socket == null) {
throw new IllegalArgumentException();
}
ByteBuffer buffer = ByteBuffer.allocate(CAPACITY);
buffer.putInt(getDiscarded());
return buffer;
}

@Override
public RTMPMessage decode(final ByteBuffer buffer) {
if (buffer == null) {
throw new IllegalArgumentException();
}
return setDiscarded(buffer.getInt());
}

@Override
public RTMPMessage execute(final RTMPConnection connection) {
if (connection == null) {
throw new IllegalArgumentException();
}
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.haishinkit.rtmp.messages;

import com.haishinkit.rtmp.RTMPConnection;
import com.haishinkit.rtmp.RTMPSocket;
import java.nio.ByteBuffer;

/**
* 5.4.3 Acknowledgement (3)
*/
public final class RTMPAcknowledgementMessage extends RTMPMessage {
private static final int CAPACITY = 4;

private byte[] sequence = null;

public RTMPAcknowledgementMessage() {
super(Type.ACK);
sequence = new byte[CAPACITY];
}

public final byte[] getSequence() {
return sequence;
}

public final RTMPAcknowledgementMessage setSequence(final byte[] sequence) {
this.sequence = sequence;
return this;
}

@Override
public ByteBuffer encode(final RTMPSocket socket) {
if (socket == null) {
throw new IllegalArgumentException();
}
ByteBuffer buffer = ByteBuffer.allocate(CAPACITY);
buffer.put(sequence);
return buffer;
}

@Override
public RTMPMessage decode(final ByteBuffer buffer) {
if (buffer == null) {
throw new IllegalArgumentException();
}
buffer.get(getSequence());
return this;
}

@Override
public RTMPMessage execute(final RTMPConnection connection) {
if (connection == null) {
throw new IllegalArgumentException();
}
return this;
}
}
41 changes: 22 additions & 19 deletions app/src/main/java/com/haishinkit/rtmp/messages/RTMPMessage.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.haishinkit.rtmp.messages;

import com.haishinkit.lang.IRawValue;
import com.haishinkit.util.Log;
import com.haishinkit.rtmp.RTMPConnection;
import com.haishinkit.rtmp.RTMPObjectEncoding;
import com.haishinkit.rtmp.RTMPSocket;
Expand All @@ -13,22 +12,22 @@
public class RTMPMessage {

public enum Type implements IRawValue<Byte> {
CHUNK_SIZE((byte) 1),
ABORT((byte) 2),
ACK((byte) 3),
USER((byte) 4),
WINDOW_ACK((byte) 5),
BANDWIDTH((byte) 6),
AUDIO((byte) 8),
VIDEO((byte) 9),
AMF3_DATA((byte) 15),
AMF3_SHARED((byte) 16),
AMF3_COMMAND((byte) 17),
AMF0_DATA((byte) 18),
AMF0_SHARED((byte) 19),
AMF0_COMMAND((byte) 20),
AGGREGATE((byte) 22),
UNKNOWN((byte) 255);
CHUNK_SIZE((byte) 0x01),
ABORT((byte) 0x02),
ACK((byte) 0x03),
USER((byte) 0x04),
WINDOW_ACK((byte) 0x05),
BANDWIDTH((byte) 0x06),
AUDIO((byte) 0x08),
VIDEO((byte) 0x09),
AMF3_DATA((byte) 0x0F),
AMF3_SHARED((byte) 0x10),
AMF3_COMMAND((byte) 0x11),
AMF0_DATA((byte) 0x12),
AMF0_SHARED((byte) 0x13),
AMF0_COMMAND((byte) 0x14),
AGGREGATE((byte) 0x16),
UNKNOWN((byte) 0xFF);

private final byte rawValue;

Expand All @@ -41,10 +40,14 @@ public Byte rawValue() {
}
}

public static RTMPMessage create(final byte value) {
public final static RTMPMessage create(final byte value) {
switch (value) {
case 0x01:
return new RTMPSetChunkSizeMessage();
case 0x02:
return new RTMPAbortMessage();
case 0x03:
return new RTMPAcknowledgementMessage();
case 0x04:
return new RTMPUserControlMessage();
case 0x05:
Expand All @@ -57,7 +60,7 @@ public static RTMPMessage create(final byte value) {
return new RTMPVideoMessage();
case 0x12:
return new RTMPDataMessage(RTMPObjectEncoding.AMF0);
case 20:
case 0x14:
return new RTMPCommandMessage(RTMPObjectEncoding.AMF0);
default:
return new RTMPMessage(Type.UNKNOWN);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ public enum Event implements IRawValue<Short> {
STREAM_DRY((short) 0x02),
SET_BUFFER((short) 0x03),
RECORDED((short) 0x04),
PING((short) 0x05),
PONG((short) 0x06),
PING((short) 0x06),
PONG((short) 0x07),
BUFFER_EMPTY((short) 0x1F),
BUFFER_FULL((short) 0x20),
UNKNOWN((short) 0xFF);
Expand All @@ -37,9 +37,9 @@ public static Event rawValue(final short rawValue) {
return SET_BUFFER;
case 0x04:
return RECORDED;
case 0x05:
return PING;
case 0x06:
return PING;
case 0x07:
return PONG;
case 0x1F:
return BUFFER_EMPTY;
Expand Down

0 comments on commit b86f943

Please sign in to comment.