Return-Path: X-Original-To: apmail-curator-commits-archive@minotaur.apache.org Delivered-To: apmail-curator-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E7C8711C59 for ; Sat, 7 Jun 2014 18:19:00 +0000 (UTC) Received: (qmail 32194 invoked by uid 500); 7 Jun 2014 18:19:00 -0000 Delivered-To: apmail-curator-commits-archive@curator.apache.org Received: (qmail 32106 invoked by uid 500); 7 Jun 2014 18:19:00 -0000 Mailing-List: contact commits-help@curator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@curator.apache.org Delivered-To: mailing list commits@curator.apache.org Received: (qmail 31947 invoked by uid 99); 7 Jun 2014 18:19:00 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 07 Jun 2014 18:19:00 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 6F58A8BBE40; Sat, 7 Jun 2014 18:19:00 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: randgalt@apache.org To: commits@curator.apache.org Date: Sat, 07 Jun 2014 18:19:10 -0000 Message-Id: <6754f4960e424465b4b1cd48bb7bce88@git.apache.org> In-Reply-To: <29937670c88a49f291fad4a4fae0fddd@git.apache.org> References: <29937670c88a49f291fad4a4fae0fddd@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [12/50] [abbrv] refactoring http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/RpcCreateMode.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/RpcCreateMode.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/RpcCreateMode.java deleted file mode 100644 index 3ef6b45..0000000 --- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/RpcCreateMode.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * 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.curator.x.rpc.idl.projection; - -import com.facebook.swift.codec.ThriftEnum; - -@ThriftEnum("CreateMode") -public enum RpcCreateMode -{ - PERSISTENT, - PERSISTENT_SEQUENTIAL, - EPHEMERAL, - EPHEMERAL_SEQUENTIAL -} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/SetDataSpec.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/SetDataSpec.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/SetDataSpec.java deleted file mode 100644 index 195e620..0000000 --- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/SetDataSpec.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * 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.curator.x.rpc.idl.projection; - -import com.facebook.swift.codec.ThriftField; -import com.facebook.swift.codec.ThriftStruct; - -@ThriftStruct -public class SetDataSpec -{ - @ThriftField(1) - public String path; - - @ThriftField(2) - public boolean watched; - - @ThriftField(3) - public String asyncContext; - - @ThriftField(4) - public boolean compressed; - - @ThriftField(5) - public Version version; - - @ThriftField(6) - public byte[] data; - - public SetDataSpec() - { - } - - public SetDataSpec(String path, boolean watched, String asyncContext, boolean compressed, Version version, byte[] data) - { - this.path = path; - this.watched = watched; - this.asyncContext = asyncContext; - this.compressed = compressed; - this.version = version; - this.data = data; - } -} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/Version.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/Version.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/Version.java deleted file mode 100644 index 172704b..0000000 --- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/Version.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.apache.curator.x.rpc.idl.projection; - -import com.facebook.swift.codec.ThriftField; -import com.facebook.swift.codec.ThriftStruct; - -@ThriftStruct -public class Version -{ - @ThriftField(1) - public int version; - - public Version() - { - } - - public Version(int version) - { - this.version = version; - } -} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java new file mode 100644 index 0000000..7e9e9c1 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java @@ -0,0 +1,592 @@ + +/** + * 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.curator.x.rpc.idl.services; + +import com.facebook.swift.service.ThriftMethod; +import com.facebook.swift.service.ThriftService; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.api.*; +import org.apache.curator.framework.recipes.cache.ChildData; +import org.apache.curator.framework.recipes.cache.NodeCache; +import org.apache.curator.framework.recipes.cache.NodeCacheListener; +import org.apache.curator.framework.recipes.cache.PathChildrenCache; +import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent; +import org.apache.curator.framework.recipes.cache.PathChildrenCacheListener; +import org.apache.curator.framework.recipes.leader.LeaderLatch; +import org.apache.curator.framework.recipes.leader.LeaderLatchListener; +import org.apache.curator.framework.recipes.leader.Participant; +import org.apache.curator.framework.recipes.locks.InterProcessSemaphoreMutex; +import org.apache.curator.framework.recipes.locks.InterProcessSemaphoreV2; +import org.apache.curator.framework.recipes.locks.Lease; +import org.apache.curator.framework.recipes.nodes.PersistentEphemeralNode; +import org.apache.curator.framework.state.ConnectionState; +import org.apache.curator.framework.state.ConnectionStateListener; +import org.apache.curator.utils.ThreadUtils; +import org.apache.curator.x.rpc.connections.Closer; +import org.apache.curator.x.rpc.connections.ConnectionManager; +import org.apache.curator.x.rpc.connections.CuratorEntry; +import org.apache.curator.x.rpc.details.RpcBackgroundCallback; +import org.apache.curator.x.rpc.details.RpcWatcher; +import org.apache.curator.x.rpc.idl.structs.*; +import org.apache.zookeeper.CreateMode; +import org.apache.zookeeper.data.Stat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.IOException; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.TimeUnit; + +@ThriftService("CuratorService") +public class CuratorProjectionService +{ + private final Logger log = LoggerFactory.getLogger(getClass()); + private final ConnectionManager connectionManager; + + public CuratorProjectionService(ConnectionManager connectionManager) + { + this.connectionManager = connectionManager; + } + + @ThriftMethod + public CuratorProjection newCuratorProjection(String connectionName) + { + CuratorFramework client = connectionManager.newConnection(connectionName); + + String id = CuratorEntry.newId(); + client.start(); + connectionManager.add(id, client); + final CuratorProjection projection = new CuratorProjection(id); + + ConnectionStateListener listener = new ConnectionStateListener() + { + @Override + public void stateChanged(CuratorFramework client, ConnectionState newState) + { + addEvent(projection, new RpcCuratorEvent(newState)); + } + }; + client.getConnectionStateListenable().addListener(listener); + + return projection; + } + + @ThriftMethod(oneway = true) + public void closeCuratorProjection(CuratorProjection projection) + { + CuratorEntry entry = connectionManager.remove(projection.id); + if ( entry != null ) + { + entry.close(); + } + } + + @ThriftMethod(oneway = true) + public void pingCuratorProjection(CuratorProjection projection) + { + connectionManager.get(projection.id); + } + + @ThriftMethod + public OptionalPath createNode(CuratorProjection projection, CreateSpec spec) throws Exception + { + CuratorFramework client = getEntry(projection).getClient(); + + Object builder = client.create(); + if ( spec.creatingParentsIfNeeded ) + { + builder = castBuilder(builder, CreateBuilder.class).creatingParentsIfNeeded(); + } + if ( spec.compressed ) + { + builder = castBuilder(builder, Compressible.class).compressed(); + } + if ( spec.withProtection ) + { + builder = castBuilder(builder, CreateBuilder.class).withProtection(); + } + if ( spec.mode != null ) + { + builder = castBuilder(builder, CreateModable.class).withMode(CreateMode.valueOf(spec.mode.name())); + } + + if ( spec.asyncContext != null ) + { + BackgroundCallback backgroundCallback = new RpcBackgroundCallback(this, projection); + builder = castBuilder(builder, Backgroundable.class).inBackground(backgroundCallback, spec.asyncContext); + } + + Object path = castBuilder(builder, PathAndBytesable.class).forPath(spec.path, spec.data); + return new OptionalPath((path != null) ? String.valueOf(path) : null); + } + + @ThriftMethod + public void deleteNode(CuratorProjection projection, DeleteSpec spec) throws Exception + { + CuratorFramework client = getEntry(projection).getClient(); + + Object builder = client.delete(); + if ( spec.guaranteed ) + { + builder = castBuilder(builder, DeleteBuilder.class).guaranteed(); + } + if ( spec.version != null ) + { + builder = castBuilder(builder, Versionable.class).withVersion(spec.version.version); + } + + if ( spec.asyncContext != null ) + { + BackgroundCallback backgroundCallback = new RpcBackgroundCallback(this, projection); + builder = castBuilder(builder, Backgroundable.class).inBackground(backgroundCallback, spec.asyncContext); + } + + castBuilder(builder, Pathable.class).forPath(spec.path); + } + + @ThriftMethod + public byte[] getData(CuratorProjection projection, GetDataSpec spec) throws Exception + { + CuratorFramework client = getEntry(projection).getClient(); + + Object builder = client.getData(); + if ( spec.watched ) + { + builder = castBuilder(builder, Watchable.class).usingWatcher(new RpcWatcher(this, projection)); + } + + if ( spec.decompressed ) + { + builder = castBuilder(builder, Decompressible.class).decompressed(); + } + + if ( spec.asyncContext != null ) + { + BackgroundCallback backgroundCallback = new RpcBackgroundCallback(this, projection); + builder = castBuilder(builder, Backgroundable.class).inBackground(backgroundCallback); + } + + Stat stat = new Stat(); + builder = castBuilder(builder, Statable.class).storingStatIn(stat); + + return (byte[])castBuilder(builder, Pathable.class).forPath(spec.path); + } + + @ThriftMethod + public RpcStat setData(CuratorProjection projection, SetDataSpec spec) throws Exception + { + CuratorFramework client = getEntry(projection).getClient(); + + Object builder = client.setData(); + if ( spec.watched ) + { + builder = castBuilder(builder, Watchable.class).usingWatcher(new RpcWatcher(this, projection)); + } + if ( spec.version != null ) + { + builder = castBuilder(builder, Versionable.class).withVersion(spec.version.version); + } + + if ( spec.compressed ) + { + builder = castBuilder(builder, Compressible.class).compressed(); + } + + if ( spec.asyncContext != null ) + { + BackgroundCallback backgroundCallback = new RpcBackgroundCallback(this, projection); + builder = castBuilder(builder, Backgroundable.class).inBackground(backgroundCallback); + } + + Stat stat = (Stat)castBuilder(builder, PathAndBytesable.class).forPath(spec.path, spec.data); + return RpcCuratorEvent.toRpcStat(stat); + } + + @ThriftMethod + public OptionalRpcStat exists(CuratorProjection projection, ExistsSpec spec) throws Exception + { + CuratorFramework client = getEntry(projection).getClient(); + + Object builder = client.checkExists(); + if ( spec.watched ) + { + builder = castBuilder(builder, Watchable.class).usingWatcher(new RpcWatcher(this, projection)); + } + + if ( spec.asyncContext != null ) + { + BackgroundCallback backgroundCallback = new RpcBackgroundCallback(this, projection); + castBuilder(builder, Backgroundable.class).inBackground(backgroundCallback); + } + + Stat stat = (Stat)castBuilder(builder, Pathable.class).forPath(spec.path); + return new OptionalRpcStat((stat != null) ? RpcCuratorEvent.toRpcStat(stat) : null); + } + + @ThriftMethod + public OptionalChildrenList getChildren(CuratorProjection projection, GetChildrenSpec spec) throws Exception + { + CuratorFramework client = getEntry(projection).getClient(); + + Object builder = client.getChildren(); + if ( spec.watched ) + { + builder = castBuilder(builder, Watchable.class).usingWatcher(new RpcWatcher(this, projection)); + } + + if ( spec.asyncContext != null ) + { + BackgroundCallback backgroundCallback = new RpcBackgroundCallback(this, projection); + builder = castBuilder(builder, Backgroundable.class).inBackground(backgroundCallback); + } + + @SuppressWarnings("unchecked") + List children = (List)castBuilder(builder, Pathable.class).forPath(spec.path); + return new OptionalChildrenList(children); + } + + @ThriftMethod + public boolean closeGenericProjection(CuratorProjection curatorProjection, String id) throws Exception + { + CuratorEntry entry = getEntry(curatorProjection); + return entry.closeThing(id); + } + + @ThriftMethod + public LockProjection acquireLock(CuratorProjection projection, final String path, int maxWaitMs) throws Exception + { + CuratorEntry entry = getEntry(projection); + final InterProcessSemaphoreMutex lock = new InterProcessSemaphoreMutex(entry.getClient(), path); + if ( !lock.acquire(maxWaitMs, TimeUnit.MILLISECONDS) ) + { + return new LockProjection(); + } + + Closer closer = new Closer() + { + @Override + public void close() + { + if ( lock.isAcquiredInThisProcess() ) + { + try + { + lock.release(); + } + catch ( Exception e ) + { + log.error("Could not release left-over lock for path: " + path, e); + } + } + } + }; + String id = entry.addThing(lock, closer); + return new LockProjection(id); + } + + @ThriftMethod + public LeaderResult startLeaderSelector(final CuratorProjection projection, final String path, final String participantId, int waitForLeadershipMs) throws Exception + { + CuratorEntry entry = getEntry(projection); + + final LeaderLatch leaderLatch = new LeaderLatch(entry.getClient(), path, participantId); + leaderLatch.start(); + + Closer closer = new Closer() + { + @Override + public void close() + { + try + { + leaderLatch.close(); + } + catch ( IOException e ) + { + log.error("Could not close left-over leader latch for path: " + path, e); + } + } + }; + String id = entry.addThing(leaderLatch, closer); + + LeaderLatchListener listener = new LeaderLatchListener() + { + @Override + public void isLeader() + { + addEvent(projection, new RpcCuratorEvent(new LeaderEvent(path, participantId, true))); + } + + @Override + public void notLeader() + { + addEvent(projection, new RpcCuratorEvent(new LeaderEvent(path, participantId, false))); + } + }; + leaderLatch.addListener(listener); + + if ( waitForLeadershipMs > 0 ) + { + leaderLatch.await(waitForLeadershipMs, TimeUnit.MILLISECONDS); + } + + return new LeaderResult(new LeaderProjection(id), leaderLatch.hasLeadership()); + } + + @ThriftMethod + public List getLeaderParticipants(CuratorProjection projection, LeaderProjection leaderProjection) throws Exception + { + CuratorEntry entry = getEntry(projection); + + LeaderLatch leaderLatch = getThing(entry, leaderProjection.id, LeaderLatch.class); + Collection participants = leaderLatch.getParticipants(); + return Lists.transform(Lists.newArrayList(participants), new Function() + { + @Override + public RpcParticipant apply(Participant participant) + { + return new RpcParticipant(participant.getId(), participant.isLeader()); + } + }); + } + + @ThriftMethod + public boolean isLeader(CuratorProjection projection, LeaderProjection leaderProjection) throws Exception + { + CuratorEntry entry = getEntry(projection); + + LeaderLatch leaderLatch = getThing(entry, leaderProjection.id, LeaderLatch.class); + return leaderLatch.hasLeadership(); + } + + @ThriftMethod + public PathChildrenCacheProjection startPathChildrenCache(final CuratorProjection projection, final String path, boolean cacheData, boolean dataIsCompressed, PathChildrenCacheStartMode startMode) throws Exception + { + final CuratorEntry entry = getEntry(projection); + + final PathChildrenCache cache = new PathChildrenCache(entry.getClient(), path, cacheData, dataIsCompressed, ThreadUtils.newThreadFactory("PathChildrenCacheResource")); + cache.start(PathChildrenCache.StartMode.valueOf(startMode.name())); + + Closer closer = new Closer() + { + @Override + public void close() + { + try + { + cache.close(); + } + catch ( IOException e ) + { + log.error("Could not close left-over PathChildrenCache for path: " + path, e); + } + } + }; + String id = entry.addThing(cache, closer); + + PathChildrenCacheListener listener = new PathChildrenCacheListener() + { + @Override + public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception + { + entry.addEvent(new RpcCuratorEvent(new RpcPathChildrenCacheEvent(path, event))); + } + }; + cache.getListenable().addListener(listener); + + return new PathChildrenCacheProjection(id); + } + + @ThriftMethod + public List getPathChildrenCacheData(CuratorProjection projection, PathChildrenCacheProjection cacheProjection) throws Exception + { + CuratorEntry entry = getEntry(projection); + + PathChildrenCache pathChildrenCache = getThing(entry, cacheProjection.id, PathChildrenCache.class); + return Lists.transform + ( + pathChildrenCache.getCurrentData(), + new Function() + { + @Override + public RpcChildData apply(ChildData childData) + { + return new RpcChildData(childData); + } + } + ); + } + + @ThriftMethod + public RpcChildData getPathChildrenCacheDataForPath(CuratorProjection projection, PathChildrenCacheProjection cacheProjection, String path) throws Exception + { + CuratorEntry entry = getEntry(projection); + + PathChildrenCache pathChildrenCache = getThing(entry, cacheProjection.id, PathChildrenCache.class); + return new RpcChildData(pathChildrenCache.getCurrentData(path)); + } + + @ThriftMethod + public NodeCacheProjection startNodeCache(CuratorProjection projection, final String path, boolean dataIsCompressed, boolean buildInitial) throws Exception + { + final CuratorEntry entry = getEntry(projection); + + final NodeCache cache = new NodeCache(entry.getClient(), path, dataIsCompressed); + cache.start(buildInitial); + + Closer closer = new Closer() + { + @Override + public void close() + { + try + { + cache.close(); + } + catch ( IOException e ) + { + log.error("Could not close left-over NodeCache for path: " + path, e); + } + } + }; + String id = entry.addThing(cache, closer); + + NodeCacheListener listener = new NodeCacheListener() + { + @Override + public void nodeChanged() throws Exception + { + entry.addEvent(new RpcCuratorEvent(RpcCuratorEventType.NODE_CACHE, path)); + } + }; + cache.getListenable().addListener(listener); + + return new NodeCacheProjection(id); + } + + @ThriftMethod + public RpcChildData getNodeCacheData(CuratorProjection projection, NodeCacheProjection cacheProjection) throws Exception + { + CuratorEntry entry = getEntry(projection); + + NodeCache nodeCache = getThing(entry, cacheProjection.id, NodeCache.class); + return new RpcChildData(nodeCache.getCurrentData()); + } + + @ThriftMethod + public PersistentEphemeralNodeProjection startPersistentEphemeralNode(CuratorProjection projection, final String path, byte[] data, RpcPersistentEphemeralNodeMode mode) throws Exception + { + CuratorEntry entry = getEntry(projection); + + final PersistentEphemeralNode node = new PersistentEphemeralNode(entry.getClient(), PersistentEphemeralNode.Mode.valueOf(mode.name()), path, data); + node.start(); + + Closer closer = new Closer() + { + @Override + public void close() + { + try + { + node.close(); + } + catch ( Exception e ) + { + log.error("Could not release left-over persistent ephemeral node for path: " + path, e); + } + } + }; + String id = entry.addThing(node, closer); + return new PersistentEphemeralNodeProjection(id); + } + + @ThriftMethod + public List startSemaphore(CuratorProjection projection, final String path, int acquireQty, int maxWaitMs, int maxLeases) throws Exception + { + CuratorEntry entry = getEntry(projection); + + final InterProcessSemaphoreV2 semaphore = new InterProcessSemaphoreV2(entry.getClient(), path, maxLeases); + final Collection leases = semaphore.acquire(acquireQty, maxWaitMs, TimeUnit.MILLISECONDS); + if ( leases == null ) + { + return Lists.newArrayList(); + } + + List leaseProjections = Lists.newArrayList(); + for ( final Lease lease : leases ) + { + Closer closer = new Closer() + { + @Override + public void close() + { + try + { + semaphore.returnLease(lease); + } + catch ( Exception e ) + { + log.error("Could not release semaphore leases for path: " + path, e); + } + } + }; + leaseProjections.add(new LeaseProjection(entry.addThing(lease, closer))); + } + return leaseProjections; + } + + public void addEvent(CuratorProjection projection, RpcCuratorEvent event) + { + CuratorEntry entry = connectionManager.get(projection.id); + if ( entry != null ) + { + entry.addEvent(event); + } + } + + private CuratorEntry getEntry(CuratorProjection projection) throws Exception + { + CuratorEntry entry = connectionManager.get(projection.id); + if ( entry == null ) + { + throw new Exception("No client found with id: " + projection.id); + } + return entry; + } + + private static T castBuilder(Object createBuilder, Class clazz) throws Exception + { + if ( clazz.isAssignableFrom(createBuilder.getClass()) ) + { + return clazz.cast(createBuilder); + } + throw new Exception("That operation is not available"); + } + + private T getThing(CuratorEntry entry, String id, Class clazz) + { + T thing = entry.getThing(id, clazz); + Preconditions.checkNotNull(thing, "No item of type " + clazz.getSimpleName() + " found with id " + id); + return thing; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/EventService.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/EventService.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/EventService.java new file mode 100644 index 0000000..c10c5df --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/EventService.java @@ -0,0 +1,34 @@ +package org.apache.curator.x.rpc.idl.services; + +import com.facebook.swift.service.ThriftMethod; +import com.facebook.swift.service.ThriftService; +import org.apache.curator.x.rpc.connections.CuratorEntry; +import org.apache.curator.x.rpc.connections.ConnectionManager; +import org.apache.curator.x.rpc.idl.structs.CuratorProjection; +import org.apache.curator.x.rpc.idl.structs.RpcCuratorEvent; + +@ThriftService("EventService") +public class EventService +{ + private final ConnectionManager connectionManager; + private final long pingTimeMs; + + public EventService(ConnectionManager connectionManager, long pingTimeMs) + { + this.connectionManager = connectionManager; + this.pingTimeMs = pingTimeMs; + } + + @ThriftMethod + public RpcCuratorEvent getNextEvent(CuratorProjection projection) throws InterruptedException + { + CuratorEntry entry = connectionManager.get(projection.id); + if ( entry == null ) + { + // TODO + return null; + } + RpcCuratorEvent event = entry.pollForEvent(pingTimeMs); + return (event != null) ? event : new RpcCuratorEvent(); + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/CreateSpec.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/CreateSpec.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/CreateSpec.java new file mode 100644 index 0000000..d0232a9 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/CreateSpec.java @@ -0,0 +1,62 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class CreateSpec +{ + @ThriftField(1) + public String path; + + @ThriftField(2) + public byte[] data; + + @ThriftField(3) + public RpcCreateMode mode; + + @ThriftField(4) + public String asyncContext; + + @ThriftField(5) + public boolean compressed; + + @ThriftField(6) + public boolean creatingParentsIfNeeded; + + @ThriftField(7) + public boolean withProtection; + + public CreateSpec() + { + } + + public CreateSpec(String path, byte[] data, RpcCreateMode mode, String asyncContext, boolean compressed, boolean creatingParentsIfNeeded, boolean withProtection) + { + this.path = path; + this.data = data; + this.mode = mode; + this.asyncContext = asyncContext; + this.compressed = compressed; + this.creatingParentsIfNeeded = creatingParentsIfNeeded; + this.withProtection = withProtection; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/CuratorProjection.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/CuratorProjection.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/CuratorProjection.java new file mode 100644 index 0000000..a97ca4b --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/CuratorProjection.java @@ -0,0 +1,39 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftConstructor; +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class CuratorProjection +{ + @ThriftField(1) + public String id; + + public CuratorProjection() + { + } + + public CuratorProjection(String id) + { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/DeleteSpec.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/DeleteSpec.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/DeleteSpec.java new file mode 100644 index 0000000..2d418ee --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/DeleteSpec.java @@ -0,0 +1,54 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class DeleteSpec +{ + @ThriftField(1) + public String path; + + @ThriftField(2) + public boolean guaranteed; + + @ThriftField(3) + public String asyncContext; + + @ThriftField(4) + public boolean compressed; + + @ThriftField(5) + public Version version; + + public DeleteSpec() + { + } + + public DeleteSpec(String path, boolean guaranteed, String asyncContext, boolean compressed, Version version) + { + this.path = path; + this.guaranteed = guaranteed; + this.asyncContext = asyncContext; + this.compressed = compressed; + this.version = version; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/ExistsSpec.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/ExistsSpec.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/ExistsSpec.java new file mode 100644 index 0000000..f271f7e --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/ExistsSpec.java @@ -0,0 +1,46 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class ExistsSpec +{ + @ThriftField(1) + public String path; + + @ThriftField(2) + public boolean watched; + + @ThriftField(3) + public String asyncContext; + + public ExistsSpec() + { + } + + public ExistsSpec(String path, boolean watched, String asyncContext) + { + this.path = path; + this.watched = watched; + this.asyncContext = asyncContext; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/GetChildrenSpec.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/GetChildrenSpec.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/GetChildrenSpec.java new file mode 100644 index 0000000..37dea04 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/GetChildrenSpec.java @@ -0,0 +1,46 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class GetChildrenSpec +{ + @ThriftField(1) + public String path; + + @ThriftField(2) + public boolean watched; + + @ThriftField(3) + public String asyncContext; + + public GetChildrenSpec() + { + } + + public GetChildrenSpec(String path, boolean watched, String asyncContext) + { + this.path = path; + this.watched = watched; + this.asyncContext = asyncContext; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/GetDataSpec.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/GetDataSpec.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/GetDataSpec.java new file mode 100644 index 0000000..9b741d0 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/GetDataSpec.java @@ -0,0 +1,50 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class GetDataSpec +{ + @ThriftField(1) + public String path; + + @ThriftField(2) + public boolean watched; + + @ThriftField(3) + public String asyncContext; + + @ThriftField(4) + public boolean decompressed; + + public GetDataSpec() + { + } + + public GetDataSpec(String path, boolean watched, String asyncContext, boolean decompressed) + { + this.path = path; + this.watched = watched; + this.asyncContext = asyncContext; + this.decompressed = decompressed; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderEvent.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderEvent.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderEvent.java new file mode 100644 index 0000000..68f3916 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderEvent.java @@ -0,0 +1,28 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class LeaderEvent +{ + @ThriftField(1) + public String path; + + @ThriftField(2) + public String participantId; + + @ThriftField(3) + public boolean isLeader; + + public LeaderEvent() + { + } + + public LeaderEvent(String path, String participantId, boolean isLeader) + { + this.path = path; + this.participantId = participantId; + this.isLeader = isLeader; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderProjection.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderProjection.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderProjection.java new file mode 100644 index 0000000..0d12a4c --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderProjection.java @@ -0,0 +1,20 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class LeaderProjection +{ + @ThriftField(1) + public String id; + + public LeaderProjection() + { + } + + public LeaderProjection(String id) + { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderResult.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderResult.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderResult.java new file mode 100644 index 0000000..8161ef4 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaderResult.java @@ -0,0 +1,24 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class LeaderResult +{ + @ThriftField(1) + public LeaderProjection projection; + + @ThriftField(2) + public boolean hasLeadership; + + public LeaderResult() + { + } + + public LeaderResult(LeaderProjection projection, boolean hasLeadership) + { + this.projection = projection; + this.hasLeadership = hasLeadership; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaseProjection.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaseProjection.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaseProjection.java new file mode 100644 index 0000000..784bcf6 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LeaseProjection.java @@ -0,0 +1,20 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class LeaseProjection +{ + @ThriftField(1) + public String id; + + public LeaseProjection() + { + } + + public LeaseProjection(String id) + { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LockProjection.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LockProjection.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LockProjection.java new file mode 100644 index 0000000..9421527 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/LockProjection.java @@ -0,0 +1,20 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class LockProjection +{ + @ThriftField(1) + public String id; + + public LockProjection() + { + } + + public LockProjection(String id) + { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/NodeCacheProjection.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/NodeCacheProjection.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/NodeCacheProjection.java new file mode 100644 index 0000000..3a28704 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/NodeCacheProjection.java @@ -0,0 +1,20 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class NodeCacheProjection +{ + @ThriftField(1) + public String id; + + public NodeCacheProjection() + { + } + + public NodeCacheProjection(String id) + { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalChildrenList.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalChildrenList.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalChildrenList.java new file mode 100644 index 0000000..6a038bb --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalChildrenList.java @@ -0,0 +1,21 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; +import java.util.List; + +@ThriftStruct +public class OptionalChildrenList +{ + @ThriftField(1) + public List children; + + public OptionalChildrenList() + { + } + + public OptionalChildrenList(List children) + { + this.children = children; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalPath.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalPath.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalPath.java new file mode 100644 index 0000000..1e48a7d --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalPath.java @@ -0,0 +1,20 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class OptionalPath +{ + @ThriftField(1) + public String path; + + public OptionalPath() + { + } + + public OptionalPath(String path) + { + this.path = path; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalRpcStat.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalRpcStat.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalRpcStat.java new file mode 100644 index 0000000..df0c234 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/OptionalRpcStat.java @@ -0,0 +1,38 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct("OptionalStat") +public class OptionalRpcStat +{ + @ThriftField(1) + public RpcStat stat; + + public OptionalRpcStat() + { + } + + public OptionalRpcStat(RpcStat stat) + { + this.stat = stat; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PathChildrenCacheProjection.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PathChildrenCacheProjection.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PathChildrenCacheProjection.java new file mode 100644 index 0000000..a909c83 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PathChildrenCacheProjection.java @@ -0,0 +1,20 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class PathChildrenCacheProjection +{ + @ThriftField(1) + public String id; + + public PathChildrenCacheProjection() + { + } + + public PathChildrenCacheProjection(String id) + { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PathChildrenCacheStartMode.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PathChildrenCacheStartMode.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PathChildrenCacheStartMode.java new file mode 100644 index 0000000..8a5d225 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PathChildrenCacheStartMode.java @@ -0,0 +1,8 @@ +package org.apache.curator.x.rpc.idl.structs; + +public enum PathChildrenCacheStartMode +{ + NORMAL, + BUILD_INITIAL_CACHE, + POST_INITIALIZED_EVENT +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PersistentEphemeralNodeProjection.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PersistentEphemeralNodeProjection.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PersistentEphemeralNodeProjection.java new file mode 100644 index 0000000..f775d8e --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/PersistentEphemeralNodeProjection.java @@ -0,0 +1,20 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class PersistentEphemeralNodeProjection +{ + @ThriftField(1) + public String id; + + public PersistentEphemeralNodeProjection() + { + } + + public PersistentEphemeralNodeProjection(String id) + { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcAcl.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcAcl.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcAcl.java new file mode 100644 index 0000000..c4cb9ac --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcAcl.java @@ -0,0 +1,42 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct("Acl") +public class RpcAcl +{ + @ThriftField(1) + public int perms; + + @ThriftField(2) + public RpcId id; + + public RpcAcl() + { + } + + public RpcAcl(int perms, RpcId id) + { + this.perms = perms; + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcChildData.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcChildData.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcChildData.java new file mode 100644 index 0000000..f7862f7 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcChildData.java @@ -0,0 +1,39 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; +import org.apache.curator.framework.recipes.cache.ChildData; + +@ThriftStruct("ChildData") +public class RpcChildData +{ + @ThriftField(1) + public String path; + + @ThriftField(2) + public RpcStat stat; + + @ThriftField(3) + public byte[] data; + + public RpcChildData() + { + } + + public RpcChildData(ChildData data) + { + if ( data != null ) + { + this.path = data.getPath(); + this.stat = RpcCuratorEvent.toRpcStat(data.getStat()); + this.data = data.getData(); + } + } + + public RpcChildData(String path, RpcStat stat, byte[] data) + { + this.path = path; + this.stat = stat; + this.data = data; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCreateMode.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCreateMode.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCreateMode.java new file mode 100644 index 0000000..d50bb74 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCreateMode.java @@ -0,0 +1,30 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftEnum; + +@ThriftEnum("CreateMode") +public enum RpcCreateMode +{ + PERSISTENT, + PERSISTENT_SEQUENTIAL, + EPHEMERAL, + EPHEMERAL_SEQUENTIAL +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCuratorEvent.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCuratorEvent.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCuratorEvent.java new file mode 100644 index 0000000..52d18df --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCuratorEvent.java @@ -0,0 +1,224 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import org.apache.curator.framework.api.CuratorEvent; +import org.apache.curator.framework.state.ConnectionState; +import org.apache.zookeeper.WatchedEvent; +import org.apache.zookeeper.data.ACL; +import org.apache.zookeeper.data.Stat; +import javax.annotation.Nullable; +import java.util.List; + +@SuppressWarnings("deprecation") +@ThriftStruct("CuratorEvent") +public class RpcCuratorEvent +{ + @ThriftField(2) + public RpcCuratorEventType type; + + @ThriftField(3) + public int resultCode; + + @ThriftField(4) + public String path; + + @ThriftField(5) + public String context; + + @ThriftField(6) + public RpcStat stat; + + @ThriftField(7) + public byte[] data; + + @ThriftField(8) + public String name; + + @ThriftField(9) + public List children; + + @ThriftField(10) + public List aclList; + + @ThriftField(11) + public RpcWatchedEvent watchedEvent; + + @ThriftField(12) + public LeaderEvent leaderEvent; + + @ThriftField(13) + public RpcPathChildrenCacheEvent childrenCacheEvent; + + public RpcCuratorEvent() + { + this.type = RpcCuratorEventType.PING; + this.resultCode = 0; + this.path = null; + this.context = null; + this.stat = null; + this.data = null; + this.name = null; + this.children = null; + this.aclList = null; + this.watchedEvent = null; + this.leaderEvent = null; + this.childrenCacheEvent = null; + } + + public RpcCuratorEvent(RpcCuratorEventType type, String path) + { + this.type = type; + this.resultCode = 0; + this.path = path; + this.context = null; + this.stat = null; + this.data = null; + this.name = null; + this.children = null; + this.aclList = null; + this.watchedEvent = null; + this.leaderEvent = null; + this.childrenCacheEvent = null; + } + + public RpcCuratorEvent(RpcPathChildrenCacheEvent childrenCacheEvent) + { + this.type = RpcCuratorEventType.PATH_CHILDREN_CACHE; + this.resultCode = 0; + this.path = null; + this.context = null; + this.stat = null; + this.data = null; + this.name = null; + this.children = null; + this.aclList = null; + this.watchedEvent = null; + this.leaderEvent = null; + this.childrenCacheEvent = childrenCacheEvent; + } + + public RpcCuratorEvent(CuratorEvent event) + { + this.type = RpcCuratorEventType.valueOf(event.getType().name()); + this.resultCode = event.getResultCode(); + this.path = event.getPath(); + this.context = (event.getContext() != null) ? String.valueOf(event.getContext()) : null; + this.stat = toRpcStat(event.getStat()); + this.data = event.getData(); + this.name = event.getName(); + this.children = event.getChildren(); + this.aclList = toRpcAclList(event.getACLList()); + this.watchedEvent = toRpcWatchedEvent(event.getWatchedEvent()); + this.leaderEvent = null; + this.childrenCacheEvent = null; + } + + public RpcCuratorEvent(ConnectionState newState) + { + this.type = RpcCuratorEventType.valueOf(newState.name()); + this.resultCode = 0; + this.path = null; + this.context = null; + this.stat = null; + this.data = null; + this.name = null; + this.children = null; + this.aclList = null; + this.watchedEvent = null; + this.leaderEvent = null; + this.childrenCacheEvent = null; + } + + public RpcCuratorEvent(WatchedEvent event) + { + this.type = RpcCuratorEventType.WATCHED; + this.resultCode = 0; + this.path = event.getPath(); + this.context = null; + this.stat = null; + this.data = null; + this.name = null; + this.children = null; + this.aclList = null; + this.watchedEvent = new RpcWatchedEvent(RpcKeeperState.valueOf(event.getState().name()), RpcEventType.valueOf(event.getType().name()), event.getPath()); + this.leaderEvent = null; + this.childrenCacheEvent = null; + } + + public RpcCuratorEvent(LeaderEvent event) + { + this.type = RpcCuratorEventType.LEADER; + this.resultCode = 0; + this.path = event.path; + this.context = null; + this.stat = null; + this.data = null; + this.name = null; + this.children = null; + this.aclList = null; + this.watchedEvent = null; + this.leaderEvent = event; + this.childrenCacheEvent = null; + } + + public static RpcStat toRpcStat(Stat stat) + { + if ( stat != null ) + { + return new RpcStat(stat); + } + return null; + } + + private List toRpcAclList(List aclList) + { + if ( aclList != null ) + { + return Lists.transform + ( + aclList, + new Function() + { + @Nullable + @Override + public RpcAcl apply(ACL acl) + { + RpcId id = new RpcId(acl.getId().getScheme(), acl.getId().getId()); + return new RpcAcl(acl.getPerms(), id); + } + } + ); + } + return null; + } + + private RpcWatchedEvent toRpcWatchedEvent(WatchedEvent watchedEvent) + { + if ( watchedEvent != null ) + { + return new RpcWatchedEvent(watchedEvent); + } + return null; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCuratorEventType.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCuratorEventType.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCuratorEventType.java new file mode 100644 index 0000000..88b4a1f --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcCuratorEventType.java @@ -0,0 +1,46 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftEnum; + +@ThriftEnum("CuratorEventType") +public enum RpcCuratorEventType +{ + PING, + CREATE, + DELETE, + EXISTS, + GET_DATA, + SET_DATA, + CHILDREN, + SYNC, + GET_ACL, + SET_ACL, + WATCHED, + CLOSING, + CONNECTION_CONNECTED, + CONNECTION_SUSPENDED, + CONNECTION_RECONNECTED, + CONNECTION_LOST, + CONNECTION_READ_ONLY, + LEADER, + PATH_CHILDREN_CACHE, + NODE_CACHE +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcEventType.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcEventType.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcEventType.java new file mode 100644 index 0000000..d20adb0 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcEventType.java @@ -0,0 +1,31 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftEnum; + +@ThriftEnum("EventType") +public enum RpcEventType +{ + None, + NodeCreated, + NodeDeleted, + NodeDataChanged, + NodeChildrenChanged +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcId.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcId.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcId.java new file mode 100644 index 0000000..233736b --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcId.java @@ -0,0 +1,42 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct("Id") +public class RpcId +{ + @ThriftField(1) + public String scheme; + + @ThriftField(2) + public String id; + + public RpcId() + { + } + + public RpcId(String scheme, String id) + { + this.scheme = scheme; + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcKeeperState.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcKeeperState.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcKeeperState.java new file mode 100644 index 0000000..8839a1d --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcKeeperState.java @@ -0,0 +1,34 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftEnum; + +@ThriftEnum("KeeperState") +public enum RpcKeeperState +{ + Unknown, + Disconnected, + NoSyncConnected, + SyncConnected, + AuthFailed, + ConnectedReadOnly, + SaslAuthenticated, + Expired +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcParticipant.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcParticipant.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcParticipant.java new file mode 100644 index 0000000..7b1dfde --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcParticipant.java @@ -0,0 +1,24 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct("Participant") +public class RpcParticipant +{ + @ThriftField(1) + public String id; + + @ThriftField(2) + public boolean isLeader; + + public RpcParticipant() + { + } + + public RpcParticipant(String id, boolean isLeader) + { + this.id = id; + this.isLeader = isLeader; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPathChildrenCacheEvent.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPathChildrenCacheEvent.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPathChildrenCacheEvent.java new file mode 100644 index 0000000..6766e8e --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPathChildrenCacheEvent.java @@ -0,0 +1,36 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; +import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent; + +@ThriftStruct("PathChildrenCacheEvent") +public class RpcPathChildrenCacheEvent +{ + @ThriftField(1) + public String cachedPath; + + @ThriftField(2) + public RpcPathChildrenCacheEventType type; + + @ThriftField(3) + public RpcChildData data; + + public RpcPathChildrenCacheEvent() + { + } + + public RpcPathChildrenCacheEvent(String cachedPath, PathChildrenCacheEvent event) + { + this.cachedPath = cachedPath; + type = RpcPathChildrenCacheEventType.valueOf(event.getType().name()); + data = (event.getData() != null) ? new RpcChildData(event.getData()) : null; + } + + public RpcPathChildrenCacheEvent(String cachedPath, RpcPathChildrenCacheEventType type, RpcChildData data) + { + this.cachedPath = cachedPath; + this.type = type; + this.data = data; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPathChildrenCacheEventType.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPathChildrenCacheEventType.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPathChildrenCacheEventType.java new file mode 100644 index 0000000..e14284d --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPathChildrenCacheEventType.java @@ -0,0 +1,15 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftEnum; + +@ThriftEnum("PathChildrenCacheEventType") +public enum RpcPathChildrenCacheEventType +{ + CHILD_ADDED, + CHILD_UPDATED, + CHILD_REMOVED, + CONNECTION_SUSPENDED, + CONNECTION_RECONNECTED, + CONNECTION_LOST, + INITIALIZED +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPersistentEphemeralNodeMode.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPersistentEphemeralNodeMode.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPersistentEphemeralNodeMode.java new file mode 100644 index 0000000..7fedaf9 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcPersistentEphemeralNodeMode.java @@ -0,0 +1,12 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftEnum; + +@ThriftEnum("PersistentEphemeralNodeMode") +public enum RpcPersistentEphemeralNodeMode +{ + EPHEMERAL, + EPHEMERAL_SEQUENTIAL, + PROTECTED_EPHEMERAL, + PROTECTED_EPHEMERAL_SEQUENTIAL +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcStat.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcStat.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcStat.java new file mode 100644 index 0000000..5e62f15 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcStat.java @@ -0,0 +1,95 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; +import org.apache.zookeeper.data.Stat; + +@ThriftStruct("Stat") +public class RpcStat +{ + @ThriftField(1) + public long czxid; + + @ThriftField(2) + public long mzxid; + + @ThriftField(3) + public long ctime; + + @ThriftField(4) + public long mtime; + + @ThriftField(5) + public int version; + + @ThriftField(6) + public int cversion; + + @ThriftField(7) + public int aversion; + + @ThriftField(8) + public long ephemeralOwner; + + @ThriftField(9) + public int dataLength; + + @ThriftField(10) + public int numChildren; + + @ThriftField(11) + public long pzxid; + + public RpcStat() + { + } + + public RpcStat(Stat stat) + { + czxid = stat.getCzxid(); + mzxid = stat.getMzxid(); + ctime = stat.getCtime(); + mtime = stat.getMtime(); + version = stat.getVersion(); + cversion = stat.getCversion(); + aversion = stat.getAversion(); + ephemeralOwner = stat.getEphemeralOwner(); + dataLength = stat.getDataLength(); + numChildren = stat.getNumChildren(); + pzxid = stat.getPzxid(); + } + + public RpcStat(long czxid, long mzxid, long ctime, long mtime, int version, int cversion, int aversion, long ephemeralOwner, int dataLength, int numChildren, long pzxid) + { + this.czxid = czxid; + this.mzxid = mzxid; + this.ctime = ctime; + this.mtime = mtime; + this.version = version; + this.cversion = cversion; + this.aversion = aversion; + this.ephemeralOwner = ephemeralOwner; + this.dataLength = dataLength; + this.numChildren = numChildren; + this.pzxid = pzxid; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcWatchedEvent.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcWatchedEvent.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcWatchedEvent.java new file mode 100644 index 0000000..cc7e818 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/RpcWatchedEvent.java @@ -0,0 +1,54 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; +import org.apache.zookeeper.WatchedEvent; + +@ThriftStruct("WatchedEvent") +public class RpcWatchedEvent +{ + @ThriftField(1) + public RpcKeeperState keeperState; + + @ThriftField(2) + public RpcEventType eventType; + + @ThriftField(3) + public String path; + + public RpcWatchedEvent() + { + } + + public RpcWatchedEvent(WatchedEvent watchedEvent) + { + keeperState = RpcKeeperState.valueOf(watchedEvent.getState().name()); + eventType = RpcEventType.valueOf(watchedEvent.getType().name()); + path = watchedEvent.getPath(); + } + + public RpcWatchedEvent(RpcKeeperState keeperState, RpcEventType eventType, String path) + { + this.keeperState = keeperState; + this.eventType = eventType; + this.path = path; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/SetDataSpec.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/SetDataSpec.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/SetDataSpec.java new file mode 100644 index 0000000..0814699 --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/SetDataSpec.java @@ -0,0 +1,58 @@ +/** + * 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.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class SetDataSpec +{ + @ThriftField(1) + public String path; + + @ThriftField(2) + public boolean watched; + + @ThriftField(3) + public String asyncContext; + + @ThriftField(4) + public boolean compressed; + + @ThriftField(5) + public Version version; + + @ThriftField(6) + public byte[] data; + + public SetDataSpec() + { + } + + public SetDataSpec(String path, boolean watched, String asyncContext, boolean compressed, Version version, byte[] data) + { + this.path = path; + this.watched = watched; + this.asyncContext = asyncContext; + this.compressed = compressed; + this.version = version; + this.data = data; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/Version.java ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/Version.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/Version.java new file mode 100644 index 0000000..cb3fcec --- /dev/null +++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/structs/Version.java @@ -0,0 +1,20 @@ +package org.apache.curator.x.rpc.idl.structs; + +import com.facebook.swift.codec.ThriftField; +import com.facebook.swift.codec.ThriftStruct; + +@ThriftStruct +public class Version +{ + @ThriftField(1) + public int version; + + public Version() + { + } + + public Version(int version) + { + this.version = version; + } +} http://git-wip-us.apache.org/repos/asf/curator/blob/8bfaffd2/curator-x-rpc/src/main/scripts/generate.sh ---------------------------------------------------------------------- diff --git a/curator-x-rpc/src/main/scripts/generate.sh b/curator-x-rpc/src/main/scripts/generate.sh index 15f6546..de5e21c 100755 --- a/curator-x-rpc/src/main/scripts/generate.sh +++ b/curator-x-rpc/src/main/scripts/generate.sh @@ -31,7 +31,7 @@ RPC_PATH="$BASE_DIR/curator-x-rpc/target/classes" CLASSES="" -for p in projection event; do +for p in services structs; do for f in `ls -m1 $RPC_PATH/org/apache/curator/x/rpc/idl/$p/*.class | xargs -n 1 basename | sed s/\.[^\.]*$//`; do if [[ $f != *[\$]* ]]; then CLASSES="$CLASSES org.apache.curator.x.rpc.idl.$p.$f";