Search in sources :

Example 1 with IgfsInputStreamDescriptor

use of org.apache.ignite.internal.processors.igfs.IgfsInputStreamDescriptor in project ignite by apache.

the class IgfsControlResponse method readExternal.

/**
     * Reads object from data input.
     *
     * @param in Data input.
     * @throws IOException If read failed.
     * @throws ClassNotFoundException If could not find class.
     */
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
    byte[] hdr = new byte[RES_HEADER_SIZE];
    in.readFully(hdr);
    resType = U.bytesToInt(hdr, 0);
    boolean hasErr = hdr[4] != 0;
    if (hasErr) {
        err = in.readUTF();
        errCode = in.readInt();
        if (resType == RES_TYPE_ERR_STREAM_ID)
            res = in.readLong();
        return;
    }
    switch(resType) {
        case RES_TYPE_BOOLEAN:
            res = in.readBoolean();
            break;
        case RES_TYPE_LONG:
            res = in.readLong();
            break;
        case RES_TYPE_IGFS_PATH:
            {
                boolean hasVal = in.readBoolean();
                if (hasVal)
                    res = IgfsUtils.readPath(in);
                break;
            }
        case RES_TYPE_IGFS_PATH_SUMMARY:
            {
                boolean hasVal = in.readBoolean();
                if (hasVal) {
                    IgfsPathSummary sum = new IgfsPathSummary();
                    sum.readExternal(in);
                    res = sum;
                }
                break;
            }
        case RES_TYPE_IGFS_FILE:
            {
                boolean hasVal = in.readBoolean();
                if (hasVal) {
                    IgfsFileImpl file = new IgfsFileImpl();
                    file.readExternal(in);
                    res = file;
                }
                break;
            }
        case RES_TYPE_IGFS_STREAM_DESCRIPTOR:
            {
                boolean hasVal = in.readBoolean();
                if (hasVal) {
                    IgfsInputStreamDescriptor desc = new IgfsInputStreamDescriptor();
                    desc.readExternal(in);
                    res = desc;
                }
                break;
            }
        case RES_TYPE_HANDSHAKE:
            {
                boolean hasVal = in.readBoolean();
                if (hasVal) {
                    IgfsHandshakeResponse msg = new IgfsHandshakeResponse();
                    msg.readExternal(in);
                    res = msg;
                }
                break;
            }
        case RES_TYPE_STATUS:
            {
                boolean hasVal = in.readBoolean();
                if (hasVal) {
                    IgfsStatus msg = new IgfsStatus();
                    msg.readExternal(in);
                    res = msg;
                }
                break;
            }
        case RES_TYPE_COL_IGFS_FILE:
            {
                Collection<IgfsFile> files = null;
                int size = in.readInt();
                if (size >= 0) {
                    files = new ArrayList<>(size);
                    for (int i = 0; i < size; i++) {
                        IgfsFileImpl file = new IgfsFileImpl();
                        file.readExternal(in);
                        files.add(file);
                    }
                }
                res = files;
                break;
            }
        case RES_TYPE_COL_IGFS_PATH:
            {
                Collection<IgfsPath> paths = null;
                int size = in.readInt();
                if (size >= 0) {
                    paths = new ArrayList<>(size);
                    for (int i = 0; i < size; i++) paths.add(IgfsUtils.readPath(in));
                }
                res = paths;
                break;
            }
        case RES_TYPE_COL_IGFS_BLOCK_LOCATION:
            {
                Collection<IgfsBlockLocation> locations = null;
                int size = in.readInt();
                if (size >= 0) {
                    locations = new ArrayList<>(size);
                    for (int i = 0; i < size; i++) {
                        IgfsBlockLocationImpl location = new IgfsBlockLocationImpl();
                        location.readExternal(in);
                        locations.add(location);
                    }
                }
                res = locations;
                break;
            }
        case RES_TYPE_MODE_RESOLVER:
            {
                boolean hasVal = in.readBoolean();
                if (hasVal) {
                    IgfsModeResolver msg = new IgfsModeResolver();
                    msg.readExternal(in);
                    res = msg;
                }
                break;
            }
        case RES_TYPE_BYTE_ARRAY:
            assert false : "Response type of byte array should never be processed by marshaller.";
    }
}
Also used : IgfsPathSummary(org.apache.ignite.igfs.IgfsPathSummary) IgfsModeResolver(org.apache.ignite.internal.processors.igfs.IgfsModeResolver) IgfsHandshakeResponse(org.apache.ignite.internal.processors.igfs.IgfsHandshakeResponse) IgfsBlockLocationImpl(org.apache.ignite.internal.processors.igfs.IgfsBlockLocationImpl) ArrayList(java.util.ArrayList) IgfsInputStreamDescriptor(org.apache.ignite.internal.processors.igfs.IgfsInputStreamDescriptor) Collection(java.util.Collection) IgfsFileImpl(org.apache.ignite.internal.processors.igfs.IgfsFileImpl) IgfsStatus(org.apache.ignite.internal.processors.igfs.IgfsStatus)

Example 2 with IgfsInputStreamDescriptor

use of org.apache.ignite.internal.processors.igfs.IgfsInputStreamDescriptor in project ignite by apache.

the class HadoopIgfsOutProc method open.

/** {@inheritDoc} */
@Override
public HadoopIgfsStreamDelegate open(IgfsPath path, int seqReadsBeforePrefetch) throws IgniteCheckedException {
    final IgfsPathControlRequest msg = new IgfsPathControlRequest();
    msg.command(OPEN_READ);
    msg.path(path);
    msg.flag(true);
    msg.sequentialReadsBeforePrefetch(seqReadsBeforePrefetch);
    msg.userName(userName);
    IgfsInputStreamDescriptor rmtDesc = io.send(msg).chain(STREAM_DESCRIPTOR_RES).get();
    return new HadoopIgfsStreamDelegate(this, rmtDesc.streamId(), rmtDesc.length());
}
Also used : IgfsPathControlRequest(org.apache.ignite.internal.igfs.common.IgfsPathControlRequest) IgfsInputStreamDescriptor(org.apache.ignite.internal.processors.igfs.IgfsInputStreamDescriptor)

Example 3 with IgfsInputStreamDescriptor

use of org.apache.ignite.internal.processors.igfs.IgfsInputStreamDescriptor in project ignite by apache.

the class HadoopIgfsOutProc method open.

/** {@inheritDoc} */
@Override
public HadoopIgfsStreamDelegate open(IgfsPath path) throws IgniteCheckedException {
    final IgfsPathControlRequest msg = new IgfsPathControlRequest();
    msg.command(OPEN_READ);
    msg.path(path);
    msg.flag(false);
    msg.userName(userName);
    IgfsInputStreamDescriptor rmtDesc = io.send(msg).chain(STREAM_DESCRIPTOR_RES).get();
    return new HadoopIgfsStreamDelegate(this, rmtDesc.streamId(), rmtDesc.length());
}
Also used : IgfsPathControlRequest(org.apache.ignite.internal.igfs.common.IgfsPathControlRequest) IgfsInputStreamDescriptor(org.apache.ignite.internal.processors.igfs.IgfsInputStreamDescriptor)

Aggregations

IgfsInputStreamDescriptor (org.apache.ignite.internal.processors.igfs.IgfsInputStreamDescriptor)3 IgfsPathControlRequest (org.apache.ignite.internal.igfs.common.IgfsPathControlRequest)2 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 IgfsPathSummary (org.apache.ignite.igfs.IgfsPathSummary)1 IgfsBlockLocationImpl (org.apache.ignite.internal.processors.igfs.IgfsBlockLocationImpl)1 IgfsFileImpl (org.apache.ignite.internal.processors.igfs.IgfsFileImpl)1 IgfsHandshakeResponse (org.apache.ignite.internal.processors.igfs.IgfsHandshakeResponse)1 IgfsModeResolver (org.apache.ignite.internal.processors.igfs.IgfsModeResolver)1 IgfsStatus (org.apache.ignite.internal.processors.igfs.IgfsStatus)1