Add support for Solaris 2.6 on sun4m builds

It is an excellent platform for catching bugs: big-endian, slow enough
that a context switch in the middle of an operation becomes a regular
occurrence, and all that on a SMP box.  Or: I just wanted to see if it
would work.

Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
Erik Boasson 2019-07-05 23:15:41 +02:00 committed by eboasson
parent 47920df65c
commit fda285e2f5
52 changed files with 1266 additions and 4197 deletions

View file

@ -0,0 +1,30 @@
export CYCLONEDDS_URI='<Internal><MinimumSocketReceiveBufferSize>250kB</></><General><MaxMessageSize>65500B</><FragmentSize>65000B</>'
set -x
gen/ddsperf -D20 -L ping pon
for x in 16 32 64 128 1024 4096 16384 ; do
gen/ddsperf -D20 -TKS -z$x -L ping pong
done
gen/ddsperf -D20 -L pub sub
for x in 16 32 64 128 1024 4096 16384 ; do
gen/ddsperf -D20 -TKS -z$x -L pub sub
done
gen/ddsperf pong & pid=$!
gen/ddsperf -D20 ping
kill $pid
wait
gen/ddsperf -TKS pong & pid=$!
for x in 16 32 64 128 1024 4096 16384 ; do
gen/ddsperf -D20 -TKS -z$x ping
done
kill $pid
wait
gen/ddsperf sub & pid=$!
gen/ddsperf -D20 pub
kill $pid
wait
gen/ddsperf -TKS sub & pid=$!
for x in 16 32 64 128 1024 4096 16384 ; do
gen/ddsperf -D20 -TKS -z$x pub
done
kill $pid
wait

View file

@ -0,0 +1,40 @@
# Solaris 2.6 / sun4m port
Building for Solaris 2.6 / sun4m, e.g., a Sun Microsystems SPARCStation 20 running Solaris 2.6,
firstly involves getting a sufficiently modern gcc onto the machine (gcc-4.3.x with GNU binutils
certainly works, but it is very well possible that older versions and/or using the Sun assembler and
linker work fine, too) and a sufficiently new gmake (3.81 should do).
Secondly, because the port relies on a custom makefile rather than "cmake", and that makefile
doesn't build the Java-based IDL preprocessor to avoid pulling in tons of dependencies, you will
need to do a build on a "normal" platform first. The makefile assumes that the required parts of
that build process are available in a "build" directory underneath the project root. Note that only
the CMake generate export.h and the ddsperf-related IDL preprocessor output is required (if other
applications are to be be built, they may require additional files).
The results are stored in a directory named "gen". After a successful build, there will be
libddsc.so and ddsperf in that directory. No attempts are made at tracking header file
dependencies. It seems unlikely that anyone would want to use such a machine as a development
machine.
The makefile expects to be run from the project root directory.
E.g., on a regular supported platform:
```
# mkdir build && cd build
# cmake ../src
# make
# cd ..
# git archive -o cdds.zip HEAD
# find build -name '*.[ch]' | xargs zip -9r cdds.zip
```
copy cdds.zip to the Solaris box, log in and:
```
# mkdir cdds && cd cdds
# unzip .../cdds.zip
# make -f ports/solaris2.6/makefile -j4
# gen/ddsperf -D20 sub & gen/ddsperf -D20 pub &
```
It takes about 10 minutes to do the build on a quad 100MHz HyperSPARC.

264
ports/solaris2.6/config.mk Normal file
View file

@ -0,0 +1,264 @@
ifeq "$(CONFIG)" ""
override CONFIG := $(shell $(dir $(lastword $(MAKEFILE_LIST)))/guess-config)
ifeq "$(CONFIG)" ""
$(error "Failed to guess config")
endif
endif
OS := $(shell echo $(CONFIG) | sed -e 's/^[^.]*\.//' -e 's/^\([^-_]*\)[-_].*/\1/')
PROC := $(shell echo $(CONFIG) | sed -e 's/^\([^.]*\)\..*/\1/')
ifeq "$(OS)" "darwin"
DDSRT = $(OS) posix
RULES = darwin
CC = clang
LD = $(CC)
OPT = -fsanitize=address #-O3 -DNDEBUG
PROF =
CPPFLAGS += -Wall -g $(OPT) $(PROF)
CFLAGS += $(CPPFLAGS) #-fno-inline
LDFLAGS += -g $(OPT) $(PROF)
X =
O = .o
A = .a
SO = .dylib
LIBPRE = lib
endif
ifeq "$(OS)" "solaris2.6"
DDSRT = $(OS) posix
RULES = unix
CC = gcc -std=gnu99 -mcpu=v8
LD = $(CC)
OPT = -O2 -DNDEBUG
PROF =
CPPFLAGS += -Wall -g $(OPT) $(PROF) -D_REENTRANT -D__EXTENSIONS__ -D__SunOS_5_6 -I$(PWD)/ports/solaris2.6/include
CFLAGS += $(CPPFLAGS)
LDFLAGS += -g $(OPT) $(PROF)
LDLIBS += -lposix4 -lsocket -lnsl -lc
X =
O = .o
A = .a
SO = .so
LIBPRE = lib
endif
ifeq "$(OS)" "linux"
DDSRT = posix
RULES = unix
CC = gcc-6.2 -std=gnu99 -fpic -mcx16
OPT = #-fsanitize=address
# CC = gcc-6.2 -std=gnu99 -fpic -mcx16
# OPT = -O3 -DNDEBUG -flto
LD = $(CC)
PROF =
CPPFLAGS += -Wall -g $(OPT) $(PROF)
CFLAGS += $(CPPFLAGS) #-fno-inline
LDFLAGS += -g $(OPT) $(PROF)
X =
O = .o
A = .a
SO = .so
LIBPRE = lib
endif
ifeq "$(OS)" "win32"
DDSRT = windows
RULES = windows
CC = cl
LD = link
# OPT = -O2 -DNDEBUG
OPT = -MDd
PROF =
CPPFLAGS = -Zi -W3 $(OPT) $(PROF) -TC # -bigobj
CFLAGS += $(CPPFLAGS)
LDFLAGS += -nologo -incremental:no -subsystem:console -debug
X = .exe
O = .obj
A = .lib
SO = .dll
LIBPRE =
# VS_VERSION=12.0
# ifeq "$(VS_VERSION)" "12.0" # This works for VS2013 + Windows 10
# VS_HOME=/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 12.0
# WINDOWSSDKDIR=/cygdrive/c/Program Files (x86)/Windows Kits/8.1
# else # This works for VS2010 + Windows 7
# VS_HOME=/cygdrive/C/Program Files (x86)/Microsoft Visual Studio 10.0
# WINDOWSSDKDIR=/cygdrive/C/Program Files (x86)/Microsoft SDKs/Windows/v7.0A
# endif
endif
ifeq "$(OS)" "wine"
export WINEDEBUG=-all
DDSRT = windows
RULES = wine
GEN = gen.wine
CC = wine cl
LD = wine link
CPPFLAGS = -nologo -W3 -TC -analyze -D_WINNT=0x0604 -Drestrict=
CFLAGS += $(CPPFLAGS)
LDFLAGS += -nologo -incremental:no -subsystem:console -debug
X = .exe
O = .obj
A = .lib
SO = .dll
LIBPRE =
endif
# use $(DDSRT) as a proxy for $(CONFIG) not matching anything
ifeq "$(DDSRT)" ""
$(error "$(CONFIG): unsupported config")
endif
# We're assuming use of cygwin, which means Windows path names can be
# obtained using "cygpath". With "-m" we get slashes (rather than
# backslashes), which all of MS' tools accept and which are far less
# troublesome in make.
ifeq "$(CC)" "cl"
N_PWD := $(shell cygpath -m '$(PWD)')
#N_VS_HOME := $(shell cygpath -m '$(VS_HOME)')
#N_WINDOWSSDKDIR := $(shell cygpath -m '$(WINDOWSSDKDIR)')
else # not Windows
N_PWD := $(PWD)
endif
# More machine- and platform-specific matters.
ifeq "$(CC)" "cl" # Windows
ifeq "$(PROC)" "x86_64"
MACHINE = -machine:X64
endif
LDFLAGS += $(MACHINE)
OBJ_OFLAG = -Fo
EXE_OFLAG = -out:
SHLIB_OFLAG = -out:
CPPFLAGS += -D_CRT_SECURE_NO_WARNINGS
# ifeq "$(VS_VERSION)" "12.0" # This works for VS2013 + Windows 10
# CPPFLAGS += '-I$(N_VS_HOME)/VC/include' '-I$(N_WINDOWSSDKDIR)/Include/um' '-I$(N_WINDOWSSDKDIR)/Include/shared'
# ifeq "$(PROC)" "x86_64"
# LDFLAGS += '-libpath:$(N_VS_HOME)/VC/lib/amd64' '-libpath:$(N_WINDOWSSDKDIR)/lib/winv6.3/um/x64'
# else
# LDFLAGS += '-libpath:$(N_VS_HOME)/VC/lib' '-libpath:$(N_WINDOWSSDKDIR)/lib/winv6.3/um/x86'
# endif
# else # This works for VS2010 + Windows 7
# CPPFLAGS += '-I$(N_VS_HOME)/VC/include' '-I$(N_WINDOWSSDKDIR)/Include'
# ifeq "$(PROC)" "x86_64"
# LDFLAGS += '-libpath:$(N_VS_HOME)/VC/lib/amd64' '-libpath:$(N_WINDOWSSDKDIR)/lib/x64'
# else
# LDFLAGS += '-libpath:$(N_VS_HOME)/VC/lib' '-libpath:$(N_WINDOWSSDKDIR)/lib'
# endif
# endif
else
ifeq "$(CC)" "wine cl"
OBJ_OFLAG =-Fo
EXE_OFLAG = -out:
SHLIB_OFLAG = -out:
CPPFLAGS += -D_CRT_SECURE_NO_WARNINGS
else # not Windows (-like)
OBJ_OFLAG = -o
EXE_OFLAG = -o
SHLIB_OFLAG = -o
ifeq "$(PROC)" "x86"
CFLAGS += -m32
LDFLAGS += -m32
endif
ifeq "$(PROC)" "x86_64"
CFLAGS += -m64
LDFLAGS += -m64
endif
endif
endif
ifeq "$(CC)" "cl"
LDFLAGS += -libpath:$(N_PWD)/gen
LIBDEP_SYS = kernel32 ws2_32
else
ifeq "$(CC)" "wine cl"
else
LDFLAGS += -L$(N_PWD)/gen
LIBDEP_SYS = kernel32 ws2_32
endif
endif
getabspath=$(abspath $1)
ifeq "$(RULES)" "darwin"
ifneq "$(findstring clang, $(CC))" ""
define make_exe
$(LD) $(LDFLAGS) $(patsubst -L%, -rpath %, $(filter -L%, $(LDFLAGS))) $(EXE_OFLAG)$@ $^ $(LDLIBS)
endef
define make_shlib
$(LD) $(LDFLAGS) $(patsubst -L%, -rpath %, $(filter -L%, $(LDFLAGS))) -dynamiclib -install_name @rpath/$(notdir $@) $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
endef
else # assume gcc
comma=,
define make_exe
$(LD) $(LDFLAGS) $(patsubst -L%, -Wl$(comma)-rpath$(comma)%, $(filter -L%, $(LDFLAGS))) $(EXE_OFLAG)$@ $^ $(LDLIBS)
endef
define make_shlib
$(LD) $(LDFLAGS) $(patsubst -L%, -Wl$(comma)-rpath$(comma)%, $(filter -L%, $(LDFLAGS))) -dynamiclib -Wl,-install_name,@rpath/$(notdir $@) $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
endef
endif
define make_archive
ar -ru $@ $?
endef
define make_dep
$(CC) -M $(CPPFLAGS) $< | sed 's|[a-zA-Z0-9_-]*\.o|gen/&|' > $@ || { rm $@ ; exit 1 ; }
endef
else
ifeq "$(RULES)" "unix"
LDLIBS += -lpthread
comma=,
define make_exe
$(LD) $(LDFLAGS) $(patsubst -L%,-Wl$(comma)-rpath$(comma)%, $(filter -L%, $(LDFLAGS))) $(EXE_OFLAG)$@ $^ $(LDLIBS)
endef
define make_shlib
$(LD) $(LDFLAGS) -Wl$(comma)--no-allow-shlib-undefined $(patsubst -L%,-Wl$(comma)-rpath$(comma)%, $(filter -L%, $(LDFLAGS))) -shared $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
endef
define make_archive
ar -ru $@ $?
endef
define make_dep
$(CC) -M $(CPPFLAGS) $< | sed 's|[a-zA-Z0-9_-]*\.o|gen/&|' > $@ || { rm $@ ; exit 1 ; }
endef
else
ifeq "$(RULES)" "windows"
define make_exe
$(LD) $(LDFLAGS) $(EXE_OFLAG)$@ $^ $(LDLIBS)
endef
define make_shlib
$(LD) $(LDFLAGS) $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
endef
define make_archive
lib $(MACHINE) /out:$@ $^
endef
define make_dep
$(CC) -E $(CPPFLAGS) $(CPPFLAGS) $< | grep "^#line.*\\\\vdds\\\\" | cut -d '"' -f 2 | sort -u | sed -e 's@\([A-Za-z]\)\:@ /cygdrive/\1@' -e 's@\\\\@/@g' -e '$$!s@$$@ \\@' -e '1s@^@$*$O: @' >$@
endef
else
ifeq "$(RULES)" "wine"
COMPILE_MANY_ATONCE=true
getabspath=$1
lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
FAKEPWD = $(call lc,z:$(subst /,\\\\,$(PWD)))
define make_exe
$(LD) $(LDFLAGS) $(EXE_OFLAG)$@ $^ $(LDLIBS)
endef
define make_shlib
$(LD) $(LDFLAGS) $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
endef
define make_archive
lib $(MACHINE) /out:$@ $^
endef
define make_dep
$(CC) -E $(CPPFLAGS) $(CPPFLAGS) $< | grep "^#line.*\\\\vdds\\\\" | cut -d '"' -f 2 | sort -u | sed -e 's@$(FAKEPWD)\(\\\\\)*@ @' -e 's@\\\\@/@g' -e '$$!s@$$@ \\@' -e '1s@^@$*$O: @' >$@
endef
else
$(error "$(OS) not covered by build macros for")
endif
endif
endif
endif
ifeq "$(GEN)" ""
GEN = gen
endif
%$O:
%$X:
%$(SO):
%.d:

52
ports/solaris2.6/guess-config Executable file
View file

@ -0,0 +1,52 @@
#!/bin/sh
s=`uname -s`
case "$s" in
[Dd]arwin)
# default to G4 for now
m=`uname -m`
case "$m" in
x86_64)
cfg="x86_64.darwin"
;;
*)
echo "guess-config: darwin: didn't recognize machine type $m - please fix" 2>&1
;;
esac
;;
[Ll]inux)
m=`uname -m`
case "$m" in
arm*)
cfg=arm.linux.6
;;
x86_64)
cfg=x86_64.linux.6
;;
*)
cfg=x86.linux.6
;;
esac
;;
[Ss]un[Oo][Ss]|[Ss]olaris)
m=`uname -m`:`uname -r`
#should check OS rev
case "$m" in
sun4m:5.6)
cfg="sparc.solaris2.6"
;;
sun4u:*)
cfg="sparcv9.solaris"
;;
*)
cfg="x86_64.solaris"
;;
esac
;;
*)
echo "guess-config: didn't recognize system type $s - please fix" 2>&1
;;
esac
[ -z "$cfg" ] && cfg="asjemenou"
echo $cfg

View file

@ -0,0 +1,8 @@
#ifndef DDSRT_FIXUP_INTTYPES_H
#define DDSRT_FIXUP_INTTYPES_H
#include_next "inttypes.h"
#define PRIuPTR "lu"
#define PRIxPTR "lx"
#endif /* DDSRT_FIXUP_INTTYPES_H */

View file

@ -0,0 +1,22 @@
#ifndef DDSRT_FIXUP_MATH_H
#define DDSRT_FIXUP_MATH_H
#include_next "math.h"
/* INFINITY, HUGE_VALF, HUGE_VALL are all standard C99, but Solaris 2.6
antedates that by a good margin and GCC's fixed-up headers don't
define it, so we do it here */
#undef HUGE_VAL
#ifdef __GNUC__
# define INFINITY (__builtin_inff ())
# define HUGE_VAL (__builtin_huge_val ())
# define HUGE_VALF (__builtin_huge_valf ())
# define HUGE_VALL (__builtin_huge_vall ())
#else
# define INFINITY 1e10000
# define HUGE_VAL 1e10000
# define HUGE_VALF 1e10000f
# define HUGE_VALL 1e10000L
#endif
#endif /* DDSRT_FIXUP_MATH_H */

View file

@ -0,0 +1,10 @@
#ifndef DDSRT_FIXUP_NETINET_IN_H
#define DDSRT_FIXUP_NETINET_IN_H
#include_next "netinet/in.h"
#ifndef INET_ADDRSTRLEN
#define INET_ADDRSTRLEN 16
#endif
#endif /* DDSRT_FIXUP_NETINET_IN_H */

View file

@ -0,0 +1,11 @@
#ifndef DDSRT_FIXUP_STDINT_H
#define DDSRT_FIXUP_STDINT_H
#include <sys/int_types.h>
#include <limits.h>
#ifndef UINT32_C
#define UINT32_C(v) (v ## U)
#endif
#endif /* DDSRT_FIXUP_STDINT_H */

View file

@ -0,0 +1,14 @@
#ifndef DDSRT_FIXUP_SYS_SOCKET_H
#define DDSRT_FIXUP_SYS_SOCKET_H
#include "netinet/in.h"
#include_next "sys/socket.h"
typedef size_t socklen_t;
struct sockaddr_storage {
sa_family_t ss_family;
struct sockaddr_in stuff;
};
#endif /* DDSRT_FIXUP_SYS_SOCKET_H */

59
ports/solaris2.6/makefile Normal file
View file

@ -0,0 +1,59 @@
.PHONY: all clean
include $(dir $(lastword $(MAKEFILE_LIST)))/config.mk
CPPFLAGS += -Isrc/core/ddsc/src -Isrc/core/ddsc/include -Isrc/core/ddsi/include -Isrc/ddsrt/include
CPPFLAGS += $(addprefix -I, $(wildcard src/ddsrt/src/*/include))
CPPFLAGS += -Ibuild/core/include -Ibuild/ddsrt/include
CPPFLAGS += -DDDSI_INCLUDE_NETWORK_PARTITIONS # -DDDSI_INCLUDE_BANDWIDTH_LIMITING -DDDSI_INCLUDE_NETWORK_CHANNELS
SHLIBS = ddsc
EXES = ddsperf
all: $(SHLIBS:%=$(GEN)/$(LIBPRE)%$(SO)) $(EXES:%=$(GEN)/%$X)
lib: $(SHLIBS:%=$(GEN)/$(LIBPRE)%$(SO))
clean:
rm -rf $(GEN)/*
LIBCDDS_SRCDIRS := src/core/ddsi/src src/core/ddsc/src src/ddsrt/src $(DDSRT:%=src/ddsrt/src/*/%)
LIBCDDS_SRC := $(filter-out %/getopt.c, $(wildcard $(LIBCDDS_SRCDIRS:%=%/*.c)))
ifeq "$(words $(DDSRT))" "2" # max = 2 ...
pct=%
XX=$(filter src/ddsrt/src/%/$(word 1, $(DDSRT))/, $(dir $(LIBCDDS_SRC)))
YY=$(patsubst %/$(word 1, $(DDSRT))/, %/$(word 2, $(DDSRT))/, $(XX))
LIBCDDS_SRC := $(filter-out $(YY:%=%$(pct)), $(LIBCDDS_SRC))
endif
$(GEN)/$(LIBPRE)ddsc$(SO): CPPFLAGS += -Dddsc_EXPORTS
$(GEN)/$(LIBPRE)ddsc$(SO): CPPFLAGS += -fPIC
ifneq "$(COMPILE_MANY_ATONCE)" "true"
$(GEN)/$(LIBPRE)ddsc$(SO): $(LIBCDDS_SRC:%.c=$(GEN)/%$O)
$(make_shlib)
else # /Fo bit is MSVC specific
$(GEN)/$(LIBPRE)ddsc$(SO): $(LIBCDDS_SRC)
xs="" ;\
for x in $(foreach x, $^, $(call getabspath, $x)) ; do \
[ $$x -nt $(GEN)/`basename $$x .c`$O ] && xs="$$xs $$x" ; \
done ; \
echo "compile: $$xs" ; \
[ -z "$$xs" ] || $(CC) $(CPPFLAGS) -MP8 -Fo.\\$(GEN)\\ -c $$xs
$(LD) $(LDFLAGS) $(SHLIB_OFLAG)$@ $(LIBCDDS_SC:%=$(GEN)/%$O) $(LDLIBS)
endif
DDSPERF_SRCDIRS := src/tools/ddsperf build/tools/ddsperf
DDSPERF_SRC := $(wildcard $(DDSPERF_SRCDIRS:%=%/*.c))
$(GEN)/ddsperf$X: LDLIBS += -L. -lddsc
$(GEN)/ddsperf$X: CPPFLAGS += -Ibuild/tools/ddsperf
$(GEN)/ddsperf$X: $(DDSPERF_SRC:%.c=%.o) | $(GEN)/$(LIBPRE)ddsc$(SO)
$(make_exe)
$(GEN)/%.STAMP: ; @[ -d $(dir $@) ] || { mkdir -p $(dir $@) ; touch $@ ; }
$(GEN)/%$O: %.c $(GEN)/%.STAMP
$(CC) $(CPPFLAGS) $(OBJ_OFLAG)$@ -c $<
$(GEN)/%.d: %.c
$(make_dep)

View file

@ -16,6 +16,15 @@
extern "C" {
#endif
typedef struct nn_udpv4mcgen_address {
/* base IPv4 MC address is ipv4, host bits are bits base .. base+count-1, this machine is bit idx */
struct in_addr ipv4;
uint8_t base;
uint8_t count;
uint8_t idx; /* must be last: then sorting will put them consecutively */
} nn_udpv4mcgen_address_t;
int ddsi_udp_init (void);
#if defined (__cplusplus)

View file

@ -62,14 +62,6 @@ typedef struct {
unsigned char address[16];
} nn_locator_t;
typedef struct nn_udpv4mcgen_address {
/* base IPv4 MC address is ipv4, host bits are bits base .. base+count-1, this machine is bit idx */
struct in_addr ipv4;
uint8_t base;
uint8_t count;
uint8_t idx; /* must be last: then sorting will put them consecutively */
} nn_udpv4mcgen_address_t;
#define NN_STATUSINFO_DISPOSE 0x1u
#define NN_STATUSINFO_UNREGISTER 0x2u
#define NN_STATUSINFO_STANDARDIZED (NN_STATUSINFO_DISPOSE | NN_STATUSINFO_UNREGISTER)

View file

@ -23,6 +23,7 @@
#include "dds/ddsi/q_config.h"
#include "dds/ddsi/q_addrset.h"
#include "dds/ddsi/q_globals.h" /* gv.mattr */
#include "dds/ddsi/ddsi_udp.h" /* nn_mc4gen_address_t */
/* So what does one do with const & mutexes? I need to take lock in a
pure function just in case some other thread is trying to change

View file

@ -41,6 +41,7 @@
#include "dds/ddsi/ddsi_serdata_default.h"
#include "dds/ddsi/ddsi_mcgroup.h"
#include "dds/ddsi/q_receive.h"
#include "dds/ddsi/ddsi_udp.h" /* nn_mc4gen_address_t */
#include "dds/ddsi/sysdeps.h"
#include "dds__whc.h"

View file

@ -28,6 +28,7 @@
#include "dds/ddsi/q_time.h"
#include "dds/ddsi/q_xmsg.h"
#include "dds/ddsi/ddsi_vendor.h"
#include "dds/ddsi/ddsi_udp.h" /* nn_mc4gen_address_t */
#include "dds/ddsi/q_config.h"
#include "dds/ddsi/q_globals.h"

View file

@ -38,16 +38,6 @@
#include "dds/ddsi/sysdeps.h"
#include "dds__whc.h"
#if __STDC_VERSION__ >= 199901L
#define POS_INFINITY_DOUBLE INFINITY
#elif defined HUGE_VAL
/* Hope for the best -- the only consequence of getting this wrong is
that T_NEVER may be printed as a fugly value instead of as +inf. */
#define POS_INFINITY_DOUBLE (HUGE_VAL + HUGE_VAL)
#else
#define POS_INFINITY_DOUBLE 1e1000
#endif
static const struct wr_prd_match *root_rdmatch (const struct writer *wr)
{
return ddsrt_avl_root (&wr_readers_treedef, &wr->readers);
@ -310,7 +300,7 @@ struct nn_xmsg *writer_hbcontrol_piggyback (struct writer *wr, const struct whc_
DDS_TRACE("heartbeat(wr "PGUIDFMT"%s) piggybacked, resched in %g s (min-ack %"PRId64"%s, avail-seq %"PRId64", xmit %"PRId64")\n",
PGUID (wr->e.guid),
*hbansreq ? "" : " final",
(hbc->tsched.v == T_NEVER) ? POS_INFINITY_DOUBLE : (double) (hbc->tsched.v - tnow.v) / 1e9,
(hbc->tsched.v == T_NEVER) ? INFINITY : (double) (hbc->tsched.v - tnow.v) / 1e9,
ddsrt_avl_is_empty (&wr->readers) ? -1 : root_rdmatch (wr)->min_seq,
ddsrt_avl_is_empty (&wr->readers) || root_rdmatch (wr)->all_have_replied_to_hb ? "" : "!",
whcst->max_seq, READ_SEQ_XMIT(wr));

View file

@ -48,14 +48,6 @@
!= 0 -- and note that it had better be 2's complement machine! */
#define TSCHED_DELETE ((int64_t) ((uint64_t) 1 << 63))
#if __STDC_VERSION__ >= 199901L
#define POS_INFINITY_DOUBLE INFINITY
#else
/* Hope for the best -- the only consequence of getting this wrong is
that T_NEVER may be printed as a fugly value instead of as +inf. */
#define POS_INFINITY_DOUBLE (HUGE_VAL + HUGE_VAL)
#endif
enum xeventkind
{
XEVK_HEARTBEAT,
@ -623,7 +615,7 @@ static void handle_xevk_heartbeat (struct nn_xpack *xp, struct xevent *ev, nn_mt
PGUID (wr->e.guid),
hbansreq ? "" : " final",
msg ? "sent" : "suppressed",
(t_next.v == T_NEVER) ? POS_INFINITY_DOUBLE : (double)(t_next.v - tnow.v) / 1e9,
(t_next.v == T_NEVER) ? INFINITY : (double)(t_next.v - tnow.v) / 1e9,
ddsrt_avl_is_empty (&wr->readers) ? (seqno_t) -1 : ((struct wr_prd_match *) ddsrt_avl_root_non_empty (&wr_readers_treedef, &wr->readers))->min_seq,
ddsrt_avl_is_empty (&wr->readers) || ((struct wr_prd_match *) ddsrt_avl_root_non_empty (&wr_readers_treedef, &wr->readers))->all_have_replied_to_hb ? "" : "!",
whcst.max_seq, READ_SEQ_XMIT(wr));

View file

@ -150,10 +150,10 @@ foreach(feature atomics cdtors environ heap ifaddrs random rusage
sockets string sync threads time md5 process)
if(EXISTS "${include_path}/dds/ddsrt/${feature}.h")
list(APPEND headers "${include_path}/dds/ddsrt/${feature}.h")
file(GLOB
file(GLOB_RECURSE
files
CONFIGURE_DEPENDS
"${include_path}/dds/ddsrt/${feature}/**.h")
"${include_path}/dds/ddsrt/${feature}/*.h")
list(APPEND headers ${files})
# Do not add any sources if a feature is not offered by the target. The
@ -193,20 +193,20 @@ foreach(feature atomics cdtors environ heap ifaddrs random rusage
# Headers that must remain private but are required by other runtime
# source files must be located in src/<feature>/dds/ddsrt.
if(IS_DIRECTORY "${source_path}/${feature}/include")
file(GLOB
file(GLOB_RECURSE
files
CONFIGURE_DEPENDS
"${source_path}/${feature}/include/**.h")
list(APPEND sources ${files})
"${source_path}/${feature}/include/*.h")
list(APPEND headers ${files})
target_include_directories(
ddsrt INTERFACE
"$<BUILD_INTERFACE:${source_path}/${feature}/include/>")
endif()
if(IS_DIRECTORY "${source_path}/${feature}/${system}")
file(GLOB
file(GLOB_RECURSE
files
CONFIGURE_DEPENDS
"${source_path}/${feature}/${system}/**.c")
"${source_path}/${feature}/${system}/*.c")
list(APPEND sources ${files})
set(system_exists TRUE)
endif()

View file

@ -16,12 +16,12 @@
#include <lwip/sockets.h>
#include <lwip/netdb.h>
#else
#include <sys/socket.h>
#include <net/if.h>
#include <netinet/in.h>
#include <stddef.h>
#include <sys/types.h>
#include <sys/select.h>
#include <sys/socket.h>
#endif
#if defined(__cplusplus)
@ -37,19 +37,32 @@ typedef int ddsrt_socket_t;
# define DDSRT_HAVE_IPV6 1
# endif
# if LWIP_DNS && LWIP_SOCKET
# define DDSRT_HAVE_DNS DDSRT_WITH_DNS
# define DDSRT_HAVE_DNS DDSRT_WITH_DNS
# define DDSRT_HAVE_GETADDRINFO DDSRT_WITH_DNS
# endif
# define DDSRT_HAVE_SSM 0
# define DDSRT_HAVE_SSM 0
# define DDSRT_HAVE_INET_NTOP 1
# define DDSRT_HAVE_INET_PTON 1
# define IFF_UP 0x1
# define IFF_BROADCAST 0x2
# define IFF_LOOPBACK 0x8
# define IFF_POINTOPOINT 0x10
# define IFF_UP 0x1
# define IFF_BROADCAST 0x2
# define IFF_LOOPBACK 0x8
# define IFF_POINTOPOINT 0x10
# define IFF_MULTICAST 0x1000
#elif __SunOS_5_6
# define DDSRT_HAVE_IPV6 0
# define DDSRT_HAVE_DNS DDSRT_WITH_DNS
# define DDSRT_HAVE_GETADDRINFO 0
# define DDSRT_HAVE_SSM 0
# define DDSRT_HAVE_INET_NTOP 0
# define DDSRT_HAVE_INET_PTON 0
#else /* LWIP_SOCKET */
# define DDSRT_HAVE_IPV6 1
# define DDSRT_HAVE_DNS DDSRT_WITH_DNS
# define DDSRT_HAVE_SSM 1
# define DDSRT_HAVE_IPV6 1
# define DDSRT_HAVE_DNS DDSRT_WITH_DNS
# define DDSRT_HAVE_GETADDRINFO DDSRT_WITH_DNS
# define DDSRT_HAVE_SSM 1
# define DDSRT_HAVE_INET_NTOP 1
# define DDSRT_HAVE_INET_PTON 1
#endif /* LWIP_SOCKET */
typedef struct iovec ddsrt_iovec_t;

View file

@ -12,8 +12,11 @@ typedef SOCKET ddsrt_socket_t;
#define DDSRT_INVALID_SOCKET (INVALID_SOCKET)
#define PRIdSOCK PRIuPTR
#define DDSRT_HAVE_IPV6 1
#define DDSRT_HAVE_DNS DDSRT_WITH_DNS
#define DDSRT_HAVE_IPV6 1
#define DDSRT_HAVE_DNS DDSRT_WITH_DNS
#define DDSRT_HAVE_GETADDRINFO DDSRT_WITH_DNS
#define DDSRT_HAVE_INET_NTOP 1
#define DDSRT_HAVE_INET_PTON 1
#if defined(NTDDI_VERSION) && \
defined(_WIN32_WINNT_WS03) && \

View file

@ -22,6 +22,8 @@
#include "dds/ddsrt/sync/freertos.h"
#elif _WIN32
#include "dds/ddsrt/sync/windows.h"
#elif __SunOS_5_6
#include "dds/ddsrt/sync/solaris2.6.h"
#else
#include "dds/ddsrt/sync/posix.h"
#endif

View file

@ -0,0 +1,44 @@
/*
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
* v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
#ifndef DDSRT_POSIX_SYNC_H
#define DDSRT_POSIX_SYNC_H
#include <stdint.h>
#include <pthread.h>
#if HAVE_LKST
#include "lkst.h"
#endif
#if defined (__cplusplus)
extern "C" {
#endif
typedef struct {
pthread_cond_t cond;
} ddsrt_cond_t;
typedef struct {
pthread_mutex_t mutex;
} ddsrt_mutex_t;
typedef struct {
pthread_mutex_t rwlock;
} ddsrt_rwlock_t;
typedef pthread_once_t ddsrt_once_t;
#define DDSRT_ONCE_INIT PTHREAD_ONCE_INIT
#if defined (__cplusplus)
}
#endif
#endif /* DDSRT_POSIX_SYNC_H */

View file

@ -165,22 +165,30 @@ void ddsrt_atomic_lifo_pushmany (ddsrt_atomic_lifo_t *head, void *first, void *l
}
#endif
#if DDSRT_HAVE_ATOMIC64
void ddsrt_atomics_init (void)
{
}
/* On platforms that don't provide 64-bit atomic operations, emulate them by hashing
the variable's address to a small set of mutexes.
void ddsrt_atomics_fini (void)
{
}
This also defines the GCC builtins on SPARCv8 for 32-bit operations. It would be
more appropriate to simply define the ddsrt_atomic_... functions properly in that
case and avoid squatting in the __sync_... namespace, but SPARCv8 support really
is just for fun and it doesn't seem worth the bother right now */
#if DDSRT_HAVE_ATOMIC64
void ddsrt_atomics_init (void) { }
void ddsrt_atomics_fini (void) { }
#else
/* Emulation by hashing the variable's address to a small set of mutexes. */
#include "dds/ddsrt/sync.h"
/* SPARCv8 depends on these mutexes already for one-shot initialisation of the ddsrt
code. Using PTHREAD_MUTEX_INITIALIZER guarantees they are properly initialized.
Once a platform shows up that defines that macro where we don't used pthread mutexes
something else will have to be done. */
#define N_MUTEXES_LG2 4
#define N_MUTEXES (1 << N_MUTEXES_LG2)
#ifndef PTHREAD_MUTEX_INITIALIZER
static ddsrt_mutex_t mutexes[N_MUTEXES];
void ddsrt_atomics_init (void)
@ -194,6 +202,20 @@ void ddsrt_atomics_fini (void)
for (int i = 0; i < N_MUTEXES; i++)
ddsrt_mutex_destroy (&mutexes[i]);
}
#else
static ddsrt_mutex_t mutexes[N_MUTEXES] = {
{ PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
{ PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
{ PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
{ PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
{ PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
{ PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
{ PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER },
{ PTHREAD_MUTEX_INITIALIZER }, { PTHREAD_MUTEX_INITIALIZER }
};
void ddsrt_atomics_init (void) { }
void ddsrt_atomics_fini (void) { }
#endif
static uint32_t atomic64_lock_index (const volatile ddsrt_atomic_uint64_t *x)
{
@ -219,7 +241,25 @@ int ddsrt_atomic_cas64 (volatile ddsrt_atomic_uint64_t *x, uint64_t exp, uint64_
}
}
uint64_t ddsrt_atomic_ld64(const volatile ddsrt_atomic_uint64_t *x)
#define DDSRT_FAKE_ATOMIC64(name, oper, ret) \
uint64_t ddsrt_atomic_##name##64_##ret (volatile ddsrt_atomic_uint64_t *x, uint64_t v) \
{ \
const uint64_t idx = atomic64_lock_index (x); \
ddsrt_mutex_lock (&mutexes[idx]); \
const uint64_t ov = x->v; \
const uint64_t nv = ov oper v; \
x->v = nv; \
ddsrt_mutex_unlock (&mutexes[idx]); \
return ret; \
}
#define DDSRT_FAKE_ATOMIC64_TRIPLET(name, oper) \
DDSRT_FAKE_ATOMIC64(name, oper, nv) \
DDSRT_FAKE_ATOMIC64(name, oper, ov) \
void ddsrt_atomic_##name##64 (volatile ddsrt_atomic_uint64_t *x, uint64_t v) { \
(void) ddsrt_atomic_##name##64_ov (x, v); \
}
uint64_t ddsrt_atomic_ld64 (const volatile ddsrt_atomic_uint64_t *x)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
@ -228,7 +268,7 @@ uint64_t ddsrt_atomic_ld64(const volatile ddsrt_atomic_uint64_t *x)
return v;
}
void ddsrt_atomic_st64(volatile ddsrt_atomic_uint64_t *x, uint64_t v)
void ddsrt_atomic_st64 (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
@ -236,136 +276,70 @@ void ddsrt_atomic_st64(volatile ddsrt_atomic_uint64_t *x, uint64_t v)
ddsrt_mutex_unlock (&mutexes[idx]);
}
void ddsrt_atomic_inc64 (volatile ddsrt_atomic_uint64_t *x)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
++x->v;
ddsrt_mutex_unlock (&mutexes[idx]);
DDSRT_FAKE_ATOMIC64_TRIPLET(add, +)
DDSRT_FAKE_ATOMIC64_TRIPLET(sub, -)
DDSRT_FAKE_ATOMIC64_TRIPLET(or, |)
DDSRT_FAKE_ATOMIC64_TRIPLET(and, &)
void ddsrt_atomic_inc64 (volatile ddsrt_atomic_uint64_t *x) {
ddsrt_atomic_add64 (x, 1);
}
uint64_t ddsrt_atomic_inc64_nv (volatile ddsrt_atomic_uint64_t *x) {
return ddsrt_atomic_add64_nv (x, 1);
}
void ddsrt_atomic_dec64 (volatile ddsrt_atomic_uint64_t *x) {
ddsrt_atomic_sub64 (x, 1);
}
uint64_t ddsrt_atomic_dec64_nv (volatile ddsrt_atomic_uint64_t *x) {
return ddsrt_atomic_sub64_nv (x, 1);
}
uint64_t ddsrt_atomic_inc64_nv (volatile ddsrt_atomic_uint64_t *x)
#undef DDSRT_FAKE_ATOMIC64_TRIPLET
#undef DDSRT_FAKE_ATOMIC64
/* SPARCv8 doesn't support any atomic operations beyond a simple atomic exchange. GCC happily
compiles the __sync_* functions into library calls, and implementing them as such will do
the trick. The rarity of SPARCv8 machines (EOL'd 2 decades ago) */
#ifdef __sparc_v8__
#define DDSRT_FAKE_SYNC(name, size, oper, ret) \
unsigned __sync_##name##_##size (volatile unsigned *x, unsigned v) \
{ \
const uint32_t idx = atomic64_lock_index ((const volatile ddsrt_atomic_uint64_t *) x); \
ddsrt_mutex_lock (&mutexes[idx]); \
const uint32_t ov = *x; \
const uint32_t nv = ov oper v; \
*x = nv; \
ddsrt_mutex_unlock (&mutexes[idx]); \
return ret; \
}
#define DDSRT_FAKE_SYNC_PAIR(name, size, oper) \
DDSRT_FAKE_SYNC(name##_and_fetch, size, oper, nv) \
DDSRT_FAKE_SYNC(fetch_and_##name, size, oper, ov)
DDSRT_FAKE_SYNC_PAIR (add, 4, +)
DDSRT_FAKE_SYNC_PAIR (sub, 4, -)
DDSRT_FAKE_SYNC_PAIR (or, 4, |)
DDSRT_FAKE_SYNC_PAIR (and, 4, &)
bool __sync_bool_compare_and_swap_4 (volatile unsigned *x, unsigned exp, unsigned des)
{
const uint32_t idx = atomic64_lock_index (x);
const uint32_t idx = atomic64_lock_index ((const volatile ddsrt_atomic_uint64_t *) x);
ddsrt_mutex_lock (&mutexes[idx]);
const uint64_t nv = ++x->v;
ddsrt_mutex_unlock (&mutexes[idx]);
return nv;
if (*x == exp)
{
*x = des;
ddsrt_mutex_unlock (&mutexes[idx]);
return true;
}
else
{
ddsrt_mutex_unlock (&mutexes[idx]);
return false;
}
}
void ddsrt_atomic_dec64 (volatile ddsrt_atomic_uint64_t *x)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
--x->v;
ddsrt_mutex_unlock (&mutexes[idx]);
}
uint64_t ddsrt_atomic_dec64_nv (volatile ddsrt_atomic_uint64_t *x)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
const uint64_t nv = --x->v;
ddsrt_mutex_unlock (&mutexes[idx]);
return nv;
}
void ddsrt_atomic_add64 (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
x->v += v;
ddsrt_mutex_unlock (&mutexes[idx]);
}
uint64_t ddsrt_atomic_add64_nv (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
const uint64_t ov = x->v;
const uint64_t nv = ov + v;
x->v = nv;
ddsrt_mutex_unlock (&mutexes[idx]);
return nv;
}
void ddsrt_atomic_sub64 (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
x->v -= v;
ddsrt_mutex_unlock (&mutexes[idx]);
}
uint64_t ddsrt_atomic_sub64_nv (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
const uint64_t ov = x->v;
const uint64_t nv = ov - v;
x->v = nv;
ddsrt_mutex_unlock (&mutexes[idx]);
return nv;
}
void ddsrt_atomic_and64 (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
x->v &= v;
ddsrt_mutex_unlock (&mutexes[idx]);
}
uint64_t ddsrt_atomic_and64_ov (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
const uint64_t ov = x->v;
const uint64_t nv = ov & v;
x->v = nv;
ddsrt_mutex_unlock (&mutexes[idx]);
return ov;
}
uint64_t ddsrt_atomic_and64_nv (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
const uint64_t ov = x->v;
const uint64_t nv = ov & v;
x->v = nv;
ddsrt_mutex_unlock (&mutexes[idx]);
return nv;
}
void ddsrt_atomic_or64 (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
x->v |= v;
ddsrt_mutex_unlock (&mutexes[idx]);
}
uint64_t ddsrt_atomic_or64_ov (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
const uint64_t ov = x->v;
const uint64_t nv = ov | v;
x->v = nv;
ddsrt_mutex_unlock (&mutexes[idx]);
return ov;
}
uint64_t ddsrt_atomic_or64_nv (volatile ddsrt_atomic_uint64_t *x, uint64_t v)
{
const uint32_t idx = atomic64_lock_index (x);
ddsrt_mutex_lock (&mutexes[idx]);
const uint64_t ov = x->v;
const uint64_t nv = ov | v;
x->v = nv;
ddsrt_mutex_unlock (&mutexes[idx]);
return nv;
}
#undef DDSRT_FAKE_SYNC_PAIR
#undef DDSRT_FAKE_SYNC
#endif /* SPARCv8 hack */
#endif /* DDSRT_HAVE_ATOMIC64 */

View file

@ -0,0 +1,100 @@
/*
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
* v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
#include <assert.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "dds/ddsrt/environ.h"
#include "dds/ddsrt/retcode.h"
extern char **environ;
static int
isenvvar(const char *name)
{
return (*name == '\0' || strchr(name, '=') != NULL) == 0;
}
dds_return_t
ddsrt_getenv(const char *name, char **value)
{
char *env;
assert(name != NULL);
assert(value != NULL);
if (!isenvvar(name))
return DDS_RETCODE_BAD_PARAMETER;
if ((env = getenv(name)) != NULL) {
*value = env;
return DDS_RETCODE_OK;
}
return DDS_RETCODE_NOT_FOUND;
}
dds_return_t
ddsrt_setenv(const char *name, const char *value)
{
/* Not MT-Safe -- but it is only used in a tests to set
CYCLONEDDS_URI, so for Solaris 2.6 support it is not worth the
bother to do a better job. Same for a bit of leakage. */
assert(name != NULL);
assert(value != NULL);
if (strlen(value) == 0)
return ddsrt_unsetenv(name);
if (!isenvvar(name))
return DDS_RETCODE_BAD_PARAMETER;
const size_t namelen = strlen (name);
const size_t entrysize = namelen + 1 + strlen (value) + 1;
char *entry = malloc (entrysize);
snprintf (entry, entrysize, "%s=%s", name, value);
size_t n = 0;
while (environ[n] != NULL)
{
if (strncmp (environ[n], name, namelen) == 0 && environ[n][namelen] == '=')
{
environ[n] = entry;
return DDS_RETCODE_OK;
}
n++;
}
environ = realloc (environ, (n + 2) * sizeof (*environ));
environ[n] = entry;
environ[n+1] = NULL;
return DDS_RETCODE_OK;
}
dds_return_t
ddsrt_unsetenv(const char *name)
{
/* Same considerations as setenv. */
assert(name != NULL);
if (!isenvvar(name))
return DDS_RETCODE_BAD_PARAMETER;
const size_t namelen = strlen (name);
size_t n = 0, idx = SIZE_MAX;
while (environ[n] != NULL)
{
if (idx > n && strncmp (environ[n], name, namelen) == 0 && environ[n][namelen] == '=')
idx = n;
n++;
}
if (idx < n)
memmove (&environ[idx], &environ[idx + 1], (n - idx) * sizeof (*environ));
return DDS_RETCODE_OK;
}

View file

@ -0,0 +1,84 @@
/*
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
* v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
#include <assert.h>
#include <errno.h>
#include "dds/ddsrt/ifaddrs.h"
#include <string.h>
#include <stdio.h>
#include "dds/ddsrt/heap.h"
#include "dds/ddsrt/retcode.h"
#include "dds/ddsrt/string.h"
extern const int *const os_supp_afs;
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/sockio.h>
#include <stdlib.h>
dds_return_t
ddsrt_getifaddrs(
ddsrt_ifaddrs_t **ret_ifap,
const int *afs)
{
int sock;
char *buf;
int32_t n;
struct ifconf ifc;
struct ifreq *ifr;
/* get interfaces */
buf = ddsrt_malloc (8192);
memset (&ifc, 0, sizeof (ifc));
ifc.ifc_len = 8192;
ifc.ifc_buf = buf;
sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (ioctl (sock, SIOCGIFCONF, (char *) &ifc) < 0)
{
perror ("ioctl (SIOCGIFCONF)");
exit (77);
}
ddsrt_ifaddrs_t **ifap, *ifa_root;
ifap = &ifa_root; ifa_root = NULL;
ifr = ifc.ifc_req;
for (n = ifc.ifc_len / sizeof (struct ifreq); --n >= 0; ifr++)
{
ddsrt_ifaddrs_t *ifa;
if (ifr->ifr_name[0] == '\0')
continue; /* Forget about anonymous network devices */
if (ifr->ifr_addr.sa_family != AF_INET) {
printf ("%s: not INET\n", ifr->ifr_name);
continue;
}
ifa = ddsrt_malloc (sizeof (*ifa));
memset (ifa, 0, sizeof (*ifa));
ifa->index = (int) (ifr - ifc.ifc_req);
ifa->flags = IFF_UP | ((strcmp(ifr->ifr_name, "lo0")==0) ? IFF_LOOPBACK : IFF_MULTICAST);
ifa->name = strdup (ifr->ifr_name);
ifa->addr = ddsrt_memdup (&ifr->ifr_addr, sizeof (struct sockaddr_in));
ifa->netmask = ddsrt_memdup (&ifr->ifr_addr, sizeof (struct sockaddr_in));
((struct sockaddr_in *) ifa->netmask)->sin_addr.s_addr = htonl (0xffffff00);
ifa->broadaddr = NULL;
ifa->next = NULL;
*ifap = ifa;
ifap = &ifa->next;
}
ddsrt_free (buf);
close (sock);
*ret_ifap = ifa_root;
return DDS_RETCODE_OK;
}

View file

@ -186,13 +186,19 @@ ddsrt_sockaddrfromstr(int af, const char *str, void *sa)
switch (af) {
case AF_INET: {
struct in_addr buf;
#if DDSRT_HAVE_INET_PTON
if (inet_pton(af, str, &buf) != 1) {
return DDS_RETCODE_BAD_PARAMETER;
} else {
memset(sa, 0, sizeof(struct sockaddr_in));
((struct sockaddr_in *)sa)->sin_family = AF_INET;
memcpy(&((struct sockaddr_in *)sa)->sin_addr, &buf, sizeof(buf));
}
#else
buf.s_addr = inet_addr (str);
if (buf.s_addr == (in_addr_t)-1) {
return DDS_RETCODE_BAD_PARAMETER;
}
#endif
memset(sa, 0, sizeof(struct sockaddr_in));
((struct sockaddr_in *)sa)->sin_family = AF_INET;
memcpy(&((struct sockaddr_in *)sa)->sin_addr, &buf, sizeof(buf));
} break;
#if DDSRT_HAVE_IPV6
case AF_INET6: {
@ -225,8 +231,16 @@ DDSRT_WARNING_GNUC_OFF(sign-conversion)
#endif
switch (((struct sockaddr *)sa)->sa_family) {
case AF_INET:
#if DDSRT_HAVE_INET_NTOP
ptr = inet_ntop(
AF_INET, &((struct sockaddr_in *)sa)->sin_addr, buf, (socklen_t)size);
#else
{
in_addr_t x = ntohl(((struct sockaddr_in *)sa)->sin_addr.s_addr);
snprintf(buf,size,"%u.%u.%u.%u",(x>>24),(x>>16)&0xff,(x>>8)&0xff,x&0xff);
ptr = buf;
}
#endif
break;
#if DDSRT_HAVE_IPV6
case AF_INET6:
@ -249,6 +263,7 @@ DDSRT_WARNING_GNUC_ON(sign-conversion)
}
#if DDSRT_HAVE_DNS
#if DDSRT_HAVE_GETADDRINFO
dds_return_t
ddsrt_gethostbyname(const char *name, int af, ddsrt_hostent_t **hentp)
{
@ -363,4 +378,23 @@ ddsrt_gethostbyname(const char *name, int af, ddsrt_hostent_t **hentp)
*hentp = hent;
return DDS_RETCODE_OK;
}
#else
dds_return_t
ddsrt_gethostbyname(const char *name, int af, ddsrt_hostent_t **hentp)
{
struct hostent hest, *he;
char buf[256];
int err;
he = gethostbyname_r (name, &hest, buf, sizeof (buf), &err);
if (he == NULL) {
return DDS_RETCODE_HOST_NOT_FOUND;
} else {
size_t size = sizeof(**hentp) + (1 * sizeof((*hentp)->addrs[0]));
*hentp = ddsrt_calloc_s(1, size);
(*hentp)->naddrs = 1;
memcpy(&(*hentp)->addrs[0], he->h_addr, he->h_length);
return DDS_RETCODE_OK;
}
}
#endif /* DDSRT_HAVE_GETADDRINFO */
#endif /* DDSRT_HAVE_DNS */

View file

@ -27,7 +27,6 @@ typedef long ddsrt_tv_sec_t;
typedef long ddsrt_tv_usec_t;
#else
typedef time_t ddsrt_tv_sec_t;
typedef suseconds_t ddsrt_tv_usec_t;
#endif
#define DDSRT_TIME_T_MAX \
@ -62,7 +61,7 @@ ddsrt_duration_to_timeval_ceil(dds_duration_t reltime, struct timeval *tv)
if (reltime < (max_nsecs - DDS_NSECS_IN_USEC - 1)) {
reltime += (DDS_NSECS_IN_USEC - 1);
tv->tv_sec = (ddsrt_tv_sec_t)(reltime / DDS_NSECS_IN_SEC);
tv->tv_usec = (ddsrt_tv_usec_t)((reltime % DDS_NSECS_IN_SEC) / DDS_NSECS_IN_USEC);
tv->tv_usec = (int)((reltime % DDS_NSECS_IN_SEC) / DDS_NSECS_IN_USEC);
} else {
tv->tv_sec = DDSRT_TIME_T_MAX;
tv->tv_usec = 999999;

View file

@ -45,6 +45,10 @@ ddsrt_gethostname(
return DDS_RETCODE_OK;
}
#else
#ifndef HOST_NAME_MAX
#define HOST_NAME_MAX 256
#endif
dds_return_t
ddsrt_gethostname(
char *name,

View file

@ -0,0 +1,34 @@
/*
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
* v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
/* Make sure we get the XSI compliant version of strerror_r */
#undef _POSIX_C_SOURCE
#undef _XOPEN_SOURCE
#undef _GNU_SOURCE
#define _POSIX_C_SOURCE 200112L
#include <assert.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include "dds/ddsrt/string.h"
dds_return_t
ddsrt_strerror_r(int errnum, char *buf, size_t buflen)
{
assert(buf != NULL);
assert(buflen > 0);
if (snprintf (buf, buflen, "errno=%d", errnum) >= buflen)
return DDS_RETCODE_NOT_ENOUGH_SPACE;
else
return DDS_RETCODE_OK;
}

View file

@ -0,0 +1,236 @@
/*
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
* v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
#include <assert.h>
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <time.h>
#include <sys/time.h>
#include "dds/ddsrt/sync.h"
#include "dds/ddsrt/timeconv.h"
void ddsrt_mutex_init (ddsrt_mutex_t *mutex)
{
int shared;
assert (mutex != NULL);
pthread_mutex_init (&mutex->mutex, NULL);
(void)shared;
}
void ddsrt_mutex_destroy (ddsrt_mutex_t *mutex)
{
assert (mutex != NULL);
if (pthread_mutex_destroy (&mutex->mutex) != 0)
abort();
}
void ddsrt_mutex_lock (ddsrt_mutex_t *mutex)
{
assert (mutex != NULL);
if (pthread_mutex_lock (&mutex->mutex) != 0)
abort();
}
bool
ddsrt_mutex_trylock (ddsrt_mutex_t *mutex)
{
int err;
assert (mutex != NULL);
err = pthread_mutex_trylock (&mutex->mutex);
if (err != 0 && err != EBUSY)
abort();
return (err == 0);
}
void
ddsrt_mutex_unlock (ddsrt_mutex_t *mutex)
{
assert (mutex != NULL);
if (pthread_mutex_unlock (&mutex->mutex) != 0)
abort();
}
void
ddsrt_cond_init (ddsrt_cond_t *cond)
{
assert (cond != NULL);
pthread_cond_init (&cond->cond, NULL);
}
void
ddsrt_cond_destroy (ddsrt_cond_t *cond)
{
assert (cond != NULL);
if (pthread_cond_destroy (&cond->cond) != 0)
abort();
}
void
ddsrt_cond_wait (ddsrt_cond_t *cond, ddsrt_mutex_t *mutex)
{
assert (cond != NULL);
assert (mutex != NULL);
if (pthread_cond_wait (&cond->cond, &mutex->mutex) != 0)
abort();
}
bool
ddsrt_cond_waituntil(
ddsrt_cond_t *cond,
ddsrt_mutex_t *mutex,
dds_time_t abstime)
{
struct timespec ts = { .tv_sec = 0, .tv_nsec = 0 };
assert(cond != NULL);
assert(mutex != NULL);
if (abstime == DDS_NEVER) {
ddsrt_cond_wait(cond, mutex);
return true;
}
if (abstime > 0) {
ts.tv_sec = abstime / DDS_NSECS_IN_SEC;
ts.tv_nsec = abstime % DDS_NSECS_IN_SEC;
}
switch (pthread_cond_timedwait(&cond->cond, &mutex->mutex, &ts)) {
case 0:
return true;
case ETIMEDOUT:
return false;
default:
break;
}
abort();
}
bool
ddsrt_cond_waitfor(
ddsrt_cond_t *cond,
ddsrt_mutex_t *mutex,
dds_duration_t reltime)
{
assert(cond != NULL);
assert(mutex != NULL);
return ddsrt_cond_waituntil(
cond, mutex, ddsrt_time_add_duration(dds_time(), reltime));
}
void
ddsrt_cond_signal (ddsrt_cond_t *cond)
{
assert (cond != NULL);
if (pthread_cond_signal (&cond->cond) != 0)
abort();
}
void
ddsrt_cond_broadcast (ddsrt_cond_t *cond)
{
assert (cond != NULL);
if (pthread_cond_broadcast (&cond->cond) != 0)
abort();
}
void
ddsrt_rwlock_init (ddsrt_rwlock_t *rwlock)
{
int err = 0;
assert(rwlock != NULL);
/* process-shared attribute is set to PTHREAD_PROCESS_PRIVATE by default */
if ((err = pthread_mutex_init(&rwlock->rwlock, NULL)) != 0)
abort();
}
void
ddsrt_rwlock_destroy (ddsrt_rwlock_t *rwlock)
{
int err;
assert(rwlock != NULL);
if ((err = pthread_mutex_destroy (&rwlock->rwlock)) != 0)
abort();
}
void ddsrt_rwlock_read (ddsrt_rwlock_t *rwlock)
{
int err;
assert(rwlock != NULL);
err = pthread_mutex_lock(&rwlock->rwlock);
assert(err == 0);
(void)err;
}
void ddsrt_rwlock_write (ddsrt_rwlock_t *rwlock)
{
int err;
assert(rwlock != NULL);
err = pthread_mutex_lock (&rwlock->rwlock);
assert(err == 0);
(void)err;
}
bool ddsrt_rwlock_tryread (ddsrt_rwlock_t *rwlock)
{
int err;
assert(rwlock != NULL);
err = pthread_mutex_trylock(&rwlock->rwlock);
assert(err == 0 || err == EBUSY);
return err == 0;
}
bool ddsrt_rwlock_trywrite (ddsrt_rwlock_t *rwlock)
{
int err;
assert(rwlock != NULL);
err = pthread_mutex_trylock(&rwlock->rwlock);
assert(err == 0 || err == EBUSY);
return err == 0;
}
void ddsrt_rwlock_unlock (ddsrt_rwlock_t *rwlock)
{
int err;
assert(rwlock != NULL);
err = pthread_mutex_unlock(&rwlock->rwlock);
assert(err == 0);
(void)err;
}
void ddsrt_once (ddsrt_once_t *control, ddsrt_once_fn init_fn)
{
/* There are no defined errors that can be returned by pthread_once */
(void)pthread_once(control, init_fn);
}

View file

@ -80,7 +80,11 @@ ddsrt_thread_getname(char *str, size_t size)
(void)pthread_get_name_np(pthread_self(), buf, sizeof(buf));
cnt = ddsrt_strlcpy(str, buf, size);
#elif defined(__sun)
#if !(__SunOS_5_6 || __SunOS_5_7 || __SunOS_5_8 || __SunOS_5_9 || __SunOS_5_10)
(void)pthread_getname_np(pthread_self(), buf, sizeof(buf));
#else
buf[0] = 0;
#endif
cnt = ddsrt_strlcpy(str, buf, size);
#elif defined(__VXWORKS__)
{
@ -125,7 +129,9 @@ ddsrt_thread_setname(const char *__restrict name)
#elif defined(__sun)
/* Thread names are limited to 31 bytes on Solaris. Excess bytes are
silently truncated. */
#if !(__SunOS_5_6 || __SunOS_5_7 || __SunOS_5_8 || __SunOS_5_9 || __SunOS_5_10)
(void)pthread_setname_np(pthread_self(), name);
#endif
#else
/* VxWorks does not support the task name to be set after a task is created.
Setting the name of a task can be done through pthread_attr_setname. */

View file

@ -47,7 +47,12 @@ size_t
ddsrt_ctime(dds_time_t n, char *str, size_t size)
{
struct tm tm;
#if __SunOS_5_6
/* Solaris 2.6 doesn't recognize %z so we just leave it out */
static const char fmt[] = "%Y-%m-%d %H:%M:%S";
#else
static const char fmt[] = "%Y-%m-%d %H:%M:%S%z";
#endif
char buf[] = "YYYY-mm-dd HH:MM:SS.hh:mm"; /* RFC 3339 */
size_t cnt;
time_t sec = (time_t)(n / DDS_NSECS_IN_SEC);
@ -61,12 +66,14 @@ ddsrt_ctime(dds_time_t n, char *str, size_t size)
#endif /* _WIN32 */
cnt = strftime(buf, sizeof(buf), fmt, &tm);
#if ! __SunOS_5_6
/* %z is without a separator between hours and minutes, fixup */
assert(cnt == (sizeof(buf) - 2 /* ':' + '\0' */));
buf[sizeof(buf) - 1] = '\0';
buf[sizeof(buf) - 2] = buf[sizeof(buf) - 3];
buf[sizeof(buf) - 3] = buf[sizeof(buf) - 4];
buf[sizeof(buf) - 4] = ':';
#endif
(void)cnt;
return ddsrt_strlcpy(str, buf, size);

View file

@ -0,0 +1,38 @@
/*
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
* v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
#include <assert.h>
#include <errno.h>
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#include "dds/ddsrt/time.h"
dds_time_t dds_time(void)
{
struct timespec ts;
(void)clock_gettime(CLOCK_REALTIME, &ts);
return (ts.tv_sec * DDS_NSECS_IN_SEC) + ts.tv_nsec;
}
dds_time_t ddsrt_time_monotonic(void)
{
return gethrtime ();
}
dds_time_t ddsrt_time_elapsed(void)
{
/* Elapsed time clock not worth the bother for now. */
return ddsrt_time_monotonic();
}

View file

@ -10,6 +10,7 @@
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
#define _ISOC99_SOURCE
#define _POSIX_PTHREAD_SEMANTICS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@ -19,7 +20,9 @@
#include <assert.h>
#include <limits.h>
#include <math.h>
#if _WIN32
#include <getopt.h>
#endif
#include "dds/dds.h"
#include "ddsperf_types.h"

File diff suppressed because it is too large Load diff

View file

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:vdds-xcode.xcodeproj">
</FileRef>
</Workspace>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "036D25831DF15EB9009A18C5"
BuildableName = "ddpingpong"
BlueprintName = "ddpingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "036D25831DF15EB9009A18C5"
BuildableName = "ddpingpong"
BlueprintName = "ddpingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "036D25831DF15EB9009A18C5"
BuildableName = "ddpingpong"
BlueprintName = "ddpingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "036D25831DF15EB9009A18C5"
BuildableName = "ddpingpong"
BlueprintName = "ddpingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0751CCE121F00D73982"
BuildableName = "ping"
BlueprintName = "ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0751CCE121F00D73982"
BuildableName = "ping"
BlueprintName = "ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0751CCE121F00D73982"
BuildableName = "ping"
BlueprintName = "ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0751CCE121F00D73982"
BuildableName = "ping"
BlueprintName = "ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0801CCE122400D73982"
BuildableName = "pong"
BlueprintName = "pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0801CCE122400D73982"
BuildableName = "pong"
BlueprintName = "pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0801CCE122400D73982"
BuildableName = "pong"
BlueprintName = "pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0801CCE122400D73982"
BuildableName = "pong"
BlueprintName = "pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,97 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D05F1CCE121300D73982"
BuildableName = "publisher"
BlueprintName = "publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D05F1CCE121300D73982"
BuildableName = "publisher"
BlueprintName = "publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D05F1CCE121300D73982"
BuildableName = "publisher"
BlueprintName = "publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "1 0 1 10 &quot;XX&quot; 16"
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D05F1CCE121300D73982"
BuildableName = "publisher"
BlueprintName = "publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0A11CCE123500D73982"
BuildableName = "rpc-ping"
BlueprintName = "rpc-ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0A11CCE123500D73982"
BuildableName = "rpc-ping"
BlueprintName = "rpc-ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0A11CCE123500D73982"
BuildableName = "rpc-ping"
BlueprintName = "rpc-ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0A11CCE123500D73982"
BuildableName = "rpc-ping"
BlueprintName = "rpc-ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0335203D1CEDD22A003E7429"
BuildableName = "rpc-pingpong"
BlueprintName = "rpc-pingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0335203D1CEDD22A003E7429"
BuildableName = "rpc-pingpong"
BlueprintName = "rpc-pingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0335203D1CEDD22A003E7429"
BuildableName = "rpc-pingpong"
BlueprintName = "rpc-pingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0335203D1CEDD22A003E7429"
BuildableName = "rpc-pingpong"
BlueprintName = "rpc-pingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0AC1CCE123A00D73982"
BuildableName = "rpc-pong"
BlueprintName = "rpc-pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0AC1CCE123A00D73982"
BuildableName = "rpc-pong"
BlueprintName = "rpc-pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0AC1CCE123A00D73982"
BuildableName = "rpc-pong"
BlueprintName = "rpc-pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0AC1CCE123A00D73982"
BuildableName = "rpc-pong"
BlueprintName = "rpc-pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D08B1CCE122A00D73982"
BuildableName = "rpc-publisher"
BlueprintName = "rpc-publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D08B1CCE122A00D73982"
BuildableName = "rpc-publisher"
BlueprintName = "rpc-publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D08B1CCE122A00D73982"
BuildableName = "rpc-publisher"
BlueprintName = "rpc-publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D08B1CCE122A00D73982"
BuildableName = "rpc-publisher"
BlueprintName = "rpc-publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0961CCE123000D73982"
BuildableName = "rpc-subscriber"
BlueprintName = "rpc-subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0961CCE123000D73982"
BuildableName = "rpc-subscriber"
BlueprintName = "rpc-subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0961CCE123000D73982"
BuildableName = "rpc-subscriber"
BlueprintName = "rpc-subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0961CCE123000D73982"
BuildableName = "rpc-subscriber"
BlueprintName = "rpc-subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D06A1CCE121A00D73982"
BuildableName = "subscriber"
BlueprintName = "subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D06A1CCE121A00D73982"
BuildableName = "subscriber"
BlueprintName = "subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D06A1CCE121A00D73982"
BuildableName = "subscriber"
BlueprintName = "subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D06A1CCE121A00D73982"
BuildableName = "subscriber"
BlueprintName = "subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0521CCE116900D73982"
BuildableName = "vdds-server"
BlueprintName = "vdds-server"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0521CCE116900D73982"
BuildableName = "vdds-server"
BlueprintName = "vdds-server"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0521CCE116900D73982"
BuildableName = "vdds-server"
BlueprintName = "vdds-server"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0521CCE116900D73982"
BuildableName = "vdds-server"
BlueprintName = "vdds-server"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03C96E9B1CCE5B8D0012F15D"
BuildableName = "vdds-server2"
BlueprintName = "vdds-server2"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03C96E9B1CCE5B8D0012F15D"
BuildableName = "vdds-server2"
BlueprintName = "vdds-server2"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03C96E9B1CCE5B8D0012F15D"
BuildableName = "vdds-server2"
BlueprintName = "vdds-server2"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03C96E9B1CCE5B8D0012F15D"
BuildableName = "vdds-server2"
BlueprintName = "vdds-server2"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEB01CCE0CCC00D73982"
BuildableName = "libvdds-stubs.dylib"
BlueprintName = "vdds-stubs"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEB01CCE0CCC00D73982"
BuildableName = "libvdds-stubs.dylib"
BlueprintName = "vdds-stubs"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEB01CCE0CCC00D73982"
BuildableName = "libvdds-stubs.dylib"
BlueprintName = "vdds-stubs"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,271 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEA81CCE0CA400D73982"
BuildableName = "libvdds.dylib"
BlueprintName = "vdds"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEB01CCE0CCC00D73982"
BuildableName = "libvdds-stubs.dylib"
BlueprintName = "vdds-stubs"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0751CCE121F00D73982"
BuildableName = "ping"
BlueprintName = "ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0801CCE122400D73982"
BuildableName = "pong"
BlueprintName = "pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D05F1CCE121300D73982"
BuildableName = "publisher"
BlueprintName = "publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0A11CCE123500D73982"
BuildableName = "rpc-ping"
BlueprintName = "rpc-ping"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0AC1CCE123A00D73982"
BuildableName = "rpc-pong"
BlueprintName = "rpc-pong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D08B1CCE122A00D73982"
BuildableName = "rpc-publisher"
BlueprintName = "rpc-publisher"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0961CCE123000D73982"
BuildableName = "rpc-subscriber"
BlueprintName = "rpc-subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D06A1CCE121A00D73982"
BuildableName = "subscriber"
BlueprintName = "subscriber"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6D0521CCE116900D73982"
BuildableName = "vdds-server"
BlueprintName = "vdds-server"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03C96E9B1CCE5B8D0012F15D"
BuildableName = "vdds-server2"
BlueprintName = "vdds-server2"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0335203D1CEDD22A003E7429"
BuildableName = "rpc-pingpong"
BlueprintName = "rpc-pingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "036D25831DF15EB9009A18C5"
BuildableName = "ddpingpong"
BlueprintName = "ddpingpong"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEA81CCE0CA400D73982"
BuildableName = "libvdds.dylib"
BlueprintName = "vdds"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEA81CCE0CA400D73982"
BuildableName = "libvdds.dylib"
BlueprintName = "vdds"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEA81CCE0CA400D73982"
BuildableName = "libvdds.dylib"
BlueprintName = "vdds"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEA81CCE0CA400D73982"
BuildableName = "libvdds.dylib"
BlueprintName = "vdds"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEA81CCE0CA400D73982"
BuildableName = "libvdds.dylib"
BlueprintName = "vdds"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03E6CEA81CCE0CA400D73982"
BuildableName = "libvdds.dylib"
BlueprintName = "vdds"
ReferencedContainer = "container:vdds-xcode.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,162 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>ddpingpong.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>14</integer>
</dict>
<key>ping.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>6</integer>
</dict>
<key>pong.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>7</integer>
</dict>
<key>publisher.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>4</integer>
</dict>
<key>rpc-ping.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>10</integer>
</dict>
<key>rpc-pingpong.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>13</integer>
</dict>
<key>rpc-pong.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>11</integer>
</dict>
<key>rpc-publisher.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>8</integer>
</dict>
<key>rpc-subscriber.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>9</integer>
</dict>
<key>subscriber.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>5</integer>
</dict>
<key>vdds-server.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
</dict>
<key>vdds-server2.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>12</integer>
</dict>
<key>vdds-stubs.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>2</integer>
</dict>
<key>vdds-xcode.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
<key>vdds.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>0335203D1CEDD22A003E7429</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>036D25831DF15EB9009A18C5</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03C96E9B1CCE5B8D0012F15D</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6CE9D1CCE0C6B00D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6CEA81CCE0CA400D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6CEB01CCE0CCC00D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D0521CCE116900D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D05F1CCE121300D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D06A1CCE121A00D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D0751CCE121F00D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D0801CCE122400D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D08B1CCE122A00D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D0961CCE123000D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D0A11CCE123500D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>03E6D0AC1CCE123A00D73982</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>