NetMessage API

Oasis 네트워크 메세지는 NetMessage API 통하여 처리됩니다.

NetMessage는 네트워크 컴포넌트 인터페이스의 매개변수로 전달되고, 응답이나 요청을 위해 사용됩니다.

헤더 파일

OasisNet.h

함수

NetMessageRef netMessageCreate ( const NetMessageRef & msg , bool is_request )
OasisNet.h
NetMessage 객체를 생성합니다.
매개변수
msg  참조 NetMessage 객체입니다. 응답 NetMessage를 생성할 경우, 이 응답 메세지에 대한 요청 메세지입니다.
is_request  true 이면 요청 메세지를 생성하고, false이면 응답 메세지를 생성합니다.
리턴값
성공하면 NetMessage 객체를 리턴하고, 실패하면, nullptr을 리턴합니다.
int32_t netMessageLocalAddressString ( const NetMessageRef & msg , std::string & local_address_string , std::string & local_port_string )
OasisNet.h
로컬 서버의 주소를 문자열로 리턴합니다.
매개변수
msg  NetMessage 객체입니다.
local_address_string  OUT 로컬 서버의 IPv4 주소입니다.
local_port_string  OUT 로컬 서버의 포트 번호입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageRemoteAddressString ( const NetMessageRef & msg , std::string & remote_address_string , std::string & remote_port_string )
OasisNet.h
로컬 서버에 연결된 원격 클라이언트의 주소를 문자열로 리턴합니다.
매개변수
msg  NetMessage 객체입니다.
remote_address_string  원격 클라이언트의 IPv4 주소입니다.
remote_port_string  원격 클라이언트의 포트 번호입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageGetSocket ( const NetMessageRef & msg )
OasisNet.h
NetMessage 객체에 연결된 소켓 핸들번호입니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
소켓 번호를 리턴합니다. 실패하거나 연결되어 있지 않은 경우, -1을 리턴합니다.
int32_t netMessageAbortConnection ( const NetMessageRef & msg )
OasisNet.h
NetMessage 객체의 서버와 클라이언트 연결 끊습니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageGetStatusCodeAndReasonString ( const NetMessageRef & msg , std::string & reason_string )
OasisNet.h
NetMessage에서 HTTP나 기타 텍스트 기반 프로토콜의 응답 상태 코드와 이유 문자열을 리턴합니다.
매개변수
msg  NetMessage 객체입니다.
reason_string  OUT 이유 문자열을 리턴합니다.
리턴값
상태 코드를 리턴합니다.
int32_t netMessageUriGetPath ( const NetMessageRef & msg , std::string & uri_path )
OasisNet.h
NetMessage의 URI 경로를 얻습니다.
매개변수
msg  NetMessage 객체입니다.
uri_path  OUT URI 경로를 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
bool netMessageUriHasQueryParameter ( const NetMessageRef & msg , const char * key )
OasisNet.h
매개변수
msg  NetMessage 객체입니다.
key  확인할 키 문자열입니다.
리턴값
  • true: Query 집합에 키가 존재합니다.
  • false: Query 집합에 키가 존재하지 않습니다.
int32_t netMessageUriGetQueryParameterValue ( const NetMessageRef & msg , const char * key , std::string & value )
OasisNet.h
Query 키 값을 얻습니다.
매개변수
msg  NetMessage 객체입니다.
key  Query 키 문자열입니다.
value  OUT 키 값을 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageUriGetQueryParameters ( const NetMessageRef & msg , key_value_map_t & dictionary )
OasisNet.h
Query 집합을 key-value map으로 얻습니다.
매개변수
msg  NetMessage 객체입니다.
dictionary  OUT Query key-value map을 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageUriSetQueryParameterValue ( const NetMessageRef & msg , const char * key , const char * value )
OasisNet.h
Query 키에 값을 설정합니다.
매개변수
msg  NetMessage 객체입니다.
key  Query 키 문자열입니다.
value  키 값입니다.
리턴값
  • 0: 성공
  • -1: 실패
bool netMessageIsRequest ( const NetMessageRef & msg )
OasisNet.h
요청 메세지인지 확인합니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
  • true: 요청 메세지입니다.
  • false: 응답 메세지입니다.
int32_t netMessageSetStatusCodeAndReasonString ( const NetMessageRef & msg , int32_t status_code , const char * reason_string )
OasisNet.h
메세지에 응답코드와 이유를 설정합니다.
매개변수
msg  NetMessage 객체입니다.
status_code  응답 코드입니다.
reason_string  응답 코드에 대한 이유(설명) 문자열입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageSetContent ( const NetMessageRef & msg , const char * content_type_string , const void * content_data , size_t content_length )
OasisNet.h
메세지에 컨텐츠 데이터를 저장합니다.
매개변수
msg  NetMessage 객체입니다.
content_type_string  메세지의 Content-Type 입니다.
content_data  메세지의 컨텐츠 데이터 포인터 입니다.
content_length  컨텐츠 데이터 길이입니다. 바이트 단위입니다.
리턴값
  • 0: 성공
  • -1: 실패
ssize_t netMessageGetContentLength ( const NetMessageRef & msg )
OasisNet.h
메세지의 컨텐츠 길이를 얻습니다. 바이트 단위입니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
컨텐츠 길이를 리턴합니다. 실패하면 -1을 리턴합니다. 컨텐츠가 비어 있으면 0을 리턴합니다.
int32_t netMessageGetContentType ( const NetMessageRef & msg , std::string & content_type )
OasisNet.h
메세지의 Content-Type을 얻습니다.
매개변수
msg  NetMessage 객체입니다.
content_type  OUT Content-Type을 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
ssize_t netMessageGetContent ( const NetMessageRef & msg , std::vector<char> & content )
OasisNet.h
메세지 컨텐츠 데이터를 얻습니다.
매개변수
msg  NetMessage 객체입니다.
content  OUT 컨텐츠 데이터를 리턴할 벡터입니다.
리턴값
성공하면 컨테츠 길이 (바이트 단위)를 리턴합니다. 실패하면 -1을 리턴합니다.
bool netMessageIsChunkedContent ( const NetMessageRef & msg )
OasisNet.h
메세지 컨텐츠가 chunked 형태인지 확인합니다. 큰 컨텐츠의 메세지는 쪼개서 여러개 메세지로 전송됩니다. 완전히 다 받을 때까지 컨첸츠 길이는 0입니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
  • true: chunked 메세지입니다.
  • false: 단일 메세지입니다.
ssize_t netMessageGetCurrentContentLength ( const NetMessageRef & msg )
OasisNet.h
메세지의 현재 컨텐츠 길이를 얻습니다. 바이트 단위입니다. 메세지 컨텐츠가 커서 분할되어 받아질 때 현재 컨텐츠 길이를 얻습니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
성공하면 현재 컨텐츠 길이를 리턴합니다. 실패하면 -1을 리턴합니다.
bool netMessageIsContentReady ( const NetMessageRef & msg )
OasisNet.h
메세지 컨첸츠가 모두 다 받아서 준비된 상태인지 확인합니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
  • true: 준비된 상태입니다.
  • false: 아직 다운받는 중입니다.
int32_t netMessageGetContentFilePath ( const NetMessageRef & msg , std::string & filepath )
OasisNet.h
메세지의 컨텐츠를 파일에 저장할 경우, 컨텐츠 경로입니다. 파일에 저장하는 경우는 cache가 허용된 Content-Type에 대해 적용됩니다.
매개변수
msg  NetMessage 객체입니다.
filepath  OUT 컨텐츠가 저장된 파일 경로입니다.
리턴값
  • 0: 성공
  • -1: 실패
bool netMessageIsConnected ( const NetMessageRef & msg )
OasisNet.h
연결된 상태인지 확인합니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
  • true: 연결된 상태입니다.
  • false: 연결되지 않은 상태입니다.
int32_t netMessageAddFieldToMultipartFormData ( const NetMessageRef & msg , const char * field_name , const char * field_value )
OasisNet.h
POST 메세지의 경우 사용자가 폼 데이터를 입력하였을 때, 필드 이름과 값을 메세지에 추가합니다. 실제 폼 필드가 아니어도 임의의 필드 이름과 값을 추가할 수 있습니다.
매개변수
msg  NetMessage 객체입니다.
field_name  필드 이름입니다.
field_value  필드 값입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageAddContentToMultipartFormData ( const NetMessageRef & msg , const char * field_name , const char * content , size_t content_length , const char * content_type )
OasisNet.h
Multipart 메세지에 컨텐츠 데이터를 추가합니다.
매개변수
msg  NetMessage 객체입니다.
field_name  컨텐츠 필드 이름입니다.
content  컨텐츠 데이터 입니다.
content_length  컨텐츠 데이터 길이입니다. 바이트 단위입니다.
content_type  Content-Type 입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageAddFileToMultipartFormData ( const NetMessageRef & msg , const char * field_name , const char * file_name , const char * content , size_t content_length , const char * content_type )
OasisNet.h
Multipart 메세지에 파일을 추가합니다. 서버 단으로 파일 전송할 때 유용합니다.
매개변수
msg  NetMessage 객체입니다.
field_name  필드 이름입니다.
file_name  파일명입니다.
content  파일 데이터입니다.
content_length  파일 데이터 길이입니다. 바이트 단위입니다.
content_type  Content-Type 입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageAddFileToMultipartFormData ( const NetMessageRef & msg , const char * field_name , const char * file_name , const char * file_path , const char * content_type )
OasisNet.h
Multipart 메세지에 파일을 추가합니다. 파일 크기가 클 경우, 이 API를 이용합니다. 서버 단으로 파일 전송할 때 유용합니다.
매개변수
msg  NetMessage 객체입니다.
field_name  필드 이름입니다.
file_name  파일명입니다.
file_path  전송할 파일의 경로입니다.
content_type  Content-Type입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageSetHeaderField ( const NetMessageRef & msg , const char * name_string , const char * value_string )
OasisNet.h
메세지에 헤더 필드를 추가합니다.
매개변수
msg  NetMessage 객체입니다.
name_string  헤더 필드 이름입니다.
value_string  헤더 필드 값입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageSetCorsHeaderFields ( const NetMessageRef & msg , const NetMessageRef & req_msg , const char * origin = nullptr , const char * methods = nullptr , const char * headers = nullptr , bool allow_credentials = true , bool allow_private_network_access = true , int32_t max_age = 86400 )
OasisNet.h
메세지에 CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유) 관련 헤더 필드를 추가합니다.
매개변수
msg  NetMessage 객체입니다.
req_msg  요청 NetMessage 객체입니다.
origin  Access-Control-Allow-Origin 헤더 필드를 추가합니다. nullptr일 경우, "✱" 값이 할당됩니다. msg가 응답 메세지이고, Access-Control-Allow-Origin 헤더 필드 값이 "✱"인 경우에, 요청 메세지(req_msg)의 Origin 헤더 필드가 있으면, 요청 메세지의 Origin 헤더 필드 값으로 대체될 수 있습니다. allow_credentialsallow_private_network_access 설명 참고합니다.
methods  Access-Control-Allow-Methods 헤더 필드를 추가합니다. nullptr일 경우, "OPTIONS,GET" 값이 할당됩니다.
headers  Access-Control-Allow-Headers 헤더 필드를 추가합니다. nullptr일 경우, "✱" 값이 할당됩니다.
allow_credentials  이 매개변수는 msg가 응답 메세지이고, 요청 메세지(req_msg)에 Access-Control-Request-Credentials 헤더 필드가 있는 경우에 적용됩니다. 요청 메시지가 유효하지 않을 경우 적용되지 않습니다. 응답 메세지의 Access-Control-Allow-Credentials 헤더 필드 값을 allow_credentials 에 따라 "true" 또는 "false" 값으로 설정합니다. 요청 메세지의 Access-Control-Request-Credentials 헤더 필드 값이 "true" 이고, origin 값이 nullptr이나 "✱" 인 경우, 응답 메세지의 Access-Control-Allow-Origin 헤더 필드 값을 요청 메세지의 Orgin 헤더 필드 값으로 대체됩니다.
allow_private_network_access  이 매개변수는 msg가 응답 메세지이고, 요청 메세지(req_msg)에 Access-Control-Request-Private-Network 헤더 필드가 있는 경우에 적용됩니다. 요청 메시지가 유효하지 않을 경우 적용되지 않습니다. 응답 메세지의 Access-Control-Allow-Private-Network 헤더 필드 값을 allow_private_network_access 에 따라 "true" 또는 "false" 값으로 설정합니다. 요청 메세지의 Access-Control-Request-Private-Network 헤더 필드 값이 "true"이고, origin 값이 nullptr이나 "✱" 인 경우, 응답 메세지의 Access-Control-Allow-Origin 헤더 필드 값을 요청 메세지의 Orgin 헤더 필드 값으로 대체됩니다.
max_age  Access-Control-Max-Age 헤더 필드 값을 추가합니다. 0 일경우, 86400 초로 설정합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageGetHeaderFieldValue ( const NetMessageRef & msg , const char * name_string , std::string & value_string )
OasisNet.h
메세지의 헤더 필드 값을 얻습니다.
매개변수
msg  NetMessage 객체입니다.
name_string  헤더 필드 이름입니다.
value_string  OUT 필드 값을 리턴합니다.
리턴값
성공할 경우, 헤더 필드 값의 길이를 리턴합니다. 실패할 경우, -1을 리턴합니다.
int32_t netMessageGetHeaderFields ( const NetMessageRef & msg , key_value_map_t & dictionary )
OasisNet.h
메세지의 헤더 필드들을 key-value map 형태로 얻습니다.
매개변수
msg  NetMessage 객체입니다.
dictionary  OUT 헤더 필드 사전용 key-value map 을 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageGetFormDataFieldValue ( const NetMessageRef & msg , const char * field_name , std::string & field_value )
OasisNet.h
메세지에서 폼 데이터 필드의 값을 얻습니다.
매개변수
msg  NetMessage 객체입니다.
field_name  필드 이름입니다.
field_value  OUT 필드 값을 리턴합니다.
리턴값
성공할 경우, 필드 값의 길이를 리턴합니다. 실패할 경우, -1을 리턴합니다.
int32_t netMessageGetFormDataFileData ( const NetMessageRef & msg , const char * field_name , std::string & content_type , std::string & file_name , char ** file_data_ptr )
OasisNet.h
메세지에서 폼 데이터 파일 필드의 데이터를 얻습니다.
매개변수
msg  NetMessage 객체입니다.
field_name  필드 이름입니다.
content_type  OUT Content-Type을 리턴합니다.
file_name  OUT 파일명을 리턴합니다.
file_data_ptr  OUT nullptr이 아닌 경우, 내부에서 보관하고 있는 데이터의 포인터를 리턴합니다. 데이터를 복사하지 않습니다.
리턴값
성공할 경우, 데이터 길이를 리턴합니다. 실패할 경우, -1을 리턴합니다.
int32_t netMessageGetFormDataFileData ( const NetMessageRef & msg , const char * field_name , std::string & content_type , std::string & file_name , std::vector<char> & file_data )
OasisNet.h
메세지에서 폼 데이터 파일 필드의 데이터를 얻습니다.
매개변수
msg  NetMessage 객체입니다.
field_name  필드 이름입니다.
content_type  OUT Content-Type을 리턴합니다.
file_name  OUT 파일명을 리턴합니다.
file_data  OUT 파일 데이터가 저장될 벡터입니다. 캐쉬에 저장된 경우, 캐쉬 파일 내용을 읽어서 저장됩니다.
리턴값
성공할 경우, 데이터 길이를 리턴합니다. 실패할 경우, -1을 리턴합니다.
int32_t netMessageSetMethod ( const NetMessageRef & msg , const char * method_string )
OasisNet.h
메세지의 Method를 설정합니다.
매개변수
msg  NetMessage 객체입니다.
method_string  Method 이름입니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t netMessageGetMethod ( const NetMessageRef & msg , std::string & method_string )
OasisNet.h
Method 이름을 얻습니다.
매개변수
msg  NetMessage 객체입니다.
method_string  OUT Method 이름을 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
ssize_t netMessageSendFile ( const NetMessageRef & msg , const char * file_path , const char * mime_type_string = nullptr )
OasisNet.h
로컬 서버에서 파일 전송 요청에 대한 응답으로 파일을 원격 클라이언트에 백그라운드로 파일 데이터를 전송합니다. 파일 전송에 오류가 발생할 경우, 클라이언트에 오류 응답 코드를 전송합니다.
매개변수
msg  NetMessage 객체입니다.
file_path  파일 경로입니다.
mime_type_string  Content-Type 입니다.
리턴값
성공할 경우 0을 리턴하고, 실패할 경우 -1을 리턴합니다.
int32_t netMessagePost ( const NetMessageRef & msg )
OasisNet.h
메세지를 전송합니다. 전송 마칠 때까지 기다리지 않고 바로 리턴을 하며, 오류가 발생할 경우, 인터페이스를 통하여 오류 이벤트가 전달됩니다.
매개변수
msg  NetMessage 객체입니다.
리턴값
  • 0: 성공
  • -1: 실패