package externs;
import cpp.Void;
import cpp.SizeT;
import cpp.Star;
import cpp.Int32;
import cpp.ConstStar;
import cpp.ConstCharStar;
@:include("sys/socket.h")
@:native("struct sockaddr")
@:structAccess
extern class SockAddr {}
@:include("sys/un.h")
@:native("struct sockaddr_un")
@:structAccess
extern class SockAddrUnix {}
@:buildXml("")
@:include("unistd.h")
@:include("sys/socket.h")
extern class Socket {
@:native("socket") static function socket(domain:Int32, type:Int32, protocol:Int32):Int32;
@:native("bind") static function bind(sockfd:Int32, addr:ConstStar, addrlen:Int32):Int32;
@:native("listen") static function listen(sockfd:Int32, backlog:Int32):Int32;
@:native("accept") static function accept(sockfd:Int32, addr:Star, addrlen:Star):Int32;
@:native("connect") static function connect(sockfd:Int32, addr:ConstStar, addrlen:Int32):Int32;
@:native("read") static function read(fd:Int32, buf:Star, count:SizeT):SizeT;
@:native("write") static function write(fd:Int32, buf:ConstStar, count:SizeT):SizeT;
@:native("close") static function close(fd:Int32):Int32;
}