You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2014/05/27 15:57:26 UTC

[04/14] git commit: wip

wip


Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/cd3dbdcb
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/cd3dbdcb
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/cd3dbdcb

Branch: refs/heads/curator-rpc
Commit: cd3dbdcbe5f17c8db51d75e3d33f492b6e56dc14
Parents: f103e02
Author: randgalt <ra...@apache.org>
Authored: Mon May 26 02:02:16 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Mon May 26 02:02:16 2014 -0500

----------------------------------------------------------------------
 .../curator/x/rpc/CuratorProjectionServer.java  |   4 +-
 .../x/rpc/idl/event/CuratorEventService.java    |  23 --
 .../x/rpc/idl/event/CuratorRpcEvent.java        | 279 -------------------
 .../x/rpc/idl/event/CuratorRpcEventType.java    |  19 --
 .../x/rpc/idl/event/RpcCuratorEvent.java        | 279 +++++++++++++++++++
 .../x/rpc/idl/event/RpcCuratorEventType.java    |  19 ++
 .../projection/CuratorProjectionService.java    |  22 +-
 curator-x-rpc/src/main/scripts/generate.sh      |   8 +-
 .../src/main/thrift/curator-event.thrift        |  64 -----
 curator-x-rpc/src/main/thrift/curator.thrift    |  59 +++-
 10 files changed, 375 insertions(+), 401 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
index 489d5a6..cd35f42 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
@@ -6,15 +6,13 @@ import com.facebook.swift.service.ThriftServer;
 import com.facebook.swift.service.ThriftServerConfig;
 import com.facebook.swift.service.ThriftServiceProcessor;
 import com.google.common.collect.Lists;
-import org.apache.curator.x.rpc.idl.event.CuratorEventService;
 import org.apache.curator.x.rpc.idl.projection.CuratorProjectionService;
 
 public class CuratorProjectionServer
 {
     public static void main(String[] args)
     {
-        CuratorEventService eventService = new CuratorEventService();
-        CuratorProjectionService projectionService = new CuratorProjectionService(eventService);
+        CuratorProjectionService projectionService = new CuratorProjectionService();
         ThriftServiceProcessor processor = new ThriftServiceProcessor(new ThriftCodecManager(), Lists.<ThriftEventHandler>newArrayList(), projectionService);
         ThriftServer server = new ThriftServer(processor, new ThriftServerConfig().setPort(8899));  // TODO
         server.start();

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorEventService.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorEventService.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorEventService.java
deleted file mode 100644
index 844de0d..0000000
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorEventService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.curator.x.rpc.idl.event;
-
-import com.facebook.swift.service.ThriftMethod;
-import com.facebook.swift.service.ThriftService;
-import com.google.common.collect.Queues;
-import java.util.concurrent.BlockingQueue;
-
-@ThriftService("CuratorEventService")
-public class CuratorEventService
-{
-    private final BlockingQueue<CuratorRpcEvent> events = Queues.newLinkedBlockingQueue();
-
-    @ThriftMethod
-    public CuratorRpcEvent getNextEvent() throws InterruptedException
-    {
-        return events.take();
-    }
-
-    public void addEvent(CuratorRpcEvent event)
-    {
-        events.offer(event);
-    }
-}

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorRpcEvent.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorRpcEvent.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorRpcEvent.java
deleted file mode 100644
index db2b278..0000000
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorRpcEvent.java
+++ /dev/null
@@ -1,279 +0,0 @@
-package org.apache.curator.x.rpc.idl.event;
-
-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.x.rpc.idl.projection.CuratorProjection;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-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 CuratorRpcEvent
-{
-    private final CuratorProjection projection;
-    private final CuratorEvent event;
-
-    public CuratorRpcEvent()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    public CuratorRpcEvent(CuratorProjection projection, CuratorEvent event)
-    {
-        this.projection = projection;
-        this.event = event;
-    }
-
-    @ThriftField(1)
-    public CuratorProjection getProjection()
-    {
-        return projection;
-    }
-
-    @ThriftField(2)
-    public CuratorRpcEventType getType()
-    {
-        switch ( event.getType() )
-        {
-            case CREATE:
-            {
-                return CuratorRpcEventType.CREATE;
-            }
-
-            case DELETE:
-            {
-                return CuratorRpcEventType.DELETE;
-            }
-
-            case EXISTS:
-            {
-                return CuratorRpcEventType.EXISTS;
-            }
-
-            case GET_DATA:
-            {
-                return CuratorRpcEventType.GET_DATA;
-            }
-
-            case SET_DATA:
-            {
-                return CuratorRpcEventType.SET_DATA;
-            }
-
-            case CHILDREN:
-            {
-                return CuratorRpcEventType.CHILDREN;
-            }
-
-            case SYNC:
-            {
-                return CuratorRpcEventType.SYNC;
-            }
-
-            case GET_ACL:
-            {
-                return CuratorRpcEventType.GET_ACL;
-            }
-
-            case SET_ACL:
-            {
-                return CuratorRpcEventType.SET_ACL;
-            }
-
-            case WATCHED:
-            {
-                return CuratorRpcEventType.WATCHED;
-            }
-
-            case CLOSING:
-            {
-                return CuratorRpcEventType.CLOSING;
-            }
-        }
-
-        throw new IllegalStateException("Unknown type: " + event.getType());
-    }
-
-    @ThriftField(3)
-    public int getResultCode()
-    {
-        return event.getResultCode();
-    }
-
-    @ThriftField(4)
-    public String getPath()
-    {
-        return event.getPath();
-    }
-
-    @ThriftField(5)
-    public String getContext()
-    {
-        return String.valueOf(event.getContext());
-    }
-
-    @ThriftField(6)
-    public RpcStat getStat()
-    {
-        Stat stat = event.getStat();
-        if ( stat != null )
-        {
-            return new RpcStat
-            (
-                stat.getCzxid(),
-                stat.getMzxid(),
-                stat.getCtime(),
-                stat.getMtime(),
-                stat.getVersion(),
-                stat.getCversion(),
-                stat.getAversion(),
-                stat.getEphemeralOwner(),
-                stat.getDataLength(),
-                stat.getNumChildren(),
-                stat.getPzxid()
-            );
-        }
-        return null;
-    }
-
-    @ThriftField(7)
-    public byte[] getData()
-    {
-        return event.getData();
-    }
-
-    @ThriftField(8)
-    public String getName()
-    {
-        return event.getPath();
-    }
-
-    @ThriftField(9)
-    public List<String> getChildren()
-    {
-        return event.getChildren();
-    }
-
-    @ThriftField(10)
-    public List<RpcAcl> getACLList()
-    {
-        List<ACL> aclList = event.getACLList();
-        if ( aclList != null )
-        {
-            return Lists.transform
-            (
-                aclList,
-                new Function<ACL, RpcAcl>()
-                {
-                    @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;
-    }
-
-    @ThriftField(11)
-    public RpcWatchedEvent getWatchedEvent()
-    {
-        WatchedEvent watchedEvent = event.getWatchedEvent();
-        if ( watchedEvent != null )
-        {
-            RpcKeeperState keeperState = toRpcKeeperState(watchedEvent.getState());
-            RpcEventType eventType = toRpcEventType(watchedEvent.getType());
-            return new RpcWatchedEvent(keeperState, eventType, watchedEvent.getPath());
-        }
-        return null;
-    }
-
-    private RpcEventType toRpcEventType(Watcher.Event.EventType type)
-    {
-        switch ( type )
-        {
-            case None:
-            {
-                return RpcEventType.None;
-            }
-
-            case NodeCreated:
-            {
-                return RpcEventType.NodeCreated;
-            }
-
-            case NodeDeleted:
-            {
-                return RpcEventType.NodeDeleted;
-            }
-
-            case NodeDataChanged:
-            {
-                return RpcEventType.NodeDataChanged;
-            }
-
-            case NodeChildrenChanged:
-            {
-                return RpcEventType.NodeChildrenChanged;
-            }
-        }
-        throw new IllegalStateException("Unknown type: " + type);
-    }
-
-    private RpcKeeperState toRpcKeeperState(Watcher.Event.KeeperState state)
-    {
-        switch ( state )
-        {
-            case Unknown:
-            {
-                return RpcKeeperState.Unknown;
-            }
-
-            case Disconnected:
-            {
-                return RpcKeeperState.Disconnected;
-            }
-
-            case NoSyncConnected:
-            {
-                return RpcKeeperState.NoSyncConnected;
-            }
-
-            case SyncConnected:
-            {
-                return RpcKeeperState.SyncConnected;
-            }
-
-            case AuthFailed:
-            {
-                return RpcKeeperState.AuthFailed;
-            }
-
-            case ConnectedReadOnly:
-            {
-                return RpcKeeperState.ConnectedReadOnly;
-            }
-
-            case SaslAuthenticated:
-            {
-                return RpcKeeperState.SaslAuthenticated;
-            }
-
-            case Expired:
-            {
-                return RpcKeeperState.Expired;
-            }
-        }
-        throw new IllegalStateException("Unknown state: " + state);
-    }
-}

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorRpcEventType.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorRpcEventType.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorRpcEventType.java
deleted file mode 100644
index b905075..0000000
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/CuratorRpcEventType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.apache.curator.x.rpc.idl.event;
-
-import com.facebook.swift.codec.ThriftEnum;
-
-@ThriftEnum("CuratorEventType")
-public enum CuratorRpcEventType
-{
-    CREATE,
-    DELETE,
-    EXISTS,
-    GET_DATA,
-    SET_DATA,
-    CHILDREN,
-    SYNC,
-    GET_ACL,
-    SET_ACL,
-    WATCHED,
-    CLOSING
-}

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/RpcCuratorEvent.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/RpcCuratorEvent.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/RpcCuratorEvent.java
new file mode 100644
index 0000000..cfc8bbd
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/RpcCuratorEvent.java
@@ -0,0 +1,279 @@
+package org.apache.curator.x.rpc.idl.event;
+
+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.x.rpc.idl.projection.CuratorProjection;
+import org.apache.zookeeper.WatchedEvent;
+import org.apache.zookeeper.Watcher;
+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
+{
+    private final CuratorProjection projection;
+    private final CuratorEvent event;
+
+    public RpcCuratorEvent()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public RpcCuratorEvent(CuratorProjection projection, CuratorEvent event)
+    {
+        this.projection = projection;
+        this.event = event;
+    }
+
+    @ThriftField(1)
+    public CuratorProjection getProjection()
+    {
+        return projection;
+    }
+
+    @ThriftField(2)
+    public RpcCuratorEventType getType()
+    {
+        switch ( event.getType() )
+        {
+            case CREATE:
+            {
+                return RpcCuratorEventType.CREATE;
+            }
+
+            case DELETE:
+            {
+                return RpcCuratorEventType.DELETE;
+            }
+
+            case EXISTS:
+            {
+                return RpcCuratorEventType.EXISTS;
+            }
+
+            case GET_DATA:
+            {
+                return RpcCuratorEventType.GET_DATA;
+            }
+
+            case SET_DATA:
+            {
+                return RpcCuratorEventType.SET_DATA;
+            }
+
+            case CHILDREN:
+            {
+                return RpcCuratorEventType.CHILDREN;
+            }
+
+            case SYNC:
+            {
+                return RpcCuratorEventType.SYNC;
+            }
+
+            case GET_ACL:
+            {
+                return RpcCuratorEventType.GET_ACL;
+            }
+
+            case SET_ACL:
+            {
+                return RpcCuratorEventType.SET_ACL;
+            }
+
+            case WATCHED:
+            {
+                return RpcCuratorEventType.WATCHED;
+            }
+
+            case CLOSING:
+            {
+                return RpcCuratorEventType.CLOSING;
+            }
+        }
+
+        throw new IllegalStateException("Unknown type: " + event.getType());
+    }
+
+    @ThriftField(3)
+    public int getResultCode()
+    {
+        return event.getResultCode();
+    }
+
+    @ThriftField(4)
+    public String getPath()
+    {
+        return event.getPath();
+    }
+
+    @ThriftField(5)
+    public String getContext()
+    {
+        return String.valueOf(event.getContext());
+    }
+
+    @ThriftField(6)
+    public RpcStat getStat()
+    {
+        Stat stat = event.getStat();
+        if ( stat != null )
+        {
+            return new RpcStat
+            (
+                stat.getCzxid(),
+                stat.getMzxid(),
+                stat.getCtime(),
+                stat.getMtime(),
+                stat.getVersion(),
+                stat.getCversion(),
+                stat.getAversion(),
+                stat.getEphemeralOwner(),
+                stat.getDataLength(),
+                stat.getNumChildren(),
+                stat.getPzxid()
+            );
+        }
+        return null;
+    }
+
+    @ThriftField(7)
+    public byte[] getData()
+    {
+        return event.getData();
+    }
+
+    @ThriftField(8)
+    public String getName()
+    {
+        return event.getPath();
+    }
+
+    @ThriftField(9)
+    public List<String> getChildren()
+    {
+        return event.getChildren();
+    }
+
+    @ThriftField(10)
+    public List<RpcAcl> getACLList()
+    {
+        List<ACL> aclList = event.getACLList();
+        if ( aclList != null )
+        {
+            return Lists.transform
+            (
+                aclList,
+                new Function<ACL, RpcAcl>()
+                {
+                    @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;
+    }
+
+    @ThriftField(11)
+    public RpcWatchedEvent getWatchedEvent()
+    {
+        WatchedEvent watchedEvent = event.getWatchedEvent();
+        if ( watchedEvent != null )
+        {
+            RpcKeeperState keeperState = toRpcKeeperState(watchedEvent.getState());
+            RpcEventType eventType = toRpcEventType(watchedEvent.getType());
+            return new RpcWatchedEvent(keeperState, eventType, watchedEvent.getPath());
+        }
+        return null;
+    }
+
+    private RpcEventType toRpcEventType(Watcher.Event.EventType type)
+    {
+        switch ( type )
+        {
+            case None:
+            {
+                return RpcEventType.None;
+            }
+
+            case NodeCreated:
+            {
+                return RpcEventType.NodeCreated;
+            }
+
+            case NodeDeleted:
+            {
+                return RpcEventType.NodeDeleted;
+            }
+
+            case NodeDataChanged:
+            {
+                return RpcEventType.NodeDataChanged;
+            }
+
+            case NodeChildrenChanged:
+            {
+                return RpcEventType.NodeChildrenChanged;
+            }
+        }
+        throw new IllegalStateException("Unknown type: " + type);
+    }
+
+    private RpcKeeperState toRpcKeeperState(Watcher.Event.KeeperState state)
+    {
+        switch ( state )
+        {
+            case Unknown:
+            {
+                return RpcKeeperState.Unknown;
+            }
+
+            case Disconnected:
+            {
+                return RpcKeeperState.Disconnected;
+            }
+
+            case NoSyncConnected:
+            {
+                return RpcKeeperState.NoSyncConnected;
+            }
+
+            case SyncConnected:
+            {
+                return RpcKeeperState.SyncConnected;
+            }
+
+            case AuthFailed:
+            {
+                return RpcKeeperState.AuthFailed;
+            }
+
+            case ConnectedReadOnly:
+            {
+                return RpcKeeperState.ConnectedReadOnly;
+            }
+
+            case SaslAuthenticated:
+            {
+                return RpcKeeperState.SaslAuthenticated;
+            }
+
+            case Expired:
+            {
+                return RpcKeeperState.Expired;
+            }
+        }
+        throw new IllegalStateException("Unknown state: " + state);
+    }
+}

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/RpcCuratorEventType.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/RpcCuratorEventType.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/RpcCuratorEventType.java
new file mode 100644
index 0000000..3c23a69
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/event/RpcCuratorEventType.java
@@ -0,0 +1,19 @@
+package org.apache.curator.x.rpc.idl.event;
+
+import com.facebook.swift.codec.ThriftEnum;
+
+@ThriftEnum("CuratorEventType")
+public enum RpcCuratorEventType
+{
+    CREATE,
+    DELETE,
+    EXISTS,
+    GET_DATA,
+    SET_DATA,
+    CHILDREN,
+    SYNC,
+    GET_ACL,
+    SET_ACL,
+    WATCHED,
+    CLOSING
+}

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/CuratorProjectionService.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/CuratorProjectionService.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/CuratorProjectionService.java
index aeb52c8..1846d31 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/CuratorProjectionService.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/projection/CuratorProjectionService.java
@@ -3,6 +3,7 @@ package org.apache.curator.x.rpc.idl.projection;
 import com.facebook.swift.service.ThriftMethod;
 import com.facebook.swift.service.ThriftService;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Queues;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.framework.api.BackgroundCallback;
@@ -13,24 +14,19 @@ import org.apache.curator.framework.api.CreateModable;
 import org.apache.curator.framework.api.CuratorEvent;
 import org.apache.curator.framework.api.PathAndBytesable;
 import org.apache.curator.retry.RetryOneTime;
-import org.apache.curator.x.rpc.idl.event.CuratorEventService;
-import org.apache.curator.x.rpc.idl.event.CuratorRpcEvent;
+import org.apache.curator.x.rpc.idl.event.RpcCuratorEvent;
 import java.util.Map;
 import java.util.UUID;
+import java.util.concurrent.BlockingQueue;
 
 @ThriftService("CuratorService")
 public class CuratorProjectionService
 {
     private final Map<String, CuratorFramework> projections = Maps.newConcurrentMap();
-    private final CuratorEventService eventService;
-
-    public CuratorProjectionService(CuratorEventService eventService)
-    {
-        this.eventService = eventService;
-    }
+    private final BlockingQueue<RpcCuratorEvent> events = Queues.newLinkedBlockingQueue();
 
     @ThriftMethod
-    public CuratorProjection newCuratorProjection(CuratorProjectionSpec spec)
+    public CuratorProjection newCuratorProjection(CuratorProjectionSpec spec)   // TODO
     {
         CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new RetryOneTime(1));
         String id = UUID.randomUUID().toString();
@@ -76,7 +72,7 @@ public class CuratorProjectionService
                 @Override
                 public void processResult(CuratorFramework client, CuratorEvent event) throws Exception
                 {
-                    eventService.addEvent(new CuratorRpcEvent(projection, event));
+                    events.offer(new RpcCuratorEvent(projection, event));
                 }
             };
             builder = castBuilder(builder, Backgroundable.class).inBackground(backgroundCallback);
@@ -85,6 +81,12 @@ public class CuratorProjectionService
         return String.valueOf(castBuilder(builder, PathAndBytesable.class).forPath(createSpec.getPath(), createSpec.getData().getBytes()));
     }
 
+    @ThriftMethod
+    public RpcCuratorEvent getNextEvent() throws InterruptedException
+    {
+        return events.take();
+    }
+
     private org.apache.zookeeper.CreateMode getRealMode(CreateMode mode)
     {
         switch ( mode )

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/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 9fdc4c6..10288d5 100755
--- a/curator-x-rpc/src/main/scripts/generate.sh
+++ b/curator-x-rpc/src/main/scripts/generate.sh
@@ -10,11 +10,14 @@ BASE_DIR="$( cd "$DIR/../../../.." && pwd )"
 
 RPC_PATH="$BASE_DIR/curator-x-rpc/target/classes"
 
+CLASSES=""
+
 PROJECTION_CLASSES=""
 for f in `ls -m1 $RPC_PATH/org/apache/curator/x/rpc/idl/projection/*.class | xargs -n 1 basename | sed s/\.[^\.]*$//`;
     do
         if [[ $f != *[\$]* ]]; then
             PROJECTION_CLASSES="$PROJECTION_CLASSES $f";
+            CLASSES="$CLASSES org.apache.curator.x.rpc.idl.projection.$f";
         fi;
 done;
 
@@ -23,6 +26,7 @@ for f in `ls -m1 $RPC_PATH/org/apache/curator/x/rpc/idl/event/*.class | xargs -n
     do
         if [[ $f != *[\$]* ]]; then
             EVENT_CLASSES="$EVENT_CLASSES $f";
+            CLASSES="$CLASSES org.apache.curator.x.rpc.idl.event.$f";
         fi;
 done;
 
@@ -34,8 +38,8 @@ PATHS="$PATHS:$BASE_DIR/curator-framework/target/classes"
 PATHS="$PATHS:$BASE_DIR/curator-recipes/target/classes"
 PATHS="$PATHS:$RPC_PATH"
 
+PACKAGE="org.apache.curator.x.rpc.idl"
 PROJECTION_PACKAGE="org.apache.curator.x.rpc.idl.projection"
 EVENT_PACKAGE="org.apache.curator.x.rpc.idl.event"
 
-java -cp $PATHS com.facebook.swift.generator.swift2thrift.Main -namespace cpp org.apache.curator -out "$THRIFT_DIR/curator.thrift" -package $PROJECTION_PACKAGE $PROJECTION_CLASSES
-java -cp $PATHS com.facebook.swift.generator.swift2thrift.Main -map org.apache.curator.x.rpc.idl.projection.CuratorProjection "curator.thrift" -namespace cpp org.apache.curator -out "$THRIFT_DIR/curator-event.thrift" -package $EVENT_PACKAGE $EVENT_CLASSES
+java -cp $PATHS com.facebook.swift.generator.swift2thrift.Main -allow_multiple_packages org.apache.curator -namespace cpp org.apache.curator -out "$THRIFT_DIR/curator.thrift" $CLASSES

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/thrift/curator-event.thrift
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/thrift/curator-event.thrift b/curator-x-rpc/src/main/thrift/curator-event.thrift
deleted file mode 100644
index 9c407eb..0000000
--- a/curator-x-rpc/src/main/thrift/curator-event.thrift
+++ /dev/null
@@ -1,64 +0,0 @@
-namespace java.swift org.apache.curator.x.rpc.idl.event
-namespace cpp org.apache.curator
-
-include "curator.thrift"
-
-enum CuratorEventType {
-  CREATE, DELETE, EXISTS, GET_DATA, SET_DATA, CHILDREN, SYNC, GET_ACL, SET_ACL, WATCHED, CLOSING
-}
-
-enum EventType {
-  None, NodeCreated, NodeDeleted, NodeDataChanged, NodeChildrenChanged
-}
-
-enum KeeperState {
-  Unknown, Disconnected, NoSyncConnected, SyncConnected, AuthFailed, ConnectedReadOnly, SaslAuthenticated, Expired
-}
-
-struct id {
-  1: string scheme;
-  2: string id;
-}
-
-struct Stat {
-  1: i64 czxid;
-  2: i64 mzxid;
-  3: i64 ctime;
-  4: i64 mtime;
-  5: i32 version;
-  6: i32 cversion;
-  7: i32 aversion;
-  8: i64 ephemeralOwner;
-  9: i32 dataLength;
-  10: i32 numChildren;
-  11: i64 pzxid;
-}
-
-struct WatchedEvent {
-  1: KeeperState keeperState;
-  2: EventType eventType;
-  3: string path;
-}
-
-struct Acl {
-  1: i32 perms;
-  2: id id;
-}
-
-struct CuratorEvent {
-  1: curator.CuratorProjection projection;
-  2: CuratorEventType type;
-  3: i32 resultCode;
-  4: string path;
-  5: string context;
-  6: Stat stat;
-  7: binary data;
-  8: string name;
-  9: list<string> children;
-  10: list<Acl> aCLList;
-  11: WatchedEvent watchedEvent;
-}
-
-service CuratorEventService {
-  CuratorEvent getNextEvent();
-}

http://git-wip-us.apache.org/repos/asf/curator/blob/cd3dbdcb/curator-x-rpc/src/main/thrift/curator.thrift
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/thrift/curator.thrift b/curator-x-rpc/src/main/thrift/curator.thrift
index 7973580..8b7ffc3 100644
--- a/curator-x-rpc/src/main/thrift/curator.thrift
+++ b/curator-x-rpc/src/main/thrift/curator.thrift
@@ -1,4 +1,4 @@
-namespace java.swift org.apache.curator.x.rpc.idl.projection
+namespace java.swift org.apache.curator
 namespace cpp org.apache.curator
 
 
@@ -6,6 +6,18 @@ enum CreateMode {
   PERSISTENT, PERSISTENT_SEQUENTIAL, EPHEMERAL, EPHEMERAL_SEQUENTIAL
 }
 
+enum CuratorEventType {
+  CREATE, DELETE, EXISTS, GET_DATA, SET_DATA, CHILDREN, SYNC, GET_ACL, SET_ACL, WATCHED, CLOSING
+}
+
+enum EventType {
+  None, NodeCreated, NodeDeleted, NodeDataChanged, NodeChildrenChanged
+}
+
+enum KeeperState {
+  Unknown, Disconnected, NoSyncConnected, SyncConnected, AuthFailed, ConnectedReadOnly, SaslAuthenticated, Expired
+}
+
 struct CreateSpec {
   1: string path;
   2: string asyncId;
@@ -24,8 +36,53 @@ struct CuratorProjection {
 struct CuratorProjectionSpec {
 }
 
+struct id {
+  1: string scheme;
+  2: string id;
+}
+
+struct Stat {
+  1: i64 czxid;
+  2: i64 mzxid;
+  3: i64 ctime;
+  4: i64 mtime;
+  5: i32 version;
+  6: i32 cversion;
+  7: i32 aversion;
+  8: i64 ephemeralOwner;
+  9: i32 dataLength;
+  10: i32 numChildren;
+  11: i64 pzxid;
+}
+
+struct WatchedEvent {
+  1: KeeperState keeperState;
+  2: EventType eventType;
+  3: string path;
+}
+
+struct Acl {
+  1: i32 perms;
+  2: id id;
+}
+
+struct CuratorEvent {
+  1: CuratorProjection projection;
+  2: CuratorEventType type;
+  3: i32 resultCode;
+  4: string path;
+  5: string context;
+  6: Stat stat;
+  7: binary data;
+  8: string name;
+  9: list<string> children;
+  10: list<Acl> aCLList;
+  11: WatchedEvent watchedEvent;
+}
+
 service CuratorService {
   void closeCuratorProjection(1: CuratorProjection projection);
   string create(1: CuratorProjection projection, 2: CreateSpec createSpec);
+  CuratorEvent getNextEvent();
   CuratorProjection newCuratorProjection(1: CuratorProjectionSpec spec);
 }