/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.docker.client; import com.sun.jna.Library; import com.sun.jna.Structure; import com.sun.jna.ptr.LongByReference; import java.util.Arrays; import java.util.List; /** * @author andrew00x */ // C language functions public interface CLibrary extends Library { int AF_UNIX = 1; // Defined in 'sys/socket.h' int SOCK_STREAM = 1; // Defined in 'sys/socket.h' // Defined in 'unix.h', see http://man7.org/linux/man-pages/man7/unix.7.html class SockAddrUn extends Structure { public static final int UNIX_PATH_MAX = 108; public short sun_family; public byte[] sun_path; public SockAddrUn(String path) { byte[] pathBytes = path.getBytes(); if (pathBytes.length > UNIX_PATH_MAX) { throw new IllegalArgumentException(String.format("Path '%s' is too long. ", path)); } sun_family = AF_UNIX; sun_path = new byte[pathBytes.length + 1]; System.arraycopy(pathBytes, 0, sun_path, 0, Math.min(sun_path.length - 1, pathBytes.length)); allocateMemory(); } @Override protected List getFieldOrder() { return Arrays.asList("sun_family", "sun_path"); } } int socket(int domain, int type, int protocol); int connect(int fd, SockAddrUn sock_addr, int addr_len); int send(int fd, byte[] buffer, int count, int flags); int recv(int fd, byte[] buffer, int count, int flags); int close(int fd); String strerror(int errno); int write(int fd, byte[] buff, int count); int read(int fd, byte[] buf, int count); int eventfd(int initval, int flag); int eventfd_read(int fd, LongByReference val); int open(String path, int mode); int O_RDONLY = 0x00; int O_WRONLY = 0x01; }