private static void DoOpen(C4Socket *socket, C4Address *address, C4Slice options) { var builder = new UriBuilder { Host = address->hostname.CreateString(), Scheme = address->scheme.CreateString(), Port = address->port, Path = address->path.CreateString() }; Uri uri; try { uri = builder.Uri; } catch (Exception) { Native.c4socket_closed(socket, new C4Error(C4ErrorCode.InvalidParameter)); return; } if (uri == null) { Native.c4socket_closed(socket, new C4Error(C4ErrorCode.InvalidParameter)); return; } var opts = FLSliceExtensions.ToObject(NativeRaw.FLValue_FromTrustedData((FLSlice)options)) as Dictionary <string, object>; var replicationOptions = new ReplicatorOptionsDictionary(opts); var socketWrapper = new WebSocketWrapper(uri, socket, replicationOptions); var id = Interlocked.Increment(ref _NextID); socket->nativeHandle = (void *)id; Sockets[id] = socketWrapper; socketWrapper.Start(); }
private static void SocketOpened(C4Socket *socket, C4Address *address) { try { _externalOpen?.Invoke(socket, address); } catch (Exception) { Native.c4socket_closed(socket, new C4Error(LiteCoreError.UnexpectedError)); } }
private static void SocketOpened(C4Socket *socket, C4Address *address, C4Slice options) { try { _externalOpen?.Invoke(socket, address, options); } catch (Exception e) { _error?.Invoke(socket, new Exception("Error opening to socket", e)); Native.c4socket_closed(socket, new C4Error(C4ErrorCode.UnexpectedError)); } }
private static void DoOpen(C4Socket *socket, C4Address *address, FLSlice options, void *context) { var builder = new UriBuilder { Host = address->hostname.CreateString(), Scheme = address->scheme.CreateString(), Port = address->port, Path = address->path.CreateString() }; Uri uri; try { uri = builder.Uri; } catch (Exception) { Native.c4socket_closed(socket, new C4Error(C4ErrorCode.InvalidParameter)); return; } if (uri == null) { Native.c4socket_closed(socket, new C4Error(C4ErrorCode.InvalidParameter)); return; } var opts = FLSliceExtensions.ToObject(NativeRaw.FLValue_FromData((FLSlice)options, FLTrust.Trusted)) as Dictionary <string, object>; var replicationOptions = new ReplicatorOptionsDictionary(opts); var id = Interlocked.Increment(ref _NextID); Native.c4Socket_setNativeHandle(socket, (void *)id); var socketWrapper = new WebSocketWrapper(uri, socket, replicationOptions); var replicator = GCHandle.FromIntPtr((IntPtr)context).Target as Replicator; replicator?.WatchForCertificate(socketWrapper); replicator?.CheckForCookiesToSet(socketWrapper); Sockets.AddOrUpdate(id, socketWrapper, (k, v) => socketWrapper); socketWrapper.Start(); }
public static extern bool c4address_fromURL(FLSlice url, C4Address *address, FLSlice *dbName);
public static extern bool c4repl_parseURL(C4Slice url, C4Address *address, C4String *dbName);
public static bool c4repl_parseURL(string url, C4Address *address, C4String *dbName) { using (var url_ = new C4String(url)) { return(NativeRaw.c4repl_parseURL(url_.AsC4Slice(), address, dbName)); } }
public static extern C4Socket *c4socket_fromNative(C4SocketFactory factory, void *nativeHandle, C4Address *address);
public bool c4address_fromURL(C4Slice url, C4Address *address, C4Slice *dbName) => NativeRaw.c4address_fromURL(url, address, dbName);
public C4Socket *c4socket_fromNative(C4SocketFactory factory, void *nativeHandle, C4Address *address) => Native.c4socket_fromNative(factory, nativeHandle, address);
public bool c4address_fromURL(string url, C4Address *address, C4Slice *dbName) => Native.c4address_fromURL(url, address, dbName);
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 c4address_fromURL(C4Slice url, C4Address *address, C4Slice *dbName) => Impl.c4address_fromURL(url, address, dbName);