| /* |
| * 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. |
| */ |
| |
| package org.apache.ignite.internal.processors.platform; |
| |
| import org.apache.ignite.cluster.ClusterMetrics; |
| import org.apache.ignite.cluster.ClusterNode; |
| import org.apache.ignite.events.Event; |
| import org.apache.ignite.internal.GridKernalContext; |
| import org.apache.ignite.internal.binary.BinaryRawReaderEx; |
| import org.apache.ignite.internal.binary.BinaryRawWriterEx; |
| import org.apache.ignite.internal.processors.platform.cache.PlatformCacheEntryFilter; |
| import org.apache.ignite.internal.processors.platform.cache.PlatformCacheEntryProcessor; |
| import org.apache.ignite.internal.processors.platform.cache.query.PlatformContinuousQuery; |
| import org.apache.ignite.internal.processors.platform.cache.query.PlatformContinuousQueryFilter; |
| import org.apache.ignite.internal.processors.platform.callback.PlatformCallbackGateway; |
| import org.apache.ignite.internal.processors.platform.cluster.PlatformClusterNodeFilter; |
| import org.apache.ignite.internal.processors.platform.compute.PlatformJob; |
| import org.apache.ignite.internal.processors.platform.datastreamer.PlatformStreamReceiver; |
| import org.apache.ignite.internal.processors.platform.memory.PlatformInputStream; |
| import org.apache.ignite.internal.processors.platform.memory.PlatformMemory; |
| import org.apache.ignite.internal.processors.platform.memory.PlatformMemoryManager; |
| import org.apache.ignite.internal.processors.platform.memory.PlatformOutputStream; |
| import org.apache.ignite.internal.processors.platform.message.PlatformMessageFilter; |
| import org.jetbrains.annotations.Nullable; |
| |
| import java.util.Collection; |
| |
| /** |
| * Platform context. Acts as an entry point for platform operations. |
| */ |
| public interface PlatformContext { |
| /** |
| * Gets kernal context. |
| * |
| * @return Kernal context. |
| */ |
| public GridKernalContext kernalContext(); |
| |
| /** |
| * Gets platform memory manager. |
| * |
| * @return Memory manager. |
| */ |
| public PlatformMemoryManager memory(); |
| |
| /** |
| * Gets platform callback gateway. |
| * |
| * @return Callback gateway. |
| */ |
| public PlatformCallbackGateway gateway(); |
| |
| /** |
| * Get memory reader. |
| * |
| * @param mem Memory. |
| * @return Reader. |
| */ |
| public BinaryRawReaderEx reader(PlatformMemory mem); |
| |
| /** |
| * Get memory reader. |
| * |
| * @param in Input. |
| * @return Reader. |
| */ |
| public BinaryRawReaderEx reader(PlatformInputStream in); |
| |
| /** |
| * Get memory writer. |
| * |
| * @param mem Memory. |
| * @return Writer. |
| */ |
| public BinaryRawWriterEx writer(PlatformMemory mem); |
| |
| /** |
| * Get memory writer. |
| * |
| * @param out Output. |
| * @return Writer. |
| */ |
| public BinaryRawWriterEx writer(PlatformOutputStream out); |
| |
| /** |
| * Sends node info to native platform, if necessary. |
| * |
| * @param node Node. |
| */ |
| public void addNode(ClusterNode node); |
| |
| /** |
| * Writes a node id to a stream and sends node info to native platform, if necessary. |
| * |
| * @param writer Writer. |
| * @param node Node. |
| */ |
| public void writeNode(BinaryRawWriterEx writer, ClusterNode node); |
| |
| /** |
| * Writes multiple node ids to a stream and sends node info to native platform, if necessary. |
| * |
| * @param writer Writer. |
| * @param nodes Nodes. |
| */ |
| public void writeNodes(BinaryRawWriterEx writer, Collection<ClusterNode> nodes); |
| |
| /** |
| * Process metadata from the platform. |
| * |
| * @param reader Reader. |
| */ |
| public void processMetadata(BinaryRawReaderEx reader); |
| |
| /** |
| * Write metadata for the given type ID. |
| * |
| * @param writer Writer. |
| * @param typeId Type ID. |
| */ |
| public void writeMetadata(BinaryRawWriterEx writer, int typeId); |
| |
| /** |
| * Write all available metadata. |
| * |
| * @param writer Writer. |
| */ |
| public void writeAllMetadata(BinaryRawWriterEx writer); |
| |
| /** |
| * Write schema for the given type ID and schema ID. |
| * |
| * @param writer Writer. |
| * @param typeId Type ID. |
| * @param schemaId Schema ID. |
| */ |
| public void writeSchema(BinaryRawWriterEx writer, int typeId, int schemaId); |
| |
| /** |
| * Write cluster metrics. |
| * |
| * @param writer Writer. |
| * @param metrics Metrics. |
| */ |
| public void writeClusterMetrics(BinaryRawWriterEx writer, @Nullable ClusterMetrics metrics); |
| |
| /** |
| * |
| * @param ptr Pointer to continuous query deployed on the platform. |
| * @param hasFilter Whether filter exists. |
| * @param filter Filter. |
| * @return Platform continuous query. |
| */ |
| public PlatformContinuousQuery createContinuousQuery(long ptr, boolean hasFilter, @Nullable Object filter); |
| |
| /** |
| * Create continuous query filter to be deployed on remote node. |
| * |
| * @param filter Native filter. |
| * @return Filter. |
| */ |
| public PlatformContinuousQueryFilter createContinuousQueryFilter(Object filter); |
| |
| /** |
| * Create remote message filter. |
| * |
| * @param filter Native filter. |
| * @param ptr Pointer of deployed native filter. |
| * @return Filter. |
| */ |
| public PlatformMessageFilter createRemoteMessageFilter(Object filter, long ptr); |
| |
| /** |
| * Check whether the given event type is supported. |
| * |
| * @param evtTyp Event type. |
| * @return {@code True} if supported. |
| */ |
| public boolean isEventTypeSupported(int evtTyp); |
| |
| /** |
| * Write event. |
| * |
| * @param writer Writer. |
| * @param evt Event. |
| */ |
| public void writeEvent(BinaryRawWriterEx writer, Event evt); |
| |
| /** |
| * Create local event filter. |
| * |
| * @param hnd Native handle. |
| * @return Filter. |
| */ |
| public PlatformEventFilterListener createLocalEventFilter(long hnd); |
| |
| /** |
| * Create remote event filter. |
| * |
| * @param pred Native predicate. |
| * @param types Event types. |
| * @return Filter. |
| */ |
| public PlatformEventFilterListener createRemoteEventFilter(Object pred, final int... types); |
| |
| /** |
| * Create native exception. |
| * |
| * @param cause Native cause. |
| * @return Exception. |
| */ |
| public PlatformNativeException createNativeException(Object cause); |
| |
| /** |
| * Create job. |
| * |
| * @param task Task. |
| * @param ptr Pointer. |
| * @param job Native job. |
| * @return job. |
| */ |
| public PlatformJob createJob(Object task, long ptr, @Nullable Object job); |
| |
| /** |
| * Create closure job. |
| * |
| * @param task Native task. |
| * @param ptr Pointer. |
| * @param job Native job. |
| * @return Closure job. |
| */ |
| public PlatformJob createClosureJob(Object task, long ptr, Object job); |
| |
| /** |
| * Create cache entry processor. |
| * |
| * @param proc Native processor. |
| * @param ptr Pointer. |
| * @return Entry processor. |
| */ |
| public PlatformCacheEntryProcessor createCacheEntryProcessor(Object proc, long ptr); |
| |
| /** |
| * Create cache entry filter. |
| * |
| * @param filter Native filter. |
| * @param ptr Pointer. |
| * @return Entry filter. |
| */ |
| public PlatformCacheEntryFilter createCacheEntryFilter(Object filter, long ptr); |
| |
| /** |
| * Create stream receiver. |
| * |
| * @param rcv Native receiver. |
| * @param ptr Pointer. |
| * @param keepBinary Keep binary flag. |
| * @return Stream receiver. |
| */ |
| public PlatformStreamReceiver createStreamReceiver(Object rcv, long ptr, boolean keepBinary); |
| |
| /** |
| * Create cluster node filter. |
| * |
| * @param filter Native filter. |
| * @return Cluster node filter. |
| */ |
| public PlatformClusterNodeFilter createClusterNodeFilter(Object filter); |
| |
| /** |
| * Gets the current platform name. |
| * |
| * @return Current platform name. |
| */ |
| public String platform(); |
| } |