You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2015/10/31 22:02:42 UTC

[05/20] lucy git commit: Rework OpenIn for multi-value return.

Rework OpenIn for multi-value return.

The Go binding for Folder's OpenIn method should return a tuple of the
InStream and an error.


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

Branch: refs/heads/LUCY-282-test-index-go-pt1
Commit: b2a6e66680a09b6df82e2870c08510468e25f124
Parents: c8950d0
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Wed Oct 21 14:38:37 2015 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Fri Oct 23 16:41:42 2015 -0700

----------------------------------------------------------------------
 go/build.go            |  1 +
 go/lucy/search_test.go |  8 ++++----
 go/lucy/store.go       | 15 +++++++++++++++
 go/lucy/store_test.go  | 10 ++++++----
 4 files changed, 26 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/b2a6e666/go/build.go
----------------------------------------------------------------------
diff --git a/go/build.go b/go/build.go
index 96f01ed..b1c155d 100644
--- a/go/build.go
+++ b/go/build.go
@@ -255,6 +255,7 @@ func specClasses(parcel *cfc.Parcel) {
 
 	folderBinding := cfc.NewGoClass(parcel, "Lucy::Store::Folder")
 	folderBinding.SpecMethod("Open_Out", "OpenOut(string) (OutStream, error)")
+	folderBinding.SpecMethod("Open_In", "OpenIn(string) (InStream, error)")
 	folderBinding.Register()
 }
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/b2a6e666/go/lucy/search_test.go
----------------------------------------------------------------------
diff --git a/go/lucy/search_test.go b/go/lucy/search_test.go
index c4cd282..319f0f7 100644
--- a/go/lucy/search_test.go
+++ b/go/lucy/search_test.go
@@ -26,7 +26,7 @@ func checkQuerySerialize(t *testing.T, query Query) {
 	outStream, _ := folder.OpenOut("foo")
 	query.Serialize(outStream)
 	outStream.Close()
-	inStream := folder.OpenIn("foo")
+	inStream, _ := folder.OpenIn("foo")
 	dupe := clownfish.GetClass(query).MakeObj().(Query).Deserialize(inStream)
 	if !query.Equals(dupe) {
 		t.Errorf("Unsuccessful serialization round trip -- expected '%v', got '%v'",
@@ -404,7 +404,7 @@ func TestTopDocsBasics(t *testing.T) {
 	outstream, _ := folder.OpenOut("foo")
 	td.Serialize(outstream)
 	outstream.Close()
-	inStream := folder.OpenIn("foo")
+	inStream, _ := folder.OpenIn("foo")
 	dupe := clownfish.GetClass(td).MakeObj().(TopDocs).Deserialize(inStream)
 	if dupe.GetTotalHits() != td.GetTotalHits() {
 		t.Errorf("Failed round-trip serializetion of TopDocs")
@@ -493,7 +493,7 @@ func TestSortSpecBasics(t *testing.T) {
 	outstream, _ := folder.OpenOut("foo")
 	sortSpec.Serialize(outstream)
 	outstream.Close()
-	inStream := folder.OpenIn("foo")
+	inStream, _ := folder.OpenIn("foo")
 	dupe := clownfish.GetClass(sortSpec).MakeObj().(SortSpec).Deserialize(inStream)
 	if len(dupe.GetRules()) != len(rules) {
 		t.Errorf("Failed round-trip serializetion of SortSpec")
@@ -701,7 +701,7 @@ func TestMatchDocSerialization(t *testing.T) {
 	outstream, _ := folder.OpenOut("foo")
 	matchDoc.Serialize(outstream)
 	outstream.Close()
-	inStream := folder.OpenIn("foo")
+	inStream, _ := folder.OpenIn("foo")
 	dupe := clownfish.GetClass(matchDoc).MakeObj().(MatchDoc).Deserialize(inStream)
 	if got := dupe.GetValues(); !reflect.DeepEqual(got, values) {
 		t.Errorf("Failed round-trip serializetion of MatchDoc")

http://git-wip-us.apache.org/repos/asf/lucy/blob/b2a6e666/go/lucy/store.go
----------------------------------------------------------------------
diff --git a/go/lucy/store.go b/go/lucy/store.go
index f23241e..111347c 100644
--- a/go/lucy/store.go
+++ b/go/lucy/store.go
@@ -345,3 +345,18 @@ func (f *FolderIMP) OpenOut(path string) (retval OutStream, err error) {
 	})
 	return retval, err
 }
+
+func (f *FolderIMP) OpenIn(path string) (retval InStream, err error) {
+	err = clownfish.TrapErr(func() {
+		self := (*C.lucy_Folder)(clownfish.Unwrap(f, "f"))
+		pathC := (*C.cfish_String)(clownfish.GoToClownfish(path, unsafe.Pointer(C.CFISH_STRING), false))
+		defer C.cfish_decref(unsafe.Pointer(pathC))
+		retvalC := C.LUCY_Folder_Open_In(self, pathC)
+		if retvalC == nil {
+			cfErr := C.cfish_Err_get_error();
+			panic(clownfish.WRAPAny(unsafe.Pointer(C.cfish_incref(unsafe.Pointer(cfErr)))).(error))
+		}
+		retval = WRAPInStream(unsafe.Pointer(retvalC))
+	})
+	return retval, err
+}

http://git-wip-us.apache.org/repos/asf/lucy/blob/b2a6e666/go/lucy/store_test.go
----------------------------------------------------------------------
diff --git a/go/lucy/store_test.go b/go/lucy/store_test.go
index d75dbf0..f972c96 100644
--- a/go/lucy/store_test.go
+++ b/go/lucy/store_test.go
@@ -288,13 +288,15 @@ func TestIOStreamMisc(t *testing.T) {
 	outStream.Flush()
 	outStream.Close()
 
-	inStream := folder.OpenIn("file.dat")
+	inStream, _ := folder.OpenIn("file.dat")
 	if got := inStream.GetFilename(); got != "mydir/file.dat" {
 		t.Errorf("GetFilename: %s", got)
 	}
 }
 
 func runFolderTests(t *testing.T, folder Folder) {
+	var err error
+
 	folder.Initialize()
 	if !folder.Check() {
 		t.Errorf("Check")
@@ -307,9 +309,9 @@ func runFolderTests(t *testing.T, folder Folder) {
 	}
 	outStream.WriteBytes([]byte("hi"), 2)
 	outStream.Close()
-	inStream := folder.OpenIn("stuff/hello")
-	if inStream == nil {
-		t.Errorf("OpenIn")
+	inStream, err := folder.OpenIn("stuff/hello")
+	if inStream == nil || err != nil {
+		t.Errorf("OpenIn: %s", err)
 	}
 	inStream.Close()
 	fh := folder.OpenFileHandle("stuff/hello", 0x1) // 0x1 == FH_READ_ONLY