Connection time optimized

This commit is contained in:
2017-11-14 09:24:20 +01:00
parent 3a2ff3c8d4
commit 6dfd64a9a3
4 changed files with 6442 additions and 14 deletions

View File

@@ -453,7 +453,7 @@ void macchinettaFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prh
break;
case MOCHA_VERSION:
plhs[0]=mxCreateString((char *) "mocha-1.3.0-final-1 : September 2017");
plhs[0]=mxCreateString((char *) "mocha-1.4.0-final-1 : November 2017");
break;
case SHOW:
@@ -743,8 +743,9 @@ void macchinettaFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prh
}
case OPEN_NOWAIT:
cafe.channelOpenPolicy.setWhenToFlushSendBuffer(FLUSH_DESIGNATED_TO_CLIENT);
cafe.channelOpenPolicy.setFlushSendBufferKind(WITH_PEND_EVENT);
//cafe.channelOpenPolicy.setWhenToFlushSendBuffer(FLUSH_DESIGNATED_TO_CLIENT);
//cafe.channelOpenPolicy.setFlushSendBufferKind(WITH_PEND_EVENT);
cafe.openPrepare();
break;
@@ -755,13 +756,14 @@ void macchinettaFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prh
case OPEN_NOW:
cafe.channelOpenPolicy.flushSendBufferNow();
cafe.channelOpenPolicy.setWhenToFlushSendBuffer(FLUSH_AFTER_EACH_CHANNEL_CREATION);
cafe.channelOpenPolicy.setFlushSendBufferKind(WITH_PEND_EVENT);
//cafe.channelOpenPolicy.flushSendBufferNow();
//cafe.channelOpenPolicy.setWhenToFlushSendBuffer(FLUSH_AFTER_EACH_CHANNEL_CREATION);
//cafe.channelOpenPolicy.setFlushSendBufferKind(WITH_PEND_EVENT);
cafe.openNow();
break;
//change open method to with pend_event - for single opens that wish to pend
case OPEN_WAIT_WITH_TIME:
if (nrhs<2) {
mexPrintf("Invalid Number of argument %d. Input: message, timeout \n", nrhs);
@@ -776,6 +778,7 @@ void macchinettaFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prh
cafe.channelOpenPolicy.setTimeout(mxGetScalar(prhs[1]));
cafe.channelOpenPolicy.setWhenToFlushSendBuffer(FLUSH_AFTER_EACH_CHANNEL_CREATION);
cafe.channelOpenPolicy.setFlushSendBufferKind(WITH_PEND_EVENT);
}
break;
@@ -809,17 +812,18 @@ void macchinettaFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prh
}
//Get Timeput
double tPrevious=cafe.channelOpenPolicy.getTimeout();
cafe.channelOpenPolicy.setTimeout(mxGetScalar(prhs[1]));
cafe.channelOpenPolicy.flushSendBufferNow();
//double tPrevious=cafe.channelOpenPolicy.getTimeout();
//cafe.channelOpenPolicy.setTimeout(mxGetScalar(prhs[1]));
//cafe.channelOpenPolicy.flushSendBufferNow();
//reset
cafe.channelOpenPolicy.setWhenToFlushSendBuffer(FLUSH_NOW);
cafe.channelOpenPolicy.setFlushSendBufferKind(WITH_PEND_EVENT);
//cafe.channelOpenPolicy.setWhenToFlushSendBuffer(FLUSH_NOW);
//cafe.channelOpenPolicy.setFlushSendBufferKind(WITH_PEND_EVENT);
//Set to previous
//cafe.channelOpenPolicy.setTimeoutToDefault();
cafe.channelOpenPolicy.setTimeout(tPrevious);
//cafe.channelOpenPolicy.setTimeout(tPrevious);
cafe.openNowAndWait(mxGetScalar(prhs[1]));
}
break;

6267
macchinettaSwitch.cpp- Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
makefile_rel_1.3
makefile_rel_1.5

157
makefile_rel_1.5 Normal file
View File

@@ -0,0 +1,157 @@
#
# Jan Chrin
# New Version: June 2016
#
# makefile to build mocha mex file
# printenv | grep MATLAB to reveal your MATLAB Directory
#
# e.g. on sf-lc we have
# MATLAB=/afs/psi.ch/sys/linux/opt/matlab/2015a.x86_64
#
# local executables are built in ./${EPICS_HOST_ARCH}/$(MVER)
# where the MATLAB version is grepped from $(MATLAB)
MATLAB_ROOT=${MATLAB}
MATLAB_VERSION=$(notdir $(MATLAB_ROOT))
##### CHANGE AS APPROPRIATE #################
#Mocha Version to install
MOCHA_VERSION=mocha-1.5.0-final-1
#CAFE version to link to
CAFE_VERSION=cafe-1.5.0-final-1
#CAFE_VERSION_M=cafe-1.3.0-final-2m
#PYTHON_INCLUDE=/usr/include/python2.6
#PYTHON_LIB=/usr/lib64
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/opt/gfa/cafe
CAFE_MOCHA_BASE=${CAFE_BASE}/mocha
#CAFE_CPP_BASE=/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp
CAFE_CPP_BASE=$(CAFE_BASE)/cpp/$(CAFE_VERSION)
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
BOOST_LIB=/afs/psi.ch/project/zeromq/devl/mate/deps/boost/lib
INSTALL_MOCHA_LIBDIR= $(CAFE_MOCHA_BASE)/$(MOCHA_VERSION)/lib/$(MATLAB_VERSION)
#############################################
#First deteremine if we are on a 32/64 bit machine
#as mex file extensions are named differently
pattern64=x86_64
pattern32=i386
PWD=$(shell pwd)
#hardware platform
HW=$(shell uname -i)
ifeq ($(pattern64),$(findstring $(pattern64), $(HW)))
MEXE=mexa64
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa64
else
ifeq ($(pattern32),$(findstring $(pattern32), $(HW)))
MEXE=mexglx
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa86
endif
endif
INSTALL_PATH?=$(INSTALL_MOCHA_LIBDIR)
OBJ_DIR= ${EPICS_HOST_ARCH}/$(MATLAB_VERSION)
INCLUDEPATH_MOCHA += -I$(MATLAB_ROOT)/extern/include \
-I$(CAFE_CPP_BASE)/include -I./ \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux
# -I${PYTHON_INCLUDE}
# -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
INCLUDEPATH_MACHINETTA += $(INCLUDEPATH_MOCHA) -I$(BOOST_BASE) -I$(BOOST_BASE)/boost
#-L$(BOOST_LIB) -Wl,-rpath,$(BOOST_LIB)
LIB_DIR += \
-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) \
-L/usr/lib64 -Wl,-rpath,/usr/lib64
# -L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
# -Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib
# -L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB)
# -L$(CAFE_CPP_BASE) \
# -Wl,-rpath,$(CAFE_CPP_BASE) \
#LIBS += -lpython2.6
#LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib/${EPICS_HOST_ARCH} \
-L$(MATLAB_LIB)
#-lmacchinetta -lcafe
#-lboost_system -lboost_thread-mt
LIBS += -ldl -lca -lCom -lmx -lmex -lmat -lQtCore -lQtXml
LIB_INSTALL = $(LIB_DIR) -L$(INSTALL_PATH) -Wl,-rpath,$(INSTALL_PATH)
#LIB_LOCAL = $(LIB_DIR) -L$(PWD)/$(OBJ_DIR) -Wl,-rpath,$(PWD)/$(OBJ_DIR)
LIB_LOCAL = $(LIB_DIR)
CPP_OBJS=../cpp/src/libs/cafe/$(CAFE_VERSION_M)
#CAFE_OBJS_DIR = $(CPP_OBJS)/cafe.o $(CPP_OBJS)/cafeCache.o $(CPP_OBJS)/cafeGroup.o $(CPP_OBJS)/cafeVectors.o \
# $(CPP_OBJS)/cafeXML.o $(CPP_OBJS)/callbackHandlerCreate.o $(CPP_OBJS)/callbackHandlerMonitor.o \
# $(CPP_OBJS)/conduitGroup.o $(CPP_OBJS)/conduit.o \
# $(CPP_OBJS)/connectCallbacks.o $(CPP_OBJS)/connectGroup.o \
# $(CPP_OBJS)/connect.o $(CPP_OBJS)/exceptionsHelper.o $(CPP_OBJS)/granules.o $(CPP_OBJS)/handleHelper.o \
# $(CPP_OBJS)/helper.o \
# $(CPP_OBJS)/loadCollectionXMLParser.o $(CPP_OBJS)/loadGroupXMLParser.o $(CPP_OBJS)/methodCallbacks.o \
# $(CPP_OBJS)/policyHelper.o \
# $(CPP_OBJS)/restorePVGroupXMLParser.o $(CPP_OBJS)/transpose.o
CAFE_OBJS_DIR = $(CAFE_BASE)/cpp/$(CAFE_VERSION)/lib/libcafe.a
# MATLAB Versions 2014 onwards, use
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_LOCAL) $(LIBS)
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_INSTALL) $(LIBS)
$(OBJ_DIR)/mocha.$(MEXE): mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(OBJ_DIR) -output mocha.$(MEXE) \
$(INCLUDEPATH_MOCHA) \
LDFLAGS='$(LIB_LOCAL) $(LIBS)'
#$(OBJ_DIR)/libmacchinetta.so: $(OBJ_DIR)/macchinettaSwitch.o
# g++ -shared -Wl,-soname,libmacchinetta.so \
# $(OBJ_DIR)/macchinettaSwitch.o -o $(OBJ_DIR)/libmacchinetta.so
$(OBJ_DIR)/macchinettaSwitch.o: macchinettaSwitch.cpp macchinettaHelper.h \
macchinetta.h containerMochaccino.h
mex GCC='/usr/bin/g++' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
-largeArrayDims -c macchinettaSwitch.cpp $(INCLUDEPATH_MACHINETTA) -outdir $(OBJ_DIR)
#install: install_lib $(OBJ_DIR)/mocha.$(MEXE) Aptil 2017
install: $(OBJ_DIR)/mocha.$(MEXE)
mkdir -p $(INSTALL_PATH)
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(INSTALL_PATH) -output mocha.$(MEXE) \
$(INCLUDEPATH_MOCHA) \
LDFLAGS='$(LIB_INSTALL) $(LIBS)'
cp example.m $(INSTALL_PATH)
cp scripts/monitorAction.m $(INSTALL_PATH)
cp scripts/pvtable.m $(INSTALL_PATH)
cp scripts/test.xml $(INSTALL_PATH)
install_lib: $(OBJ_DIR)/libmacchinetta.so
mkdir -p $(INSTALL_PATH)
cp $(OBJ_DIR)/libmacchinetta.so $(INSTALL_PATH)
clean:
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/*.so $(OBJ_DIR)/*.$(MEXE)