파일시스템 API

OFFS는 Oasis 파일 시스템 이름입니다.

oasis::fs 네임스페이스에서 호출됩니다.

Oasis 파일시스템offs.fuse, mkfs.offs, fsck.offs 툴을 사용하여 관리됩니다. 응용 프로그램이 이들 명령어를 system이나 popen 함수 등을 이용하여 수행할 경우, 독립된 프로세스에서 진행하고 그 결과를 IPC를 통하여 처리하는 방식을 권장합니다. 파이프 IPC 예제를 참고합니다.

헤더 파일

OasisFs.h

함수

int32_t setup ( key_value_map_t & parameters )
OasisFS.h
Oasis가 OFFS를 초기화 합니다. oasis::initialize를 호출했다면 이 함수를 호출할 필요 없습니다.
매개변수
parameters  OFFS 초기화에 필요한 key-value map입니다.
리턴값
  • 0: 성공
  • -1: 실패

OFFS 초기화에 필요한 key-value map은 아래와 같습니다.

기본값
필수
설명
offs-qsize-max
10240
 
파일시스템 내부의 쓰기용 Q 최대 크기를 지정합니다. KBytes 단위입니다. 메모리를 할당하지는 않습니다.
offs-disable
0
 
파일시스템을 사용하지 않습니다. "1"인 경우, 녹화나 재생 등의 컴포넌트에서 파일 저장과 읽기를 할 수 없습니다.
offs-overwrite-if-exist
1
 
같은 파일명의 파일이 있으면 덮어쓸지 여부를 지정합니다. 1값이면 덮어씁니다. 덮어쓰지 않을 경우, 이름을 변경하여 생성합니다.
offs-cache-size
0
 
파일시스템 내부의 읽기용 캐쉬 크기를 지정합니다. Kbytes 단위입니다. 0 값이면 사용하지 않습니다.
int32_t cleanup ( )
OasisFS.h
Oasis가 OFFS를 해제합니다. oasis::finalize를 호출했다면, 이 함수를 호출할 필요 없습니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t start ( )
OasisFS.h
Oasis가 OFFS를 시작합니다. oasis::initialize를 호출했다면 이 함수를 호출할 필요 없습니다. 이미 시작된 경우는 무시됩니다.
리턴값
  • 0: 성공
  • -1: 실패
void stop ( )
OasisFS.h
Oasis가 OFFS를 중단합니다. oasis::finalize를 호출했다면, 이 함수를 호출할 필요 없습니다.
bool isConnected ( )
OasisFS.h
Oasis가 OFFS에 연결되었는지 확인합니다.
리턴값
  • true: OFFS에 연결된 상태입니다.
  • false: OFFS에 연결 안 된 상태입니다.
bool isBusy ( )
OasisFs.h
OFFS가 녹화 데이터를 쓰고 있는지 확인합니다.
리턴값
  • true: 데이터를 쓰고 있습니다.
  • false: 데이터를 쓰고 있지 않습니다.
void clearStatusError ( )
OasisFs.h
OFFS가 파일을 생성하거나 옮기거나 읽거나 쓰는 중 발생했던 오류를 클리어합니다. 클리어한 후에는 파일 시스템에 작업 요청을 진행할 수 있습니다.
int32_t setOffsCurrentThresholds ( ssize_t normal_qsize , ssize_t event_qsize , int32_t duration_msec )
OasisFs.h
OFFS에 강제로 일정 시간동안 Q 크기를 고정시킵니다. OFFS는 큐가 거의 다 차게 되면 어느 정도(threshold) 미만이 될 때까지 대기합니다. 녹화 부하 테스트 용도입니다.
매개변수
normal_qsize  일반 녹화용 큐 크기입니다. 바이트 단위입니다.
event_qsize  이벤트 녹화용 큐 크기입니다. 바이트 단위입니다.
duration_msec  고정으로 유지될 시간입니다. 밀리초 단위입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t enableOffsOverwriteIfFileExists ( bool enable )
OasisFs.h
파일 생성시 같은 이름의 파일이 폴더 내에 존재할 경우, 덮어 쓸지 여부를 지정합니다.
매개변수
enable  true이면 파일을 덮어 씁니다. false이면 고유이름으로 변경하여 저장합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t offsLockFile ( const char * file_path )
OasisFs.h
지정한 파일을 삭제나 이동 시키지 못 하도록 락을 겁니다. 파일을 보관할 용도로 사용합니다.
매개변수
file_path  락을 걸 파일의 절대 경로입니다. 파일은 OFFS 마운팅된 경로 상에 존재해야 합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t offsUnlockFile ( const char * file_path )
OasisFs.h
락 걸린 파일을 해제합니다.
매개변수
file_path  락을 해제할 파일의 절대 경로입니다. 파일은 OFFS 마운팅된 경로 상에 존재해야 합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t offsIsFileLocked ( const char * file_path , bool * locked )
OasisFs.h
파일이 락이 걸려 있는지 여부를 확인합니다.
매개변수
file_path  확인할 파일의 절대 경로입니다.
locked  OUT 락이 걸려 있으면 true를 리턴하고, 락이 걸려 있지 않으면 false를 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t offsGetLockedFileNames ( const char * dir_path , std::list<std::string> & filenames )
OasisFs.h
지정한 폴더에서 락 걸린 파일 목록을 얻습니다.
매개변수
dir_path  폴더 경로입니다.
filenames  OUT 파일 이름 목록을 리턴합니다.
리턴값
성공할 경우, 파일 개수를 리턴합니다. 실패할 경우, -1을 리턴합니다.
ssize_t offsDiskWrite ( off64_t offset , void * buffer , size_t size , int32_t size_offset , uint32_t flags , bool is_event )
OasisFs.h
OFFS에 직접 데이터 쓰기를 합니다.
매개변수
offset  쓸 디스크 오프셋 값입니다.
buffer  쓸 데이터 버퍼 포인터입니다.
size  데이트 크기입니다. 바이트 단위입니다.
size_offset  0 값을 지정합니다.
flags  0 값을 지정합니다.
is_event  true 이면 이벤트 큐를 사용합니다.
리턴값
성공할 경우, 데이크 크기를 리턴합니다. 실패할 경우 -1을 리턴합니다.
!!! Warning 이 함수를 사용하면 저장 장치를 다시 포맷해야 합니다.
ssize_t offsDiskRead ( off64_t offset , void * buffer , size_t size , bool is_event )
OasisFs.h
OFFS에 직접 데이터 읽기를 합니다.
매개변수
offset  읽을 디스크 오프셋 값입니다.
buffer  데이터 메모리 포인터 입니다.
size  데이터 메모리 크기입니다. 바이트 단위입니다.
is_event  true이면 이벤트 큐를 이용합니다.
리턴값
성공하면 읽은 데이트 크기를 리턴합니다. 실패하면 -1을 리턴합니다.
int32_t offsListFiles ( const char * dir_path , std::list<OffsListEntry> & files )
OasisFs.h
지정한 폴더의 파일 목록을 얻습니다. 일반 쉘 명령보다 각 파일에 대한 상세 정보를 얻습니다.
매개변수
dir_path  탐색할 폴더 경로입니다. 폴더 경로는 OFFS 마운팅 경로 상에 존재해야 합니다.
files  OUT 파일 목록을 리턴합니다. OffsListEntry에 대한 내용은 아래 구조체 절을 참조합니다.
리턴값
성공하면 0을 리턴하고, 실패하면 음수의 errno 값을 리턴합니다.
int32_t offsConfigLocalFormatInfo ( const char * folder_path , size_t file_size )
OasisFs.h
OFFS가 SD카드 장치 경로로 마운팅하지 않고 기기내 임시 폴더 공간을 사용할 경우, 해당 폴더의 포맷 환경 조건을 변경합니다. 폴더가 아직 OFFS 폴더 목록에 없는 파일을 생성하고 저장하는 경우, 파일의 최대 크기는 16MB 입니다.
매개변수
folder_path  폴더 경로입니다. 폴더 경로는 OFFS 마운팅 경로 상에 존재하지 않습니다.
file_size  변경할 파일 크기입니다. "0" 값을 지정하면 OFFS 폴더 목록에서 해당 폴더를 삭제합니다. 지정한 폴더가 존재하지 않으면 해당 폴더명과 폴더내 파일의 최대 크기 정보를 생성하여 OFFS 폴더 목록에 추가합니다.
리턴값
  • 0: 성공
  • -1: 실패

구조체

struct OffsListEntry
OasisFs.h
oasis::fs::offsListFiles API 호출 시 매개변수로 사용됩니다.
타입
이름
설명
char
filename_[OFFS_LIST_FILENAME_MAX]
파일 이름입니다.
size_t
size_
파일 크기입니다.
uint64_t
created_
생성된 날짜입니다. time_t 형으로 timelocaltime_r 함수를 이용하여 일시로 변환할 수 있습니다.
uint64_t
modified_
수정된 날짜입니다. time_t 형으로 timelocaltime_r 함수를 이용하여 일시로 변환할 수 있습니다.
int32_t
seconds_
녹화 재생 시간입니다. 초단위입니다.
uint32_t
flags_
0x00000001 값이면 현재 이 파일은 쓰는 중입니다. 그렇치 않으면 0 값입니다.

파일명 길이는 OffsFs.h 에 아래와 같이 정의 되어 있습니다.

#define OFFS_LIST_FILENAME_MAX 128