Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
W
wendelin.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Joshua
wendelin.core
Commits
769b8f4c
Commit
769b8f4c
authored
Dec 12, 2019
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
fdc76cf4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
3 deletions
+41
-3
lib/zodb.py
lib/zodb.py
+1
-0
wcfs/internal/_wcfs.pyx
wcfs/internal/_wcfs.pyx
+40
-3
No files found.
lib/zodb.py
View file @
769b8f4c
...
...
@@ -115,6 +115,7 @@ def _deactivate_bucket(bucket):
# zconn_at returns tid as of which ZODB connection is viewing the database.
def
zconn_at
(
zconn
):
# -> tid
assert
isinstance
(
zconn
,
ZODB
.
Connection
.
Connection
)
# XXX assert zconn is opened
# ZODB5 uses MVCC uniformly
if
zmajor
>=
5
:
...
...
wcfs/internal/_wcfs.pyx
View file @
769b8f4c
...
...
@@ -93,11 +93,22 @@ cdef extern from "wcfs.h" namespace "wcfs" nogil:
pair
[
Conn
,
error
]
connect
(
Tid
at
)
cppclass
_Conn
:
error
close
()
pair
[
FileH
,
error
]
open
(
Oid
foid
)
error
close
()
cppclass
Conn
(
refptr
[
_Conn
]):
# Conn.X = Conn->X in C++
error
close
"_ptr()->close"
()
pair
[
FileH
,
error
]
open
"_ptr()->open"
(
Oid
foid
)
error
close
"_ptr()->close"
()
cppclass
_FileH
:
# XXX add mmap?
pass
cppclass
FileH
(
refptr
[
_FileH
]):
# FileH.X = FileH->X in C++
# XXX add mmap?
pass
cdef
class
PyWCFS
:
...
...
@@ -132,12 +143,32 @@ cdef class PyConn:
def
close
(
PyConn
pywconn
):
with
nogil
:
err
=
pywconn
.
wconn
.
close
(
)
err
=
wconn_close_pyexc
(
pywconn
.
wconn
)
if
err
!=
nil
:
raise
pyerr
(
err
)
def
open
(
PyConn
pywconn
,
pyfoid
):
# -> FileH
cdef
Oid
foid
=
u64
(
pyfoid
)
with
nogil
:
_
=
wconn_open_pyexc
(
pywconn
.
wconn
,
foid
)
wfileh
=
_
.
first
err
=
_
.
second
if
err
!=
nil
:
raise
pyerr
(
err
)
cdef
PyFileH
pywfileh
=
PyFileH
.
__new__
(
PyFileH
)
pywfileh
.
wfileh
=
wfileh
return
pywfileh
# XXX resync
cdef
class
PyFileH
:
cdef
FileH
wfileh
def
__dealloc__
(
PyFileH
pywfileh
):
pywfileh
.
wfileh
=
nil
# ----------------------------------------
cdef
class
PyWatchLink
:
cdef
WatchLink
wlink
...
...
@@ -267,6 +298,12 @@ cdef nogil:
pair
[
Conn
,
error
]
wcfs_connect_pyexc
(
WCFS
*
wcfs
,
Tid
at
)
except
+
topyexc
:
return
wcfs
.
connect
(
at
)
error
wconn_close_pyexc
(
Conn
wconn
)
except
+
topyexc
:
return
wconn
.
close
()
pair
[
FileH
,
error
]
wconn_open_pyexc
(
Conn
wconn
,
Oid
foid
)
except
+
topyexc
:
return
wconn
.
open
(
foid
)
error
wlink_close_pyexc
(
WatchLink
wlink
)
except
+
topyexc
:
return
wlink
.
close
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment