mirror of
https://github.com/faye/websocket-driver-ruby.git
synced 2025-11-01 13:59:38 +00:00
Reformat the C and Java native extension modules.
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
package com.jcoglan.websocket;
|
||||
|
||||
import java.lang.Long;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.jruby.Ruby;
|
||||
import org.jruby.RubyClass;
|
||||
import org.jruby.RubyModule;
|
||||
@@ -15,41 +13,45 @@ import org.jruby.runtime.builtin.IRubyObject;
|
||||
import org.jruby.runtime.load.BasicLibraryService;
|
||||
|
||||
public class WebsocketMaskService implements BasicLibraryService {
|
||||
private Ruby runtime;
|
||||
private Ruby runtime;
|
||||
|
||||
public boolean basicLoad(Ruby runtime) throws IOException {
|
||||
this.runtime = runtime;
|
||||
RubyModule websocket = runtime.defineModule("WebSocket");
|
||||
public boolean basicLoad(Ruby runtime) throws IOException {
|
||||
this.runtime = runtime;
|
||||
|
||||
RubyClass webSocketMask = websocket.defineClassUnder("Mask", runtime.getObject(), new ObjectAllocator() {
|
||||
public IRubyObject allocate(Ruby runtime, RubyClass rubyClass) {
|
||||
return new WebsocketMask(runtime, rubyClass);
|
||||
}
|
||||
});
|
||||
RubyModule websocket = runtime.defineModule("WebSocket");
|
||||
RubyClass webSocketMask = websocket.defineClassUnder("Mask", runtime.getObject(), getAllocator());
|
||||
|
||||
webSocketMask.defineAnnotatedMethods(WebsocketMask.class);
|
||||
return true;
|
||||
}
|
||||
|
||||
public class WebsocketMask extends RubyObject {
|
||||
public WebsocketMask(final Ruby runtime, RubyClass rubyClass) {
|
||||
super(runtime, rubyClass);
|
||||
webSocketMask.defineAnnotatedMethods(WebsocketMask.class);
|
||||
return true;
|
||||
}
|
||||
|
||||
@JRubyMethod
|
||||
public IRubyObject mask(ThreadContext context, IRubyObject payload, IRubyObject mask) {
|
||||
if (mask.isNil()) return payload;
|
||||
|
||||
byte[] payload_a = ((RubyString)payload).getBytes();
|
||||
byte[] mask_a = ((RubyString)mask).getBytes();
|
||||
int i, n = payload_a.length;
|
||||
|
||||
if (n == 0) return payload;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
payload_a[i] ^= mask_a[i % 4];
|
||||
}
|
||||
return RubyString.newStringNoCopy(runtime, payload_a);
|
||||
ObjectAllocator getAllocator() {
|
||||
return new ObjectAllocator() {
|
||||
public IRubyObject allocate(Ruby runtime, RubyClass rubyClass) {
|
||||
return new WebsocketMask(runtime, rubyClass);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public class WebsocketMask extends RubyObject {
|
||||
public WebsocketMask(final Ruby runtime, RubyClass rubyClass) {
|
||||
super(runtime, rubyClass);
|
||||
}
|
||||
|
||||
@JRubyMethod
|
||||
public IRubyObject mask(ThreadContext context, IRubyObject payload, IRubyObject mask) {
|
||||
if (mask.isNil()) return payload;
|
||||
|
||||
byte[] payload_a = ((RubyString)payload).getBytes();
|
||||
byte[] mask_a = ((RubyString)mask).getBytes();
|
||||
int i, n = payload_a.length;
|
||||
|
||||
if (n == 0) return payload;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
payload_a[i] ^= mask_a[i % 4];
|
||||
}
|
||||
return RubyString.newStringNoCopy(runtime, payload_a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,41 +1,32 @@
|
||||
#include <ruby.h>
|
||||
|
||||
VALUE WebSocket = Qnil;
|
||||
VALUE WebSocketMask = Qnil;
|
||||
|
||||
void Init_websocket_mask();
|
||||
VALUE method_websocket_mask(VALUE self, VALUE payload, VALUE mask);
|
||||
|
||||
void
|
||||
Init_websocket_mask()
|
||||
VALUE method_websocket_mask(VALUE self, VALUE payload, VALUE mask)
|
||||
{
|
||||
WebSocket = rb_define_module("WebSocket");
|
||||
WebSocketMask = rb_define_module_under(WebSocket, "Mask");
|
||||
rb_define_singleton_method(WebSocketMask, "mask", method_websocket_mask, 2);
|
||||
char *payload_s, *mask_s, *unmasked_s;
|
||||
long i, n;
|
||||
VALUE unmasked;
|
||||
|
||||
if (mask == Qnil || RSTRING_LEN(mask) != 4) {
|
||||
return payload;
|
||||
}
|
||||
|
||||
payload_s = RSTRING_PTR(payload);
|
||||
mask_s = RSTRING_PTR(mask);
|
||||
n = RSTRING_LEN(payload);
|
||||
|
||||
unmasked = rb_str_new(0, n);
|
||||
unmasked_s = RSTRING_PTR(unmasked);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
unmasked_s[i] = payload_s[i] ^ mask_s[i % 4];
|
||||
}
|
||||
return unmasked;
|
||||
}
|
||||
|
||||
VALUE
|
||||
method_websocket_mask(VALUE self,
|
||||
VALUE payload,
|
||||
VALUE mask)
|
||||
void Init_websocket_mask()
|
||||
{
|
||||
char *payload_s, *mask_s, *unmasked_s;
|
||||
long i, n;
|
||||
VALUE unmasked;
|
||||
VALUE WebSocket = rb_define_module("WebSocket");
|
||||
VALUE Mask = rb_define_module_under(WebSocket, "Mask");
|
||||
|
||||
if (mask == Qnil || RSTRING_LEN(mask) != 4) {
|
||||
return payload;
|
||||
}
|
||||
|
||||
payload_s = RSTRING_PTR(payload);
|
||||
mask_s = RSTRING_PTR(mask);
|
||||
n = RSTRING_LEN(payload);
|
||||
|
||||
unmasked = rb_str_new(0, n);
|
||||
unmasked_s = RSTRING_PTR(unmasked);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
unmasked_s[i] = payload_s[i] ^ mask_s[i % 4];
|
||||
}
|
||||
return unmasked;
|
||||
rb_define_singleton_method(Mask, "mask", method_websocket_mask, 2);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,6 @@ Gem::Specification.new do |s|
|
||||
|
||||
s.add_development_dependency 'eventmachine'
|
||||
s.add_development_dependency 'permessage_deflate'
|
||||
s.add_development_dependency 'rake-compiler', '~> 0.8.0'
|
||||
s.add_development_dependency 'rake-compiler'
|
||||
s.add_development_dependency 'rspec'
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user