diff options
Diffstat (limited to 'bindings/java/java.i')
-rw-r--r-- | bindings/java/java.i | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/bindings/java/java.i b/bindings/java/java.i new file mode 100644 index 0000000..da617d7 --- /dev/null +++ b/bindings/java/java.i @@ -0,0 +1,93 @@ +/* File : java.i +* http://www.swig.org/Doc1.3/Java.html +*/ + +// http://www.swig.org/Doc1.3/Java.html#enumerations +%include "enums.swg" +%javaconst(1); + + +//================== Mapping void* (Java to C) as ByteBuffer +%typemap(jni) void * "jbyteArray" +%typemap(jtype) void * "java.nio.ByteBuffer" +%typemap(jstype) void * "java.nio.ByteBuffer" +%typemap(javain) void * "$javainput" +%typemap(javaout) void * { return $jnicall; } + +// (From Java to C) +%typemap(in) void * %{ + $1 = jenv->GetDirectBufferAddress($input); +%} + +// (From C to Java) +//%typemap(out) void * %{ +// $result = $1; +//%} +%typemap(javadirectorin) void * "$jniinput" +//================== + + +%typemap(javacode) SipMessage %{ + public byte[] getSipContent() { + final int clen = (int)this.getSipContentLength(); + if(clen>0){ + final java.nio.ByteBuffer buffer = java.nio.ByteBuffer.allocateDirect(clen); + final int read = (int)this.getSipContent(buffer, clen); + final byte[] bytes = new byte[read]; + buffer.get(bytes, 0, read); + return bytes; + } + return null; + } +%} + +%typemap(javacode) SipSession %{ + protected java.nio.ByteBuffer getByteBuffer(byte[] bytes) { + if(bytes != null){ + final java.nio.ByteBuffer byteBuffer = java.nio.ByteBuffer.allocateDirect(bytes.length); + byteBuffer.put(bytes); + return byteBuffer; + } + return null; + } +%} + +%typemap(javacode) PublicationSession %{ + public boolean Publish(byte[] bytes) { + if(bytes != null){ + final java.nio.ByteBuffer byteBuffer = this.getByteBuffer(bytes); + return this.publish(byteBuffer, bytes.length); + } + return false; + } +%} + +%typemap(javacode) XcapMessage %{ + public byte[] getXcapContent() { + final int clen = (int)this.getXcapContentLength(); + if(clen>0){ + final java.nio.ByteBuffer buffer = java.nio.ByteBuffer.allocateDirect(clen); + final int read = (int)this.getXcapContent(buffer, clen); + final byte[] bytes = new byte[read]; + buffer.get(bytes, 0, read); + return bytes; + } + return null; + } +%} + +%typemap(javacode) T140CallbackData %{ + public byte[] getData() { + final int size = (int)this.getSize(); + if(size > 0){ + final java.nio.ByteBuffer buffer = java.nio.ByteBuffer.allocateDirect(size); + final int read = (int)this.getData(buffer, size); + final byte[] bytes = new byte[read]; + buffer.get(bytes, 0, read); + return bytes; + } + return null; + } +%} + +%include ../_common/tinyWRAP.i
\ No newline at end of file |