package builtins import ( "monkey/object" "monkey/typing" "syscall" ) // Accept ... func Accept(args ...object.Object) object.Object { if err := typing.Check( "accept", args, typing.ExactArgs(1), typing.WithTypes(object.INTEGER_OBJ), ); err != nil { return newError(err.Error()) } var ( nfd syscall.Handle err error ) fd := int(args[0].(*object.Integer).Value) nfd, _, err = syscall.Accept(syscall.Handle(fd)) if err != nil { return newError("SocketError: %s", err) } return &object.Integer{Value: int64(nfd)} }