pvxslibs 1.3.2a1__tar.gz → 1.3.3a1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pvxslibs might be problematic. Click here for more details.
- {pvxslibs-1.3.2a1/python/pvxslibs.egg-info → pvxslibs-1.3.3a1}/PKG-INFO +1 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/configure/CONFIG_PVXS_VERSION +3 -2
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupconfigprocessor.cpp +1 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupprocessorcontext.cpp +3 -5
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupsource.cpp +1 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupsourcehooks.cpp +29 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvalink_lset.cpp +1 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/qsrvpvt.h +1 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/singlesource.cpp +1 -1
- pvxslibs-1.3.3a1/pyproject.toml +8 -0
- pvxslibs-1.3.3a1/python/pvxslibs/ioc.py +10 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1/python/pvxslibs.egg-info}/PKG-INFO +1 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs.egg-info/SOURCES.txt +1 -0
- pvxslibs-1.3.3a1/python/pvxslibs.egg-info/requires.txt +2 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/client.cpp +18 -12
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/clientconn.cpp +15 -2
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/clientimpl.h +9 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/clientmon.cpp +1 -1
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/datafmt.cpp +16 -13
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/serverconn.cpp +29 -19
- pvxslibs-1.3.2a1/pyproject.toml +0 -2
- pvxslibs-1.3.2a1/python/pvxslibs.egg-info/requires.txt +0 -2
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/COPYRIGHT +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/LICENSE +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/MANIFEST.in +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/README.md +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/LICENSE +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/arc4random.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/buffer.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/buffer_iocp.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent_async.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent_filter.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent_mbedtls.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent_openssl.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent_pair.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent_ratelim.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent_sock.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/bufferevent_ssl.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/changelist-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/cmake/VersionViaGit.cmake +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/compat/sys/queue.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/defer-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/devpoll.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/epoll.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/epoll_sub.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/epolltable-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evbuffer-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evconfig-private.h.cmake +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evdns.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/event-config.h.cmake +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/event-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/event.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/event_iocp.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/event_tagging.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evmap-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evmap.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evport.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evrpc-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evrpc.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evsignal-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evthread-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evthread.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evthread_pthread.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evthread_win32.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evutil.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evutil_rand.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/evutil_time.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/ht-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/http-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/http.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/evdns.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/buffer.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/buffer_compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/bufferevent.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/bufferevent_compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/bufferevent_ssl.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/bufferevent_struct.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/dns.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/dns_compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/dns_struct.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/event.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/event_compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/event_struct.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/http.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/http_compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/http_struct.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/keyvalq_struct.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/listener.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/rpc.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/rpc_compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/rpc_struct.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/tag.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/tag_compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/thread.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/util.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/visibility.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/watch.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/event2/ws.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/evhttp.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/evrpc.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/include/evutil.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/iocp-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/ipv6-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/kqueue-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/kqueue.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/listener.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/log-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/log.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/mbedtls-compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/minheap-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/mm-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/openssl-compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/poll.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/ratelim-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/select.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/sha1.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/sha1.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/signal.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/signalfd.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/ssl-compat.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/strlcpy-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/strlcpy.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/time-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/util-internal.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/watch.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/wepoll.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/wepoll.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/win32select.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/bundle/libevent/ws.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/channel.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/channel.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/credentials.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/credentials.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/dbentry.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/dberrormessage.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/dberrormessage.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/dbeventcontextdeleter.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/dblocker.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/dbmanylocker.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/demo.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/dummygroup.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/dummysingle.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/field.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/field.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/fieldconfig.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/fielddefinition.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/fielddefinition.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/fieldname.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/fieldname.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/fieldnamecomponent.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/fieldsubscriptionctx.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/fieldsubscriptionctx.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/group.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/group.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupconfig.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupconfigprocessor.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupdefinition.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupprocessorcontext.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupsource.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/groupsrcsubscriptionctx.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/imagedemo.c +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/iochooks.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/iocshargument.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/iocshcommand.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/iocshindex.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/iocsource.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/iocsource.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/localfieldlog.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/localfieldlog.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvalink.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvalink.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvalink_channel.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvalink_jlif.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvalink_link.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvxs/iochooks.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvxs3x.dbd +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/pvxs7x.dbd +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/securityclient.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/securityclient.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/securitylogger.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/singlesource.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/singlesourcehooks.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/singlesrcsubscriptionctx.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/singlesrcsubscriptionctx.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/subscriptionctx.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/typeutils.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/typeutils.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/ioc/yajlcallbackhandler.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs/__init__.py +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs/lib/__init__.py +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs/path.py +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs/test/__init__.py +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs/test/test_load.py +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs/version.py +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs.egg-info/dependency_links.txt +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs.egg-info/not-zip-safe +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/python/pvxslibs.egg-info/top_level.txt +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/setup.cfg +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/setup.py +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/bitmask.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/bitmask.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/clientdiscover.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/clientget.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/clientintrospect.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/clientreq.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/config.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/conn.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/conn.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/data.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/dataencode.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/dataimpl.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/describe.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/describe.h@ +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/evhelper.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/evhelper.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/log.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/nt.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/os/WIN32/osdSockExt.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/os/default/osdSockExt.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/osgroups.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/osiSockExt.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvaproto.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvrequest.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvrequest.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/client.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/data.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/log.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/netcommon.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/nt.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/server.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/sharedArray.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/sharedpv.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/source.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/srvcommon.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/unittest.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/util.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/version.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/pvxs/versionNum.h@ +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/server.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/serverchan.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/serverconn.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/serverget.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/serverintrospect.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/servermon.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/serversource.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/sharedarray.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/sharedpv.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/type.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/udp_collector.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/udp_collector.h +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/unittest.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/util.cpp +0 -0
- {pvxslibs-1.3.2a1 → pvxslibs-1.3.3a1}/src/utilpvt.h +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
PVXS_MAJOR_VERSION = 1
|
|
2
2
|
PVXS_MINOR_VERSION = 3
|
|
3
|
-
PVXS_MAINTENANCE_VERSION =
|
|
3
|
+
PVXS_MAINTENANCE_VERSION = 3
|
|
4
4
|
|
|
5
5
|
# Version range conditions in Makefiles
|
|
6
6
|
#
|
|
@@ -12,7 +12,8 @@ PVXS_MAINTENANCE_VERSION = 2
|
|
|
12
12
|
#
|
|
13
13
|
# ifneq ($(PVXS_X_Y_Z),YES) # PVXS != X.Y.Z
|
|
14
14
|
#
|
|
15
|
-
|
|
15
|
+
PVXS_1_3_3 = YES
|
|
16
|
+
PVXS_1_3_2 = NO
|
|
16
17
|
PVXS_1_3_1 = NO
|
|
17
18
|
PVXS_1_3_0 = NO
|
|
18
19
|
PVXS_1_2_4 = NO
|
|
@@ -225,7 +225,7 @@ void GroupConfigProcessor::defineFields(GroupDefinition& groupDefinition, const
|
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
if(fieldName.empty() && fieldConfig.info.type!=MappingInfo::Meta) {
|
|
228
|
-
fprintf(stderr, "%s.%s Error: only +type:\"meta\"
|
|
228
|
+
fprintf(stderr, "%s.%s Error: only +type:\"meta\" can be mapped at struct top\n",
|
|
229
229
|
groupName.c_str(), fieldName.c_str());
|
|
230
230
|
continue;
|
|
231
231
|
}
|
|
@@ -33,8 +33,7 @@ void GroupProcessorContext::assign(const Value& value) {
|
|
|
33
33
|
groupPvConfig.structureId = value.as<std::string>();
|
|
34
34
|
|
|
35
35
|
} else {
|
|
36
|
-
groupConfigProcessor->groupProcessingWarnings += "Unknown group option ";
|
|
37
|
-
groupConfigProcessor->groupProcessingWarnings += field;
|
|
36
|
+
groupConfigProcessor->groupProcessingWarnings += SB()<<"Unknown group option: \""<<field<<"\"\n";
|
|
38
37
|
}
|
|
39
38
|
field.clear();
|
|
40
39
|
|
|
@@ -59,7 +58,7 @@ void GroupProcessorContext::assign(const Value& value) {
|
|
|
59
58
|
} else if(tname == "const") {
|
|
60
59
|
type = MappingInfo::Const;
|
|
61
60
|
} else {
|
|
62
|
-
groupConfigProcessor->groupProcessingWarnings += SB()<<"Unknown mapping +type:\""<<tname<<"\" ignored";
|
|
61
|
+
groupConfigProcessor->groupProcessingWarnings += SB()<<"Unknown mapping +type:\""<<tname<<"\" ignored\n";
|
|
63
62
|
}
|
|
64
63
|
groupField.info.type = type;
|
|
65
64
|
|
|
@@ -82,8 +81,7 @@ void GroupProcessorContext::assign(const Value& value) {
|
|
|
82
81
|
groupField.info.cval = value;
|
|
83
82
|
|
|
84
83
|
} else {
|
|
85
|
-
groupConfigProcessor->groupProcessingWarnings += "Unknown group field option ";
|
|
86
|
-
groupConfigProcessor->groupProcessingWarnings += field + ":" + key;
|
|
84
|
+
groupConfigProcessor->groupProcessingWarnings += SB()<<"Unknown group field option: \""<<field<<":"<<key<<"\"\n";
|
|
87
85
|
}
|
|
88
86
|
key.clear();
|
|
89
87
|
}
|
|
@@ -159,7 +159,7 @@ void GroupSource::onOp(Group& group,
|
|
|
159
159
|
});
|
|
160
160
|
|
|
161
161
|
// Make a security cache for this client's connection to this group
|
|
162
|
-
// Each time the same client calls put we will
|
|
162
|
+
// Each time the same client calls put we will reuse the cached security client
|
|
163
163
|
// The security cache will be deleted when the client disconnects from this group pv
|
|
164
164
|
auto securityCache = std::make_shared<GroupSecurityCache>();
|
|
165
165
|
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
#include <iocsh.h>
|
|
17
17
|
|
|
18
18
|
#include <initHooks.h>
|
|
19
|
+
#include <iocInit.h>
|
|
20
|
+
#include <dbAccess.h>
|
|
19
21
|
|
|
20
22
|
#include <pvxs/source.h>
|
|
21
23
|
#include <pvxs/iochooks.h>
|
|
@@ -28,6 +30,9 @@
|
|
|
28
30
|
#if EPICS_VERSION_INT < VERSION_INT(7, 0, 3, 1)
|
|
29
31
|
# define iocshSetError(ret) do { (void)ret; }while(0)
|
|
30
32
|
#endif
|
|
33
|
+
#ifndef ERL_ERROR
|
|
34
|
+
# define ERL_ERROR "ERROR"
|
|
35
|
+
#endif
|
|
31
36
|
|
|
32
37
|
// include last to avoid clash of #define printf with other headers
|
|
33
38
|
#include <epicsStdio.h>
|
|
@@ -42,7 +47,6 @@ namespace ioc {
|
|
|
42
47
|
static
|
|
43
48
|
void dbLoadGroupCmd(const char* jsonFileName, const char *macros) {
|
|
44
49
|
iocshSetError(!!dbLoadGroup(jsonFileName, macros));
|
|
45
|
-
GroupConfigProcessor().loadConfigFiles();
|
|
46
50
|
}
|
|
47
51
|
|
|
48
52
|
/**
|
|
@@ -96,6 +100,30 @@ const auto dbLoadGroupMsg =
|
|
|
96
100
|
|
|
97
101
|
long dbLoadGroup(const char* jsonFilename, const char* macros) {
|
|
98
102
|
try {
|
|
103
|
+
/* getIocState() introduced to the 3.15 branch in R3.15.8
|
|
104
|
+
* 7.0 branch in R7.0.4
|
|
105
|
+
*/
|
|
106
|
+
#if EPICS_VERSION_INT >= VERSION_INT(7, 0, 4, 0) \
|
|
107
|
+
|| (EPICS_VERSION_INT < VERSION_INT(7, 0, 0, 0) && EPICS_VERSION_INT >= VERSION_INT(3, 15, 8, 0))
|
|
108
|
+
if(getIocState() != iocVoid)
|
|
109
|
+
{
|
|
110
|
+
fprintf(stderr,
|
|
111
|
+
ERL_ERROR " dbLoadGroup() not allowed in current IOC state (%d).\n"
|
|
112
|
+
" Hint: Move before iocInit()\n",
|
|
113
|
+
getIocState()
|
|
114
|
+
);
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
#else
|
|
118
|
+
if(interruptAccept)
|
|
119
|
+
{
|
|
120
|
+
fprintf(stderr,
|
|
121
|
+
ERL_ERROR " dbLoadGroup() not allowed in current IOC state.\n"
|
|
122
|
+
" Hint: Move before iocInit()\n");
|
|
123
|
+
return 1;
|
|
124
|
+
}
|
|
125
|
+
#endif
|
|
126
|
+
|
|
99
127
|
if (!jsonFilename || !jsonFilename[0]) {
|
|
100
128
|
fprintf(stderr, "%s\n"
|
|
101
129
|
"Error: Missing required JSON filename\n", dbLoadGroupMsg);
|
|
@@ -40,7 +40,7 @@ static inline void resetGroups() {}
|
|
|
40
40
|
#if EPICS_VERSION_INT >= VERSION_INT(7, 0, 4, 0)
|
|
41
41
|
# define USE_DEINIT_HOOKS
|
|
42
42
|
#endif
|
|
43
|
-
#if EPICS_VERSION_INT
|
|
43
|
+
#if EPICS_VERSION_INT >= VERSION_INT(7, 0, 8, 0)
|
|
44
44
|
# define USE_PREPARE_CLEANUP_HOOKS
|
|
45
45
|
#endif
|
|
46
46
|
|
|
@@ -304,7 +304,7 @@ void onOp(const std::shared_ptr<SingleInfo>& sInfo, const Value& valuePrototype,
|
|
|
304
304
|
});
|
|
305
305
|
|
|
306
306
|
// Make a security cache for this client's connection to this pv
|
|
307
|
-
// Each time the same client calls put we will
|
|
307
|
+
// Each time the same client calls put we will reuse the cached security client
|
|
308
308
|
// The security cache will be deleted when the client disconnects from this pv
|
|
309
309
|
auto putOperationCache = std::make_shared<PutOperationCache>();
|
|
310
310
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from epicscorelibs import ioc
|
|
4
|
+
import pvxslibs.path
|
|
5
|
+
|
|
6
|
+
if __name__ == "__main__":
|
|
7
|
+
os.environ.setdefault("PVXS_QSRV_ENABLE", "YES")
|
|
8
|
+
pvxs_dbd_load = (("pvxsIoc.dbd", pvxslibs.path.dbd_path), )
|
|
9
|
+
pvxs_dso_load = ("pvxslibs.lib.pvxsIoc", )
|
|
10
|
+
ioc.main(extra_dbd_load=pvxs_dbd_load, extra_dso_load=pvxs_dso_load)
|
|
@@ -798,7 +798,7 @@ void ContextImpl::onBeacon(const UDPManager::Beacon& msg)
|
|
|
798
798
|
cur.guid = msg.guid;
|
|
799
799
|
cur.peerVersion = msg.peerVersion;
|
|
800
800
|
cur.time = now;
|
|
801
|
-
// don't trigger if sender changes as server
|
|
801
|
+
// don't trigger if sender changes as server configuration
|
|
802
802
|
// could see beacons reach us from multiple interfaces.
|
|
803
803
|
cur.sender = msg.src;
|
|
804
804
|
|
|
@@ -904,6 +904,7 @@ void procSearchReply(ContextImpl& self, const SockAddr& src, uint8_t peerVersion
|
|
|
904
904
|
chan->conn = Connection::build(self.shared_from_this(), serv);
|
|
905
905
|
|
|
906
906
|
chan->conn->pending[chan->cid] = chan;
|
|
907
|
+
chan->nSearch = 0u;
|
|
907
908
|
chan->state = Channel::Connecting;
|
|
908
909
|
|
|
909
910
|
chan->conn->createChannels();
|
|
@@ -1145,37 +1146,42 @@ void ContextImpl::tickSearch(SearchKind kind, bool poked)
|
|
|
1145
1146
|
to_wire(H, Header{CMD_SEARCH, 0, uint32_t(consumed-8u)});
|
|
1146
1147
|
}
|
|
1147
1148
|
for(auto& pair : searchDest) {
|
|
1148
|
-
auto& dest = pair.
|
|
1149
|
+
auto& dest = pair.dest.addr.family()==AF_INET ? searchTx4 : searchTx6;
|
|
1149
1150
|
|
|
1150
|
-
if(pair.
|
|
1151
|
+
if(pair.isucast) {
|
|
1151
1152
|
*pflags |= pva_search_flags::Unicast;
|
|
1152
1153
|
|
|
1153
1154
|
} else {
|
|
1154
1155
|
*pflags &= ~pva_search_flags::Unicast;
|
|
1155
1156
|
|
|
1156
|
-
dest.mcast_prep_sendto(pair.
|
|
1157
|
+
dest.mcast_prep_sendto(pair.dest);
|
|
1157
1158
|
}
|
|
1158
1159
|
|
|
1159
1160
|
int ntx = sendto(dest.sock, (char*)searchMsg.data(), consumed, 0,
|
|
1160
|
-
&pair.
|
|
1161
|
+
&pair.dest.addr->sa, pair.dest.addr.size());
|
|
1161
1162
|
|
|
1162
1163
|
if(ntx<0) {
|
|
1163
1164
|
int err = evutil_socket_geterror(dest.sock);
|
|
1164
1165
|
auto lvl = Level::Warn;
|
|
1165
|
-
if(err==EINTR || err==EPERM)
|
|
1166
|
+
if(err==EINTR || err==EPERM || !pair.lastSuccess)
|
|
1166
1167
|
lvl = Level::Debug;
|
|
1167
1168
|
log_printf(io, lvl, "Search tx %s error (%d) %s\n",
|
|
1168
|
-
pair.
|
|
1169
|
+
pair.dest.addr.tostring().c_str(), err, evutil_socket_error_to_string(err));
|
|
1170
|
+
pair.lastSuccess = false;
|
|
1169
1171
|
|
|
1170
1172
|
} else if(unsigned(ntx)<consumed) {
|
|
1171
|
-
log_warn_printf(io, "Search truncated %u < %u",
|
|
1173
|
+
log_warn_printf(io, "Search tx truncated %u < %u",
|
|
1172
1174
|
unsigned(ntx), unsigned(consumed));
|
|
1173
1175
|
|
|
1174
1176
|
} else {
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1177
|
+
auto lvl = Level::Info;
|
|
1178
|
+
if(pair.lastSuccess)
|
|
1179
|
+
lvl = Level::Debug;
|
|
1180
|
+
log_hex_printf(io, lvl, (char*)searchMsg.data(), consumed,
|
|
1181
|
+
"Search tx %s %s\n",
|
|
1182
|
+
std::string(SB()<<pair.dest).c_str(),
|
|
1183
|
+
pair.isucast ? "ucast" : "bcast");
|
|
1184
|
+
pair.lastSuccess = true;
|
|
1179
1185
|
}
|
|
1180
1186
|
}
|
|
1181
1187
|
*pflags |= 0x80; // TCP search is always "unicast"
|
|
@@ -71,8 +71,16 @@ void Connection::startConnecting()
|
|
|
71
71
|
timeval tmo(totv(context->effective.tcpTimeout));
|
|
72
72
|
bufferevent_set_timeouts(bev.get(), &tmo, &tmo);
|
|
73
73
|
|
|
74
|
-
if(bufferevent_socket_connect(bev.get(), const_cast<sockaddr*>(&peerAddr->sa), peerAddr.size()))
|
|
75
|
-
|
|
74
|
+
if(bufferevent_socket_connect(bev.get(), const_cast<sockaddr*>(&peerAddr->sa), peerAddr.size())) {
|
|
75
|
+
// non-blocking connect() failed immediately.
|
|
76
|
+
// try to defer notification.
|
|
77
|
+
state = Disconnected;
|
|
78
|
+
constexpr timeval immediate{0, 0};
|
|
79
|
+
if(event_add(echoTimer.get(), &immediate))
|
|
80
|
+
throw std::runtime_error(SB()<<"Unable to begin connecting or schedule deferred notification "<<peerName);
|
|
81
|
+
log_warn_printf(io, "Unable to connect() to %s\n", peerName.c_str());
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
76
84
|
|
|
77
85
|
connect(std::move(bev));
|
|
78
86
|
|
|
@@ -480,6 +488,11 @@ void Connection::tickEcho()
|
|
|
480
488
|
|
|
481
489
|
startConnecting();
|
|
482
490
|
|
|
491
|
+
}else if(state==Disconnected) {
|
|
492
|
+
// deferred notification of early connect() failure.
|
|
493
|
+
// TODO: avoid a misleading "closed by peer" error
|
|
494
|
+
bevEvent(BEV_EVENT_EOF);
|
|
495
|
+
|
|
483
496
|
} else {
|
|
484
497
|
log_debug_printf(io, "Server %s ping\n", peerName.c_str());
|
|
485
498
|
|
|
@@ -86,6 +86,7 @@ struct Connection final : public ConnBase, public std::enable_shared_from_this<C
|
|
|
86
86
|
|
|
87
87
|
// While HoldOff, the time until re-connection
|
|
88
88
|
// While Connected, periodic Echo
|
|
89
|
+
// After early connect() failure, deferred notification
|
|
89
90
|
const evevent echoTimer;
|
|
90
91
|
|
|
91
92
|
bool ready = false;
|
|
@@ -288,7 +289,14 @@ struct ContextImpl : public std::enable_shared_from_this<ContextImpl>
|
|
|
288
289
|
std::vector<uint8_t> searchMsg;
|
|
289
290
|
|
|
290
291
|
// search destination address and whether to set the unicast flag
|
|
291
|
-
|
|
292
|
+
struct SearchDest {
|
|
293
|
+
const SockEndpoint dest;
|
|
294
|
+
const bool isucast;
|
|
295
|
+
bool lastSuccess = true;
|
|
296
|
+
SearchDest(SockEndpoint dest, bool isu) :dest(dest), isucast(isu) {}
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
std::vector<SearchDest> searchDest;
|
|
292
300
|
|
|
293
301
|
size_t currentBucket = 0u;
|
|
294
302
|
// Channels where we have yet to send out an initial search request
|
|
@@ -242,7 +242,7 @@ struct SubscriptionImpl final : public OperationBase, public Subscription
|
|
|
242
242
|
loop.call([this, &ret](){
|
|
243
243
|
// really on worker
|
|
244
244
|
|
|
245
|
-
// try to
|
|
245
|
+
// try to reuse already wrapped
|
|
246
246
|
ret = external_internal.lock();
|
|
247
247
|
if(!ret) {
|
|
248
248
|
// nope, need to build a fresh one
|
|
@@ -133,19 +133,22 @@ struct FmtTree {
|
|
|
133
133
|
case TypeCode::Bool:
|
|
134
134
|
strm<<(fld.as<bool>() ? "true" : "false");
|
|
135
135
|
return;
|
|
136
|
-
|
|
137
|
-
case TypeCode::
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
136
|
+
case TypeCode::Int8:
|
|
137
|
+
case TypeCode::Int16:
|
|
138
|
+
case TypeCode::Int32:
|
|
139
|
+
case TypeCode::Int64:
|
|
140
|
+
strm<<fld.as<int64_t>();
|
|
141
|
+
return;
|
|
142
|
+
case TypeCode::UInt8:
|
|
143
|
+
case TypeCode::UInt16:
|
|
144
|
+
case TypeCode::UInt32:
|
|
145
|
+
case TypeCode::UInt64:
|
|
146
|
+
strm<<fld.as<uint64_t>();
|
|
147
|
+
return;
|
|
148
|
+
case TypeCode::Float32:
|
|
149
|
+
case TypeCode::Float64:
|
|
150
|
+
strm<<fld.as<double>();
|
|
151
|
+
return;
|
|
149
152
|
case TypeCode::String:
|
|
150
153
|
strm<<"\""<<escape(fld.as<std::string>())<<"\"";
|
|
151
154
|
return;
|
|
@@ -408,18 +408,40 @@ ServIface::ServIface(const SockAddr &addr, server::Server::Pvt *server, bool fal
|
|
|
408
408
|
server->acceptor_loop.assertInLoop();
|
|
409
409
|
auto orig_port = bind_addr.port();
|
|
410
410
|
|
|
411
|
-
sock = evsocket(bind_addr.family(), SOCK_STREAM, 0);
|
|
412
|
-
|
|
413
|
-
if(evutil_make_listen_socket_reuseable(sock.sock))
|
|
414
|
-
log_warn_printf(connsetup, "Unable to make socket reusable%s", "\n");
|
|
415
|
-
|
|
416
411
|
// try to bind to requested port, then fallback to a random port
|
|
417
412
|
while(true) {
|
|
413
|
+
|
|
414
|
+
sock = evsocket(bind_addr.family(), SOCK_STREAM, 0);
|
|
415
|
+
|
|
416
|
+
if(evutil_make_listen_socket_reuseable(sock.sock))
|
|
417
|
+
log_warn_printf(connsetup, "Unable to make socket reusable%s", "\n");
|
|
418
|
+
|
|
418
419
|
try {
|
|
419
420
|
sock.bind(bind_addr);
|
|
421
|
+
// semantics of SO_REUSEADDR on *nix allow multiple bind() to success.
|
|
422
|
+
// however, only one listen() will succeed
|
|
423
|
+
|
|
424
|
+
// added in libevent 2.1.1
|
|
425
|
+
#ifndef LEV_OPT_DISABLED
|
|
426
|
+
# define LEV_OPT_DISABLED 0
|
|
427
|
+
#endif
|
|
428
|
+
|
|
429
|
+
const int backlog = 4;
|
|
430
|
+
auto list(evconnlistener_new(server->acceptor_loop.base, onConnS, this, LEV_OPT_DISABLED|LEV_OPT_CLOSE_ON_EXEC, backlog, sock.sock));
|
|
431
|
+
if(!list) {
|
|
432
|
+
int err = evutil_socket_geterror(sock);
|
|
433
|
+
throw std::system_error(err, std::system_category());
|
|
434
|
+
}
|
|
435
|
+
listener = evlisten(__FILE__, __LINE__, list);
|
|
436
|
+
|
|
437
|
+
if(!LEV_OPT_DISABLED)
|
|
438
|
+
evconnlistener_disable(listener.get());
|
|
439
|
+
|
|
420
440
|
} catch(std::system_error& e) {
|
|
421
|
-
if(fallback && e.code().value()==SOCK_EADDRINUSE) {
|
|
422
|
-
log_debug_printf(connsetup, "Address %s in use\n",
|
|
441
|
+
if(fallback && (e.code().value()==SOCK_EADDRINUSE || e.code().value()==SOCK_EACCES)) {
|
|
442
|
+
log_debug_printf(connsetup, "Address %s in use or not permitted: %s\n",
|
|
443
|
+
bind_addr.tostring().c_str(),
|
|
444
|
+
e.what());
|
|
423
445
|
bind_addr.setPort(0);
|
|
424
446
|
fallback = false;
|
|
425
447
|
continue;
|
|
@@ -438,18 +460,6 @@ ServIface::ServIface(const SockAddr &addr, server::Server::Pvt *server, bool fal
|
|
|
438
460
|
if(orig_port && bind_addr.port() != orig_port) {
|
|
439
461
|
log_warn_printf(connsetup, "Server unable to bind port %u, falling back to %s\n", orig_port, name.c_str());
|
|
440
462
|
}
|
|
441
|
-
|
|
442
|
-
// added in libevent 2.1.1
|
|
443
|
-
#ifndef LEV_OPT_DISABLED
|
|
444
|
-
# define LEV_OPT_DISABLED 0
|
|
445
|
-
#endif
|
|
446
|
-
|
|
447
|
-
const int backlog = 4;
|
|
448
|
-
listener = evlisten(__FILE__, __LINE__,
|
|
449
|
-
evconnlistener_new(server->acceptor_loop.base, onConnS, this, LEV_OPT_DISABLED|LEV_OPT_CLOSE_ON_EXEC, backlog, sock.sock));
|
|
450
|
-
|
|
451
|
-
if(!LEV_OPT_DISABLED)
|
|
452
|
-
evconnlistener_disable(listener.get());
|
|
453
463
|
}
|
|
454
464
|
|
|
455
465
|
void ServIface::onConnS(struct evconnlistener *listener, evutil_socket_t sock, struct sockaddr *peer, int socklen, void *raw)
|
pvxslibs-1.3.2a1/pyproject.toml
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|