Repository: ignite Updated Branches: refs/heads/master 700529a6e -> 598b464f8
http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/core/src/impl/ignite_environment.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/core/src/impl/ignite_environment.cpp b/modules/platforms/cpp/core/src/impl/ignite_environment.cpp index 4947b94..b058f7c 100644 --- a/modules/platforms/cpp/core/src/impl/ignite_environment.cpp +++ b/modules/platforms/cpp/core/src/impl/ignite_environment.cpp @@ -18,6 +18,7 @@ #include "ignite/impl/interop/interop_external_memory.h" #include "ignite/impl/binary/binary_reader_impl.h" #include "ignite/impl/ignite_environment.h" +#include "ignite/cache/query/continuous/continuous_query.h" #include "ignite/binary/binary.h" #include "ignite/impl/binary/binary_type_updater_impl.h" @@ -26,6 +27,7 @@ using namespace ignite::jni::java; using namespace ignite::impl::interop; using namespace ignite::impl::binary; using namespace ignite::binary; +using namespace ignite::impl::cache::query::continuous; namespace ignite { @@ -36,6 +38,8 @@ namespace ignite */ enum CallbackOp { + CONTINUOUS_QUERY_LISTENER_APPLY = 18, + CONTINUOUS_QUERY_FILTER_RELEASE = 21, REALLOC = 36, ON_START = 49, ON_STOP = 50 @@ -50,11 +54,36 @@ namespace ignite */ long long IGNITE_CALL InLongOutLong(void* target, int type, long long val) { - if (type == ON_STOP) + SharedPointer<IgniteEnvironment>* env = static_cast<SharedPointer<IgniteEnvironment>*>(target); + + switch (type) { - SharedPointer<IgniteEnvironment>* ptr = static_cast<SharedPointer<IgniteEnvironment>*>(target); + case ON_STOP: + { + delete env; + + break; + } + + case CONTINUOUS_QUERY_LISTENER_APPLY: + { + SharedPointer<InteropMemory> mem = env->Get()->GetMemory(val); + + env->Get()->OnContinuousQueryListenerApply(mem); + + break; + } + + case CONTINUOUS_QUERY_FILTER_RELEASE: + { + // No-op. + break; + } - delete ptr; + default: + { + break; + } } return 0; @@ -73,26 +102,43 @@ namespace ignite long long IGNITE_CALL InLongLongLongObjectOutLong(void* target, int type, long long val1, long long val2, long long val3, void* arg) { - if (type == ON_START) - { - SharedPointer<IgniteEnvironment>* ptr = static_cast<SharedPointer<IgniteEnvironment>*>(target); + SharedPointer<IgniteEnvironment>* env = static_cast<SharedPointer<IgniteEnvironment>*>(target); - ptr->Get()->OnStartCallback(val1, reinterpret_cast<jobject>(arg)); - } - else if (type == REALLOC) + switch (type) { - SharedPointer<IgniteEnvironment>* env = static_cast<SharedPointer<IgniteEnvironment>*>(target); + case ON_START: + { + env->Get()->OnStartCallback(val1, reinterpret_cast<jobject>(arg)); + + break; + } - SharedPointer<InteropMemory> mem = env->Get()->GetMemory(val1); + case REALLOC: + { + SharedPointer<InteropMemory> mem = env->Get()->GetMemory(val1); - mem.Get()->Reallocate(static_cast<int32_t>(val2)); + mem.Get()->Reallocate(static_cast<int32_t>(val2)); + + break; + } + + default: + { + break; + } } return 0; } - IgniteEnvironment::IgniteEnvironment() : ctx(SharedPointer<JniContext>()), latch(new SingleLatch), name(0), - proc(), metaMgr(new BinaryTypeManager()), metaUpdater(0) + IgniteEnvironment::IgniteEnvironment() : + ctx(SharedPointer<JniContext>()), + latch(new SingleLatch), + name(0), + proc(), + metaMgr(new BinaryTypeManager()), + metaUpdater(0), + registry(DEFAULT_FAST_PATH_CONTAINERS_CAP, DEFAULT_SLOW_PATH_CONTAINERS_CAP) { // No-op. } @@ -107,7 +153,7 @@ namespace ignite JniHandlers IgniteEnvironment::GetJniHandlers(SharedPointer<IgniteEnvironment>* target) { - JniHandlers hnds = JniHandlers(); + JniHandlers hnds; hnds.target = target; @@ -193,6 +239,11 @@ namespace ignite ctx.Get()->ProcessorReleaseStart(proc.Get()); } + HandleRegistry& IgniteEnvironment::GetHandleRegistry() + { + return registry; + } + void IgniteEnvironment::OnStartCallback(long long memPtr, jobject proc) { this->proc = jni::JavaGlobalRef(*ctx.Get(), proc); @@ -212,6 +263,23 @@ namespace ignite else name = 0; } + + void IgniteEnvironment::OnContinuousQueryListenerApply(SharedPointer<InteropMemory>& mem) + { + InteropInputStream stream(mem.Get()); + BinaryReaderImpl reader(&stream); + + int64_t qryHandle = reader.ReadInt64(); + + ContinuousQueryImplBase* contQry = reinterpret_cast<ContinuousQueryImplBase*>(registry.Get(qryHandle).Get()); + + if (contQry) + { + BinaryRawReader rawReader(&reader); + + contQry->ReadAndProcessEvents(rawReader); + } + } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/Makefile.am ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/Makefile.am b/modules/platforms/cpp/examples/Makefile.am index cda5132..e1c7905 100644 --- a/modules/platforms/cpp/examples/Makefile.am +++ b/modules/platforms/cpp/examples/Makefile.am @@ -21,5 +21,6 @@ SUBDIRS = \ putget-example \ odbc-example \ query-example \ + continuous-query-example \ include http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/configure.ac ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/configure.ac b/modules/platforms/cpp/examples/configure.ac index 6ddd7c8..d167cf0 100644 --- a/modules/platforms/cpp/examples/configure.ac +++ b/modules/platforms/cpp/examples/configure.ac @@ -56,6 +56,7 @@ AC_CONFIG_FILES([ \ putget-example/Makefile \ odbc-example/Makefile \ query-example/Makefile \ + continuous-query-example/Makefile \ ]) AC_OUTPUT http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/continuous-query-example/Makefile.am ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/continuous-query-example/Makefile.am b/modules/platforms/cpp/examples/continuous-query-example/Makefile.am new file mode 100644 index 0000000..2566689 --- /dev/null +++ b/modules/platforms/cpp/examples/continuous-query-example/Makefile.am @@ -0,0 +1,58 @@ +## +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## + +ACLOCAL_AMFLAGS =-I m4 + +noinst_PROGRAMS = ignite-continuous-query-example + +AM_CPPFLAGS = \ + -I@top_srcdir@/include \ + -I@top_srcdir@/../core/include \ + -I@top_srcdir@/../core/os/linux/include \ + -I@top_srcdir@/../common/include \ + -I@top_srcdir@/../common/os/linux/include \ + -I@top_srcdir@/../binary/include \ + -I@top_srcdir@/../jni/include \ + -I@top_srcdir@/../jni/os/linux/include \ + -I$(JAVA_HOME)/include \ + -I$(JAVA_HOME)/include/linux \ + -DIGNITE_IMPL \ + -D__STDC_LIMIT_MACROS \ + -D__STDC_CONSTANT_MACROS + +AM_CXXFLAGS = \ + -Wall \ + -std=c++0x + +ignite_continuous_query_example_LDADD = \ + @top_srcdir@/../core/libignite.la \ + -lpthread + +ignite_continuous_query_example_LDFLAGS = \ + -static-libtool-libs + +ignite_continuous_query_example_SOURCES = \ + src/continuous_query_example.cpp + +run-check: check + ./ignite-continuous-query-example -p + +clean-local: clean-check + $(RM) *.gcno *.gcda + +clean-check: + $(RM) $(ignite_continuous_query_example_OBJECTS) http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/continuous-query-example/config/continuous-query-example.xml ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/continuous-query-example/config/continuous-query-example.xml b/modules/platforms/cpp/examples/continuous-query-example/config/continuous-query-example.xml new file mode 100644 index 0000000..bdc1e92 --- /dev/null +++ b/modules/platforms/cpp/examples/continuous-query-example/config/continuous-query-example.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:util="http://www.springframework.org/schema/util" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/util + http://www.springframework.org/schema/util/spring-util.xsd"> + <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"> + + <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. --> + <property name="discoverySpi"> + <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> + <property name="ipFinder"> + <!-- + Ignite provides several options for automatic discovery that can be used + instead os static IP based discovery. + --> + <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. --> + <!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">--> + <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"> + <property name="addresses"> + <list> + <!-- In distributed environment, replace with actual host IP address. --> + <value>127.0.0.1:47550..47551</value> + </list> + </property> + </bean> + </property> + </bean> + </property> + </bean> +</beans> http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/continuous-query-example/project/vs/continuous-query-example.vcxproj ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/continuous-query-example/project/vs/continuous-query-example.vcxproj b/modules/platforms/cpp/examples/continuous-query-example/project/vs/continuous-query-example.vcxproj new file mode 100644 index 0000000..dfc5f9d --- /dev/null +++ b/modules/platforms/cpp/examples/continuous-query-example/project/vs/continuous-query-example.vcxproj @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <RootNamespace>igniteexamples</RootNamespace> + <ProjectGuid>{73BB124A-0CD4-4961-A6CD-61F9C71028A6}</ProjectGuid> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v100</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v100</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(JAVA_HOME)\include;$(JAVA_HOME)\include\win32;..\..\..\include;..\..\..\..\jni\os\win\include;..\..\..\..\jni\include;..\..\..\..\common\os\win\include;..\..\..\..\common\include;..\..\..\..\binary\include;..\..\..\..\core\os\win\include;..\..\..\..\core\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <AdditionalDependencies>jvm.lib;ignite.jni.lib;ignite.binary.lib;ignite.core.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>..\..\..\..\project\vs\$(Platform)\$(Configuration)\;$(JAVA_HOME)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + <PostBuildEvent> + <Command>copy "$(ProjectDir)..\..\..\..\project\vs\$(Platform)\$(Configuration)\ignite.common.dll" "$(OutDir)" +copy "$(ProjectDir)..\..\..\..\project\vs\$(Platform)\$(Configuration)\ignite.core.dll" "$(OutDir)"</Command> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(JAVA_HOME)\include;$(JAVA_HOME)\include\win32;..\..\..\include;..\..\..\..\jni\os\win\include;..\..\..\..\jni\include;..\..\..\..\common\os\win\include;..\..\..\..\common\include;..\..\..\..\binary\include;..\..\..\..\core\os\win\include;..\..\..\..\core\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <AdditionalDependencies>jvm.lib;ignite.jni.lib;ignite.binary.lib;ignite.core.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>..\..\..\..\project\vs\$(Platform)\$(Configuration)\;$(JAVA_HOME)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + <PostBuildEvent> + <Command>copy "$(ProjectDir)..\..\..\..\project\vs\$(Platform)\$(Configuration)\ignite.common.dll" "$(OutDir)" +copy "$(ProjectDir)..\..\..\..\project\vs\$(Platform)\$(Configuration)\ignite.core.dll" "$(OutDir)"</Command> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\..\src\continuous_query_example.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\..\include\ignite\examples\address.h" /> + <ClInclude Include="..\..\..\include\ignite\examples\organization.h" /> + <ClInclude Include="..\..\..\include\ignite\examples\person.h" /> + </ItemGroup> + <ItemGroup> + <None Include="..\..\config\continuous-query-example.xml" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/continuous-query-example/project/vs/continuous-query-example.vcxproj.filters ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/continuous-query-example/project/vs/continuous-query-example.vcxproj.filters b/modules/platforms/cpp/examples/continuous-query-example/project/vs/continuous-query-example.vcxproj.filters new file mode 100644 index 0000000..cf3bca9 --- /dev/null +++ b/modules/platforms/cpp/examples/continuous-query-example/project/vs/continuous-query-example.vcxproj.filters @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <ClInclude Include="..\..\..\include\ignite\examples\address.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\..\..\include\ignite\examples\organization.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\..\..\include\ignite\examples\person.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{35cb32b7-bf2e-440f-9b32-80d392d81847}</UniqueIdentifier> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{b355095f-b4e2-4324-9516-854828c876ff}</UniqueIdentifier> + </Filter> + <Filter Include="Config"> + <UniqueIdentifier>{3799efd0-3cfe-47e2-9e9e-a51b25bf40ef}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\src\continuous_query_example.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <None Include="..\..\config\continuous-query-example.xml"> + <Filter>Config</Filter> + </None> + </ItemGroup> +</Project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/continuous-query-example/src/continuous_query_example.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/continuous-query-example/src/continuous_query_example.cpp b/modules/platforms/cpp/examples/continuous-query-example/src/continuous_query_example.cpp new file mode 100644 index 0000000..b08d4b8 --- /dev/null +++ b/modules/platforms/cpp/examples/continuous-query-example/src/continuous_query_example.cpp @@ -0,0 +1,142 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <stdint.h> +#include <iostream> + +#include "ignite/ignition.h" +#include "ignite/cache/query/continuous/continuous_query.h" + +#include "ignite/examples/organization.h" +#include "ignite/examples/person.h" + +using namespace ignite; +using namespace cache; +using namespace query; + +using namespace examples; + +/** Cache name. */ +const char* CACHE_NAME = "cpp_cache_continuous_query"; + +/* + * Listener class. + */ +template<typename K, typename V> +class Listener : public event::CacheEntryEventListener<K, V> +{ +public: + /* + * Default constructor. + */ + Listener() + { + // No-op. + } + + /** + * Event callback. + * + * @param evts Events. + * @param num Events number. + */ + virtual void OnEvent(const CacheEntryEvent<K, V>* evts, uint32_t num) + { + for (uint32_t i = 0; i < num; ++i) + { + std::cout << "Queried entry [key=" << (evts[i].HasValue() ? evts[i].GetKey() : K()) + << ", val=" << (evts[i].HasValue() ? evts[i].GetValue() : V()) << ']' + << std::endl; + } + } +}; + +int main() +{ + IgniteConfiguration cfg; + + cfg.springCfgPath = "platforms/cpp/examples/continuous-query-example/config/continuous-query-example.xml"; + + try + { + // Start a node. + Ignite ignite = Ignition::Start(cfg); + + std::cout << std::endl; + std::cout << ">>> Cache continuous query example started." << std::endl; + std::cout << std::endl; + + // Get cache instance. + Cache<int32_t, std::string> cache = ignite.GetOrCreateCache<int32_t, std::string>(CACHE_NAME); + + cache.Clear(); + + const int32_t keyCnt = 20; + + for (int32_t i = 0; i < keyCnt; ++i) + { + std::stringstream builder; + + builder << i; + + cache.Put(i, builder.str()); + } + + // Declaring listener. + Listener<int, std::string> listener; + + // Declaring continuous query. + continuous::ContinuousQuery<int, std::string> qry(MakeReference(listener)); + + { + // Continous query scope. Query is closed when scope is left. + continuous::ContinuousQueryHandle<int, std::string> handle = cache.QueryContinuous(qry); + + // Add a few more keys and watch more query notifications. + for (int32_t i = keyCnt; i < keyCnt + 5; ++i) + { + std::stringstream builder; + + builder << i; + + cache.Put(i, builder.str()); + } + + // Let user wait while callback is notified about remaining puts. + std::cout << std::endl; + std::cout << ">>> Press 'Enter' to continue..." << std::endl; + std::cout << std::endl; + + std::cin.get(); + } + + // Stop node. + Ignition::StopAll(false); + } + catch (IgniteError& err) + { + std::cout << "An error occurred: " << err.GetText() << std::endl; + } + + std::cout << std::endl; + std::cout << ">>> Example finished, press 'Enter' to exit ..." << std::endl; + std::cout << std::endl; + + std::cin.get(); + + return 0; +} http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/include/ignite/examples/person.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/include/ignite/examples/person.h b/modules/platforms/cpp/examples/include/ignite/examples/person.h index 2c92660..86c51c8 100644 --- a/modules/platforms/cpp/examples/include/ignite/examples/person.h +++ b/modules/platforms/cpp/examples/include/ignite/examples/person.h @@ -46,7 +46,7 @@ namespace ignite // No-op. } - std::string ToString() + std::string ToString() const { std::ostringstream oss; http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/examples/project/vs/ignite-examples.sln ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/examples/project/vs/ignite-examples.sln b/modules/platforms/cpp/examples/project/vs/ignite-examples.sln index 89f609f..d839f09 100644 --- a/modules/platforms/cpp/examples/project/vs/ignite-examples.sln +++ b/modules/platforms/cpp/examples/project/vs/ignite-examples.sln @@ -7,6 +7,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "odbc-example", "..\..\odbc- EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "query-example", "..\..\query-example\project\vs\query-example.vcxproj", "{9FB34AB4-01DD-4C6F-99BF-681019D0E4DD}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "continuous-query-example", "..\..\continuous-query-example\project\vs\continuous-query-example.vcxproj", "{73BB124A-0CD4-4961-A6CD-61F9C71028A6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Release|x64 = Release|x64 @@ -25,6 +27,10 @@ Global {9FB34AB4-01DD-4C6F-99BF-681019D0E4DD}.Release|x64.Build.0 = Release|x64 {9FB34AB4-01DD-4C6F-99BF-681019D0E4DD}.Release|x86.ActiveCfg = Release|Win32 {9FB34AB4-01DD-4C6F-99BF-681019D0E4DD}.Release|x86.Build.0 = Release|Win32 + {73BB124A-0CD4-4961-A6CD-61F9C71028A6}.Release|x64.ActiveCfg = Release|x64 + {73BB124A-0CD4-4961-A6CD-61F9C71028A6}.Release|x64.Build.0 = Release|x64 + {73BB124A-0CD4-4961-A6CD-61F9C71028A6}.Release|x86.ActiveCfg = Release|Win32 + {73BB124A-0CD4-4961-A6CD-61F9C71028A6}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/jni/include/ignite/jni/java.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/jni/include/ignite/jni/java.h b/modules/platforms/cpp/jni/include/ignite/jni/java.h index 442cc10..6289d73 100644 --- a/modules/platforms/cpp/jni/include/ignite/jni/java.h +++ b/modules/platforms/cpp/jni/include/ignite/jni/java.h @@ -389,7 +389,7 @@ namespace ignite void TargetListenFutureForOperation(jobject obj, long long futId, int typ, int opId); jobject CacheOutOpQueryCursor(jobject obj, int type, long long memPtr, JniErrorInfo* errInfo = NULL); - jobject CacheOutOpContinuousQuery(jobject obj, int type, long long memPtr); + jobject CacheOutOpContinuousQuery(jobject obj, int type, long long memPtr, JniErrorInfo* errInfo = NULL); jobject Acquire(jobject obj); http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/jni/src/java.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/jni/src/java.cpp b/modules/platforms/cpp/jni/src/java.cpp index 698263d..e6f2f88 100644 --- a/modules/platforms/cpp/jni/src/java.cpp +++ b/modules/platforms/cpp/jni/src/java.cpp @@ -1357,13 +1357,13 @@ namespace ignite return LocalToGlobal(env, res); } - jobject JniContext::CacheOutOpContinuousQuery(jobject obj, int type, long long memPtr) { + jobject JniContext::CacheOutOpContinuousQuery(jobject obj, int type, long long memPtr, JniErrorInfo* err) { JNIEnv* env = Attach(); jobject res = env->CallObjectMethod( obj, jvm->GetMembers().m_PlatformTarget_inStreamOutObject, type, memPtr); - ExceptionCheck(env); + ExceptionCheck(env, err); return LocalToGlobal(env, res); } http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj b/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj index 753ae4c..6f85896 100644 --- a/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj +++ b/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj @@ -97,7 +97,7 @@ </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>$(JAVA_HOME)\lib\jvm.lib;$(BOOST_HOME)\lib64-msvc-10.0\libboost_unit_test_framework-vc100-mt-gd-1_58.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>$(JAVA_HOME)\lib\jvm.lib;$(BOOST_HOME)\lib32-msvc-10.0\libboost_unit_test_framework-vc100-mt-gd-1_58.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> @@ -130,7 +130,7 @@ <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> - <AdditionalDependencies>$(JAVA_HOME)\lib\jvm.lib;$(BOOST_HOME)\lib64-msvc-10.0\libboost_unit_test_framework-vc100-mt-1_58.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>$(JAVA_HOME)\lib\jvm.lib;$(BOOST_HOME)\lib32-msvc-10.0\libboost_unit_test_framework-vc100-mt-1_58.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/project/vs/ignite.slnrel ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/project/vs/ignite.slnrel b/modules/platforms/cpp/project/vs/ignite.slnrel index 1d874a8..6a37bf4 100644 --- a/modules/platforms/cpp/project/vs/ignite.slnrel +++ b/modules/platforms/cpp/project/vs/ignite.slnrel @@ -2,6 +2,9 @@ Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "..\..\core\project\vs\core.vcxproj", "{E2DEA693-F2EA-43C2-A813-053378F6E4DB}" + ProjectSection(ProjectDependencies) = postProject + {4F15669B-92EB-49F0-B774-8F19BAE0B960} = {4F15669B-92EB-49F0-B774-8F19BAE0B960} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ignite", "..\..\ignite\project\vs\ignite.vcxproj", "{69688B4D-3EE0-43F5-A1C6-29B5D2DDE949}" ProjectSection(ProjectDependencies) = postProject http://git-wip-us.apache.org/repos/asf/ignite/blob/598b464f/modules/platforms/cpp/project/vs/ignite_x86.slnrel ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/project/vs/ignite_x86.slnrel b/modules/platforms/cpp/project/vs/ignite_x86.slnrel index 4785579..abd0ad1 100644 --- a/modules/platforms/cpp/project/vs/ignite_x86.slnrel +++ b/modules/platforms/cpp/project/vs/ignite_x86.slnrel @@ -2,6 +2,9 @@ Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "..\..\core\project\vs\core.vcxproj", "{E2DEA693-F2EA-43C2-A813-053378F6E4DB}" + ProjectSection(ProjectDependencies) = postProject + {4F15669B-92EB-49F0-B774-8F19BAE0B960} = {4F15669B-92EB-49F0-B774-8F19BAE0B960} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ignite", "..\..\ignite\project\vs\ignite.vcxproj", "{69688B4D-3EE0-43F5-A1C6-29B5D2DDE949}" ProjectSection(ProjectDependencies) = postProject
