Beispiel #1
0
 public static bool FLEncoder_WriteKey(FLEncoder *encoder, string str)
 {
     using (var str_ = new C4String(str)) {
         return(NativeRaw.FLEncoder_WriteKey(encoder, (FLSlice)str_.AsFLSlice()));
     }
 }
Beispiel #2
0
 public static bool c4doc_selectRevision(C4Document *doc, string revID, bool withBody, C4Error *outError)
 {
     using (var revID_ = new C4String(revID)) {
         return(NativeRaw.c4doc_selectRevision(doc, revID_.AsFLSlice(), withBody, outError));
     }
 }
Beispiel #3
0
 public static bool c4doc_selectCommonAncestorRevision(C4Document *doc, string rev1ID, string rev2ID)
 {
     using (var rev1ID_ = new C4String(rev1ID))
         using (var rev2ID_ = new C4String(rev2ID)) {
             return(NativeRaw.c4doc_selectCommonAncestorRevision(doc, rev1ID_.AsFLSlice(), rev2ID_.AsFLSlice()));
         }
 }
Beispiel #4
0
 public static bool c4db_purgeDoc(C4Database *database, string docID, C4Error *outError)
 {
     using (var docID_ = new C4String(docID)) {
         return(NativeRaw.c4db_purgeDoc(database, docID_.AsFLSlice(), outError));
     }
 }
Beispiel #5
0
 public static long c4doc_getExpiration(C4Database *db, string docId)
 {
     using (var docId_ = new C4String(docId)) {
         return(NativeRaw.c4doc_getExpiration(db, docId_.AsFLSlice()));
     }
 }
Beispiel #6
0
        private C4Document *ForceInsert(C4Database *db, string docID, string[] history, FLSlice body, C4RevisionFlags flags, C4Error *error = null)
        {
            LiteCoreBridge.Check(err => Native.c4db_beginTransaction(db, err));
            var c4History = new C4String[history.Length];
            var success   = false;

            try {
                var i            = 0;
                var sliceHistory = new FLSlice[history.Length];
                foreach (var entry in history)
                {
                    var c4Str = new C4String(entry);
                    c4History[i]      = c4Str;
                    sliceHistory[i++] = c4Str.AsFLSlice();
                }

                using (var docID_ = new C4String(docID))
                {
                    fixed(FLSlice *sliceHistory_ = sliceHistory)
                    {
                        var rq = new C4DocPutRequest
                        {
                            docID            = docID_.AsFLSlice(),
                            existingRevision = true,
                            allowConflict    = true,
                            history          = sliceHistory_,
                            historyCount     = (ulong)history.Length,
                            body             = body,
                            revFlags         = flags,
                            remoteDBID       = _remoteDocID,
                            save             = true
                        };

                        C4Document *doc;

                        if (error != null)
                        {
                            var local = rq;
                            doc = Native.c4doc_put(db, &local, null, error);
                        }
                        else
                        {
                            doc = (C4Document *)LiteCoreBridge.Check(err =>
                            {
                                var local = rq;
                                return(Native.c4doc_put(db, &local, null, err));
                            });
                        }

                        success = true;
                        return(doc);
                    }
                }
            } finally {
                foreach (var entry in c4History)
                {
                    entry.Dispose();
                }

                LiteCoreBridge.Check(err => Native.c4db_endTransaction(db, success, err));
            }
        }
Beispiel #7
0
 public static int c4doc_purgeRevision(C4Document *doc, string revID, C4Error *outError)
 {
     using (var revID_ = new C4String(revID)) {
         return(NativeRaw.c4doc_purgeRevision(doc, revID_.AsFLSlice(), outError));
     }
 }
 public static void c4socket_closeRequested(C4Socket *socket, int status, string message)
 {
     using (var message_ = new C4String(message)) {
         NativeRaw.c4socket_closeRequested(socket, status, message_.AsFLSlice());
     }
 }
Beispiel #9
0
 public static bool c4repl_isValidDatabaseName(string dbName)
 {
     using (var dbName_ = new C4String(dbName)) {
         return(NativeRaw.c4repl_isValidDatabaseName(dbName_.AsFLSlice()));
     }
 }
Beispiel #10
0
 public static C4Error c4error_make(C4ErrorDomain domain, int code, string message)
 {
     using (var message_ = new C4String(message)) {
         return(NativeRaw.c4error_make(domain, code, message_.AsFLSlice()));
     }
 }
Beispiel #11
0
 public static bool c4repl_isDocumentPending(C4Replicator *repl, string docID, C4Error *outErr)
 {
     using (var docID_ = new C4String(docID)) {
         return(NativeRaw.c4repl_isDocumentPending(repl, docID_.AsFLSlice(), outErr));
     }
 }
Beispiel #12
0
 public static void c4slog(C4LogDomain *domain, C4LogLevel level, string msg)
 {
     using (var msg_ = new C4String(msg)) {
         NativeRaw.c4slog(domain, level, msg_.AsFLSlice());
     }
 }
Beispiel #13
0
 public static C4QueryEnumerator *c4query_run(C4Query *query, C4QueryOptions *options, string encodedParameters, C4Error *outError)
 {
     using (var encodedParameters_ = new C4String(encodedParameters)) {
         return(NativeRaw.c4query_run(query, options, encodedParameters_.AsFLSlice(), outError));
     }
 }
Beispiel #14
0
 public static C4Query *c4query_new(C4Database *database, string expression, C4Error *error)
 {
     using (var expression_ = new C4String(expression)) {
         return(NativeRaw.c4query_new(database, expression_.AsFLSlice(), error));
     }
 }
Beispiel #15
0
 public static bool c4doc_isOldMetaProperty(string prop)
 {
     using (var prop_ = new C4String(prop)) {
         return(NativeRaw.c4doc_isOldMetaProperty(prop_.AsFLSlice()));
     }
 }
Beispiel #16
0
 public static bool c4address_fromURL(string url, C4Address *address, FLSlice *dbName)
 {
     using (var url_ = new C4String(url)) {
         return(NativeRaw.c4address_fromURL(url_.AsFLSlice(), address, dbName));
     }
 }
 public static bool c4listener_shareDB(C4Listener *listener, string name, C4Database *db, C4Error *outError)
 {
     using (var name_ = new C4String(name)) {
         return(NativeRaw.c4listener_shareDB(listener, name_.AsFLSlice(), db, outError));
     }
 }
Beispiel #18
0
 public static bool c4db_setCookie(C4Database *db, string setCookieHeader, string fromHost, string fromPath, C4Error *outError)
 {
     using (var setCookieHeader_ = new C4String(setCookieHeader))
         using (var fromHost_ = new C4String(fromHost))
             using (var fromPath_ = new C4String(fromPath)) {
                 return(NativeRaw.c4db_setCookie(db, setCookieHeader_.AsFLSlice(), fromHost_.AsFLSlice(), fromPath_.AsFLSlice(), outError));
             }
 }
Beispiel #19
0
 public static bool c4db_deleteIndex(C4Database *database, string name, C4Error *outError)
 {
     using (var name_ = new C4String(name)) {
         return(NativeRaw.c4db_deleteIndex(database, name_.AsFLSlice(), outError));
     }
 }
Beispiel #20
0
 internal FLSliceResult JSON2Fleece(string body)
 {
     using (var body_ = new C4String(body)) {
         return(JSON2Fleece(body_.AsFLSlice()));
     }
 }
Beispiel #21
0
 public static bool c4doc_resolveConflict(C4Document *doc, string winningRevID, string losingRevID, byte[] mergedBody, C4RevisionFlags mergedFlags, C4Error *error)
 {
     using (var winningRevID_ = new C4String(winningRevID))
         using (var losingRevID_ = new C4String(losingRevID))
             fixed(byte *mergedBody_ = mergedBody)
             {
                 return(NativeRaw.c4doc_resolveConflict(doc, winningRevID_.AsFLSlice(), losingRevID_.AsFLSlice(), new FLSlice(mergedBody_, mergedBody == null ? 0 : (ulong)mergedBody.Length), mergedFlags, error));
             }
 }
Beispiel #22
0
        // Read a file that contains a JSON document per line. Every line becomes a document.
        protected uint ImportJSONLines(string path, TimeSpan timeout, bool verbose)
        {
            if (verbose)
            {
                WriteLine($"Reading {path}...");
            }

            var  st      = Stopwatch.StartNew();
            uint numDocs = 0;

            LiteCoreBridge.Check(err => Native.c4db_beginTransaction(Db, err));
            try {
                ReadFileByLines(path, line => {
                    C4Error error;
                    var body = NativeRaw.c4db_encodeJSON(Db, (FLSlice)line, &error);
                    ((long)body.buf).Should().NotBe(0, "because otherwise the encode failed");

                    var docID = (numDocs + 1).ToString("D7");

                    // Save document:
                    using (var docID_ = new C4String(docID)) {
                        var rq = new C4DocPutRequest {
                            docID = docID_.AsFLSlice(),
                            body  = (FLSlice)body,
                            save  = true
                        };
                        var doc = (C4Document *)LiteCoreBridge.Check(err => {
                            var localRq = rq;
                            return(Native.c4doc_put(Db, &localRq, null, err));
                        });
                        Native.c4doc_release(doc);
                    }

                    Native.FLSliceResult_Release(body);
                    ++numDocs;
                    if (numDocs % 1000 == 0 && st.Elapsed >= timeout)
                    {
                        Console.Write($"Stopping JSON import after {st.Elapsed.TotalSeconds:F3} sec ");
                        return(false);
                    }

                    if (verbose && numDocs % 10000 == 0)
                    {
                        Console.Write($"{numDocs} ");
                    }

                    return(true);
                });

                if (verbose)
                {
                    WriteLine("Committing...");
                }
            } finally {
                LiteCoreBridge.Check(err => Native.c4db_endTransaction(Db, true, err));
            }

            if (verbose)
            {
                st.PrintReport("Importing", numDocs, "doc", _output);
            }

            return(numDocs);
        }
Beispiel #23
0
 public static bool c4doc_setExpiration(C4Database *db, string docId, long timestamp, C4Error *outError)
 {
     using (var docId_ = new C4String(docId)) {
         return(NativeRaw.c4doc_setExpiration(db, docId_.AsFLSlice(), timestamp, outError));
     }
 }
 public static bool c4raw_put(C4Database *database, string storeName, string key, string meta, string body, C4Error *outError)
 {
     using (var storeName_ = new C4String(storeName))
         using (var key_ = new C4String(key))
             using (var meta_ = new C4String(meta))
                 using (var body_ = new C4String(body)) {
                     return(NativeRaw.c4raw_put(database, storeName_.AsFLSlice(), key_.AsFLSlice(), meta_.AsFLSlice(), body_.AsFLSlice(), outError));
                 }
 }
Beispiel #25
0
 public static C4Document *c4doc_get(C4Database *database, string docID, bool mustExist, C4Error *outError)
 {
     using (var docID_ = new C4String(docID)) {
         return(NativeRaw.c4doc_get(database, docID_.AsFLSlice(), mustExist, outError));
     }
 }
 public static C4Database *c4db_open(string path, C4DatabaseConfig *config, C4Error *outError)
 {
     using (var path_ = new C4String(path)) {
         return(NativeRaw.c4db_open(path_.AsFLSlice(), config, outError));
     }
 }
Beispiel #27
0
 public static bool c4doc_selectNextPossibleAncestorOf(C4Document *doc, string revID)
 {
     using (var revID_ = new C4String(revID)) {
         return(NativeRaw.c4doc_selectNextPossibleAncestorOf(doc, revID_.AsFLSlice()));
     }
 }
 public static bool c4db_deleteAtPath(string dbPath, C4Error *outError)
 {
     using (var dbPath_ = new C4String(dbPath)) {
         return(NativeRaw.c4db_deleteAtPath(dbPath_.AsFLSlice(), outError));
     }
 }
Beispiel #29
0
 public static uint c4rev_getGeneration(string revID)
 {
     using (var revID_ = new C4String(revID)) {
         return(NativeRaw.c4rev_getGeneration(revID_.AsFLSlice()));
     }
 }
Beispiel #30
0
 public static FLMutableDict *FLMutableDict_GetMutableDict(FLMutableDict *x, string key)
 {
     using (var key_ = new C4String(key)) {
         return(NativeRaw.FLMutableDict_GetMutableDict(x, (FLSlice)key_.AsFLSlice()));
     }
 }