Skip to content

Commit

Permalink
add captcha notification
Browse files Browse the repository at this point in the history
- pull request from tonsense (pyload#10)
- updated to thrift 0.9.3
- synchronized access to thrift client
  • Loading branch information
t-h-e committed Nov 11, 2016
1 parent 5fc04e7 commit 806fd17
Show file tree
Hide file tree
Showing 96 changed files with 78,711 additions and 63,067 deletions.
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,5 +97,7 @@

<activity android:name=".RemoteSettings" android:label="@string/remotesettings_activity"/>

<service android:name=".service.CheckCaptchaService" />

</application>
</manifest>
56 changes: 56 additions & 0 deletions app/src/main/java/org/apache/thrift/AsyncProcessFunction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.thrift;

import org.apache.thrift.async.AsyncMethodCallback;
import org.apache.thrift.protocol.TMessage;
import org.apache.thrift.protocol.TMessageType;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.server.AbstractNonblockingServer;

public abstract class AsyncProcessFunction<I, T, R> {
final String methodName;

public AsyncProcessFunction(String methodName) {
this.methodName = methodName;
}

protected abstract boolean isOneway();

public abstract void start(I iface, T args, AsyncMethodCallback<R> resultHandler) throws TException;

public abstract T getEmptyArgsInstance();

public abstract AsyncMethodCallback getResultHandler(final AbstractNonblockingServer.AsyncFrameBuffer fb, int seqid);

public String getMethodName() {
return methodName;
}

public void sendResponse(final AbstractNonblockingServer.AsyncFrameBuffer fb, final TBase result, final byte type, final int seqid) throws TException {
TProtocol oprot = fb.getOutputProtocol();

oprot.writeMessageBegin(new TMessage(getMethodName(), type, seqid));
result.write(oprot);
oprot.writeMessageEnd();
oprot.getTransport().flush();

fb.responseReady();
}
}
63 changes: 63 additions & 0 deletions app/src/main/java/org/apache/thrift/EncodingUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,67 @@ public static final int decodeBigEndian(final byte[] buf, int offset) {
| ((buf[offset + 2] & 0xff) << 8) | ((buf[offset + 3] & 0xff));
}

/**
* Bitfield utilities.
* Returns true if the bit at position is set in v.
*/
public static final boolean testBit(byte v, int position) {
return testBit((int)v, position);
}

public static final boolean testBit(short v, int position) {
return testBit((int)v, position);
}

public static final boolean testBit(int v, int position) {
return (v & (1 << position)) != 0;
}

public static final boolean testBit(long v, int position) {
return (v & (1L << position)) != 0L;
}

/**
* Returns v, with the bit at position set to zero.
*/
public static final byte clearBit(byte v, int position) {
return (byte)clearBit((int)v, position);
}

public static final short clearBit(short v, int position) {
return (short)clearBit((int)v, position);
}

public static final int clearBit(int v, int position) {
return v & ~(1 << position);
}

public static final long clearBit(long v, int position) {
return v & ~(1L << position);
}

/**
* Returns v, with the bit at position set to 1 or 0 depending on value.
*/
public static final byte setBit(byte v, int position, boolean value) {
return (byte)setBit((int)v, position, value);
}

public static final short setBit(short v, int position, boolean value) {
return (short)setBit((int)v, position, value);
}

public static final int setBit(int v, int position, boolean value) {
if(value)
return v | (1 << position);
else
return clearBit(v, position);
}

public static final long setBit(long v, int position, boolean value) {
if(value)
return v | (1L << position);
else
return clearBit(v, position);
}
}
121 changes: 121 additions & 0 deletions app/src/main/java/org/apache/thrift/Option.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package org.apache.thrift;

/**
* Implementation of the Option type pattern
*/
public abstract class Option<T> {

/**
* Whether the Option is defined or not
* @return
* true if the Option is defined (of type Some)
* false if the Option is not defined (of type None)
*/
public abstract boolean isDefined();

/**
* Get the value of the Option (if it is defined)
* @return the value
* @throws IllegalStateException if called on a None
*/
public abstract T get();

/**
* Get the contained value (if defined) or else return a default value
* @param other what to return if the value is not defined (a None)
* @return either the value, or other if the value is not defined
*/
public T or(T other) {
if (isDefined()) {
return get();
} else {
return other;
}
}
/**
* The None type, representing an absent value (instead of "null")
*/
public static class None<T> extends Option<T> {
public boolean isDefined() {
return false;
}

public T get() {
throw new IllegalStateException("Cannot call get() on None");
}

public String toString() {
return "None";
}
}

/**
* The Some type, representing an existence of some value
* @param <T> The type of value
*/
public static class Some<T> extends Option<T> {
private final T value;
public Some(T value) {
this.value = value;
}

public boolean isDefined() {
return true;
}

public T get() {
return value;
}

public String toString() {
return "Some("+value.toString()+")";
}
}

/**
* Wraps value in an Option type, depending on whether or not value is null
* @param value
* @param <T> type of value
* @return Some(value) if value is not null, None if value is null
*/
public static <T> Option<T> fromNullable(T value) {
if (value != null) {
return new Some<T>(value);
} else {
return new None<T>();
}
}

/**
* Wrap value in a Some type (NB! value must not be null!)
* @param value
* @param <T> type of value
* @return a new Some(value)
*/
public static <T> Some<T> some(T value) {
return new Some<T>(value);
}

public static <T> None<T> none() {
return new None<T>();
}
}
38 changes: 30 additions & 8 deletions app/src/main/java/org/apache/thrift/ProcessFunction.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@
import org.apache.thrift.protocol.TMessageType;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.protocol.TProtocolException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class ProcessFunction<I, T extends TBase> {
private final String methodName;

private static final Logger LOGGER = LoggerFactory.getLogger(ProcessFunction.class.getName());

public ProcessFunction(String methodName) {
this.methodName = methodName;
}
Expand All @@ -29,18 +33,36 @@ public final void process(int seqid, TProtocol iprot, TProtocol oprot, I iface)
return;
}
iprot.readMessageEnd();
TBase result = getResult(iface, args);
oprot.writeMessageBegin(new TMessage(getMethodName(), TMessageType.REPLY, seqid));
result.write(oprot);
oprot.writeMessageEnd();
oprot.getTransport().flush();
TBase result = null;

try {
result = getResult(iface, args);
} catch(TException tex) {
LOGGER.error("Internal error processing " + getMethodName(), tex);
TApplicationException x = new TApplicationException(TApplicationException.INTERNAL_ERROR,
"Internal error processing " + getMethodName());
oprot.writeMessageBegin(new TMessage(getMethodName(), TMessageType.EXCEPTION, seqid));
x.write(oprot);
oprot.writeMessageEnd();
oprot.getTransport().flush();
return;
}

if(!isOneway()) {
oprot.writeMessageBegin(new TMessage(getMethodName(), TMessageType.REPLY, seqid));
result.write(oprot);
oprot.writeMessageEnd();
oprot.getTransport().flush();
}
}

protected abstract TBase getResult(I iface, T args) throws TException;
protected abstract boolean isOneway();

public abstract TBase getResult(I iface, T args) throws TException;

protected abstract T getEmptyArgsInstance();
public abstract T getEmptyArgsInstance();

public String getMethodName() {
return methodName;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ public class TApplicationException extends TException {
public static final int MISSING_RESULT = 5;
public static final int INTERNAL_ERROR = 6;
public static final int PROTOCOL_ERROR = 7;
public static final int INVALID_TRANSFORM = 8;
public static final int INVALID_PROTOCOL = 9;
public static final int UNSUPPORTED_CLIENT_TYPE = 10;

protected int type_ = UNKNOWN;

Expand Down
35 changes: 35 additions & 0 deletions app/src/main/java/org/apache/thrift/TAsyncProcessor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.thrift;

import org.apache.thrift.protocol.*;

import org.apache.thrift.server.AbstractNonblockingServer.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Collections;
import java.util.Map;

public interface TAsyncProcessor {
/**
* Implementations must call fb.responseReady() once processing is complete
*/
public boolean process(final AsyncFrameBuffer fb) throws TException;
}
Loading

0 comments on commit 806fd17

Please sign in to comment.