Search in sources :

Example 21 with Looper

use of android.os.Looper in project Rocket.Chat.Android by RocketChat.

the class RealmMessageRepository method save.

@Override
public Single<Boolean> save(Message message) {
    return Single.defer(() -> {
        final Realm realm = RealmStore.getRealm(hostname);
        final Looper looper = Looper.myLooper();
        if (realm == null || looper == null) {
            return Single.just(false);
        }
        RealmMessage realmMessage = realm.where(RealmMessage.class).equalTo(RealmMessage.ID, message.getId()).findFirst();
        if (realmMessage == null) {
            realmMessage = new RealmMessage();
        } else {
            realmMessage = realm.copyFromRealm(realmMessage);
        }
        realmMessage.setId(message.getId());
        realmMessage.setSyncState(message.getSyncState());
        realmMessage.setTimestamp(message.getTimestamp());
        realmMessage.setRoomId(message.getRoomId());
        realmMessage.setMessage(message.getMessage());
        realmMessage.setEditedAt(message.getEditedAt());
        RealmUser realmUser = realmMessage.getUser();
        if (realmUser == null) {
            realmUser = realm.where(RealmUser.class).equalTo(RealmUser.ID, message.getUser().getId()).findFirst();
        }
        realmMessage.setUser(realmUser);
        realm.beginTransaction();
        return RxJavaInterop.toV2Flowable(realm.copyToRealmOrUpdate(realmMessage).asObservable()).filter(it -> it.isLoaded() && it.isValid()).firstElement().doOnSuccess(it -> realm.commitTransaction()).doOnError(throwable -> realm.cancelTransaction()).doOnEvent((realmObject, throwable) -> close(realm, looper)).toSingle().map(realmObject -> true);
    });
}
Also used : User(chat.rocket.core.models.User) MessageRepository(chat.rocket.core.repositories.MessageRepository) Realm(io.realm.Realm) RealmUser(chat.rocket.persistence.realm.models.ddp.RealmUser) Optional(com.fernandocejas.arrow.optional.Optional) RealmResults(io.realm.RealmResults) RxJavaInterop(hu.akarnokd.rxjava.interop.RxJavaInterop) Single(io.reactivex.Single) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) RealmMessage(chat.rocket.persistence.realm.models.ddp.RealmMessage) ArrayList(java.util.ArrayList) Message(chat.rocket.core.models.Message) List(java.util.List) Flowable(io.reactivex.Flowable) Pair(android.support.v4.util.Pair) Sort(io.realm.Sort) Room(chat.rocket.core.models.Room) Looper(android.os.Looper) RealmStore(chat.rocket.persistence.realm.RealmStore) Looper(android.os.Looper) RealmUser(chat.rocket.persistence.realm.models.ddp.RealmUser) Realm(io.realm.Realm) RealmMessage(chat.rocket.persistence.realm.models.ddp.RealmMessage)

Example 22 with Looper

use of android.os.Looper in project Rocket.Chat.Android by RocketChat.

the class RealmRoomRepository method setHistoryState.

@Override
public Single<Boolean> setHistoryState(RoomHistoryState roomHistoryState) {
    return Single.defer(() -> {
        final Realm realm = RealmStore.getRealm(hostname);
        final Looper looper = Looper.myLooper();
        if (realm == null || looper == null) {
            return Single.just(false);
        }
        LoadMessageProcedure loadMessage = new LoadMessageProcedure();
        loadMessage.setRoomId(roomHistoryState.getRoomId());
        loadMessage.setSyncState(roomHistoryState.getSyncState());
        loadMessage.setCount(roomHistoryState.getCount());
        loadMessage.setReset(roomHistoryState.isReset());
        loadMessage.setHasNext(!roomHistoryState.isComplete());
        loadMessage.setTimestamp(roomHistoryState.getTimestamp());
        realm.beginTransaction();
        return RxJavaInterop.toV2Flowable(realm.copyToRealmOrUpdate(loadMessage).asObservable()).filter(realmObject -> realmObject.isLoaded() && realmObject.isValid()).firstElement().doOnSuccess(it -> realm.commitTransaction()).doOnError(throwable -> realm.cancelTransaction()).doOnEvent((realmObject, throwable) -> close(realm, looper)).toSingle().map(realmObject -> true);
    });
}
Also used : Realm(io.realm.Realm) Optional(com.fernandocejas.arrow.optional.Optional) RealmResults(io.realm.RealmResults) RoomRepository(chat.rocket.core.repositories.RoomRepository) RxJavaInterop(hu.akarnokd.rxjava.interop.RxJavaInterop) RoomHistoryState(chat.rocket.core.models.RoomHistoryState) Single(io.reactivex.Single) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) LoadMessageProcedure(chat.rocket.persistence.realm.models.internal.LoadMessageProcedure) ArrayList(java.util.ArrayList) List(java.util.List) Flowable(io.reactivex.Flowable) Pair(android.support.v4.util.Pair) Sort(io.realm.Sort) Room(chat.rocket.core.models.Room) Looper(android.os.Looper) RealmRoom(chat.rocket.persistence.realm.models.ddp.RealmRoom) Case(io.realm.Case) SortDirection(chat.rocket.core.SortDirection) RealmStore(chat.rocket.persistence.realm.RealmStore) Looper(android.os.Looper) LoadMessageProcedure(chat.rocket.persistence.realm.models.internal.LoadMessageProcedure) Realm(io.realm.Realm)

Example 23 with Looper

use of android.os.Looper in project Rocket.Chat.Android by RocketChat.

the class RealmSessionRepository method save.

@Override
public Single<Boolean> save(Session session) {
    return Single.defer(() -> {
        final Realm realm = RealmStore.getRealm(hostname);
        final Looper looper = Looper.myLooper();
        if (realm == null || looper == null) {
            return Single.just(false);
        }
        RealmSession realmSession = realm.where(RealmSession.class).equalTo(RealmSession.ID, session.getSessionId()).findFirst();
        if (realmSession == null) {
            realmSession = new RealmSession();
        } else {
            realmSession = realm.copyFromRealm(realmSession);
        }
        realmSession.setSessionId(session.getSessionId());
        realmSession.setToken(session.getToken());
        realmSession.setTokenVerified(session.isTokenVerified());
        realmSession.setError(session.getError());
        realm.beginTransaction();
        return RxJavaInterop.toV2Flowable(realm.copyToRealmOrUpdate(realmSession).asObservable()).filter(it -> it != null && it.isLoaded() && it.isValid()).firstElement().doOnSuccess(it -> realm.commitTransaction()).doOnError(throwable -> realm.cancelTransaction()).doOnEvent((realmObject, throwable) -> close(realm, looper)).toSingle().map(realmObject -> true);
    });
}
Also used : Realm(io.realm.Realm) Flowable(io.reactivex.Flowable) SessionRepository(chat.rocket.core.repositories.SessionRepository) RealmSession(chat.rocket.persistence.realm.models.internal.RealmSession) Optional(com.fernandocejas.arrow.optional.Optional) Pair(android.support.v4.util.Pair) Looper(android.os.Looper) Session(chat.rocket.core.models.Session) RxJavaInterop(hu.akarnokd.rxjava.interop.RxJavaInterop) Single(io.reactivex.Single) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) RealmStore(chat.rocket.persistence.realm.RealmStore) Looper(android.os.Looper) RealmSession(chat.rocket.persistence.realm.models.internal.RealmSession) Realm(io.realm.Realm)

Example 24 with Looper

use of android.os.Looper in project android_frameworks_base by ResurrectionRemix.

the class VrManagerService method onBootPhase.

@Override
public void onBootPhase(int phase) {
    if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
        synchronized (mLock) {
            Looper looper = Looper.getMainLooper();
            Handler handler = new Handler(looper);
            ArrayList<EnabledComponentChangeListener> listeners = new ArrayList<>();
            listeners.add(this);
            mComponentObserver = EnabledComponentsObserver.build(mContext, handler, Settings.Secure.ENABLED_VR_LISTENERS, looper, android.Manifest.permission.BIND_VR_LISTENER_SERVICE, VrListenerService.SERVICE_INTERFACE, mLock, listeners);
            mComponentObserver.rebuildAll();
        }
    } else if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) {
        synchronized (mLock) {
            mVrModeAllowed = true;
        }
    }
}
Also used : Looper(android.os.Looper) EnabledComponentChangeListener(com.android.server.vr.EnabledComponentsObserver.EnabledComponentChangeListener) ArrayList(java.util.ArrayList) Handler(android.os.Handler)

Example 25 with Looper

use of android.os.Looper in project android_frameworks_base by ResurrectionRemix.

the class NetworkStatsObserversTest method setUp.

@Override
public void setUp() throws Exception {
    super.setUp();
    MockitoAnnotations.initMocks(this);
    mObserverHandlerThread = new IdleableHandlerThread("HandlerThread");
    mObserverHandlerThread.start();
    final Looper observerLooper = mObserverHandlerThread.getLooper();
    mStatsObservers = new NetworkStatsObservers() {

        @Override
        protected Looper getHandlerLooperLocked() {
            return observerLooper;
        }
    };
    mCv = new ConditionVariable();
    mHandler = new LatchedHandler(Looper.getMainLooper(), mCv);
    mMessenger = new Messenger(mHandler);
    mActiveIfaces = new ArrayMap<>();
    mActiveUidIfaces = new ArrayMap<>();
}
Also used : ConditionVariable(android.os.ConditionVariable) Looper(android.os.Looper) LatchedHandler(com.android.server.net.NetworkStatsServiceTest.LatchedHandler) Messenger(android.os.Messenger) IdleableHandlerThread(com.android.server.net.NetworkStatsServiceTest.IdleableHandlerThread)

Aggregations

Looper (android.os.Looper)118 Handler (android.os.Handler)45 RemoteException (android.os.RemoteException)15 HandlerThread (android.os.HandlerThread)13 ArrayList (java.util.ArrayList)13 Message (android.os.Message)12 Test (org.junit.Test)12 Messenger (android.os.Messenger)9 Binder (android.os.Binder)6 DataUsageRequest (android.net.DataUsageRequest)5 NetworkTemplate (android.net.NetworkTemplate)5 Realm (io.realm.Realm)5 ConditionVariable (android.os.ConditionVariable)4 Pair (android.support.v4.util.Pair)4 TextUtils (android.text.TextUtils)4 RealmStore (chat.rocket.persistence.realm.RealmStore)4 EnabledComponentChangeListener (com.android.server.vr.EnabledComponentsObserver.EnabledComponentChangeListener)4 Optional (com.fernandocejas.arrow.optional.Optional)4 RxJavaInterop (hu.akarnokd.rxjava.interop.RxJavaInterop)4 Flowable (io.reactivex.Flowable)4