blob: da92c6c4824c30b4dc3b250d68913fd4be548d2c [file] [log] [blame]
/*
* 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();
}