亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? obex.c

?? 最新的openobex源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
	/* Now, that's the interesting bit !	 * We split the sockets apart, one for each instance */	self->fd = server->fd;	self->serverfd = -1;	self->writefd = -1;	server->fd = -1;        self->state = MODE_SRV | STATE_IDLE;	return self;out_err:	if (self->tx_msg != NULL)		buf_free(self->tx_msg);	if (self->rx_msg != NULL)		buf_free(self->rx_msg);	free(self);	return NULL;}/** * OBEX_HandleInput - Let the OBEX parser do some work * @self: OBEX handle * @timeout: Maximum time to wait in seconds * * Let the OBEX parser read and process incoming data. If no data * is available this call will block. * * When a request has been sent or you are waiting for an incoming server- * request you should call this function until the request has finished. * * Like select() this function returns -1 on error, 0 on timeout or * positive on success. */int OBEX_HandleInput(obex_t *self, int timeout){	DEBUG(4, "\n");	obex_return_val_if_fail(self != NULL, -1);	return obex_transport_handle_input(self, timeout);}/** * OBEX_CustomDataFeed - Feed OBEX with data when using a custom transport * @self: OBEX handle * @inputbuf: Pointer to custom data * @actual: Length of buffer */int OBEX_CustomDataFeed(obex_t *self, uint8_t *inputbuf, int actual){	DEBUG(3, "\n");	obex_return_val_if_fail(self != NULL, -1);	obex_return_val_if_fail(inputbuf != NULL, -1);	return obex_data_indication(self, inputbuf, actual);}/** * OBEX_TransportConnect - Try to connect to peer * @self: OBEX handle * @saddr: Address to connect to * @addrlen: Length of address * * Returns -1 on error. */int OBEX_TransportConnect(obex_t *self, struct sockaddr *saddr, int addrlen){	DEBUG(4, "\n");	obex_return_val_if_fail(self != NULL, -1);	obex_return_val_if_fail((addrlen == 0) || (saddr != NULL), -1);	memcpy(&self->trans.peer, saddr, addrlen);	return obex_transport_connect_request(self);}/** * OBEX_TransportDisconnect - Disconnect transport * @self: OBEX handle */int OBEX_TransportDisconnect(obex_t *self){	DEBUG(4, "\n");	obex_return_val_if_fail(self != NULL, -1);	obex_transport_disconnect_request(self);	return 0;}/** * OBEX_GetFD - Get FD * @self: OBEX handle * * Returns the filedescriptor of the transport. Returns -1 on error. * Note that if you for example have a custom transport, no fd * is available. * * The returned filehandle can be used to do select() on, before * calling OBEX_HandleInput() * * There is one subtelty about this function. When the OBEX connection is * established, it returns the connection filedescriptor, while for * an unconnected server it will return the listening filedescriptor. * This mean that after receiving an incomming connection, you need to * call this function again. */int OBEX_GetFD(obex_t *self){	obex_return_val_if_fail(self != NULL, -1);	if(self->fd == -1)		return self->serverfd;	return self->fd;}/** * OBEX_Request - Start a request (as client) * @self: OBEX handle * @object: Object containing request * * Returns negative on error. */int OBEX_Request(obex_t *self, obex_object_t *object){	DEBUG(4, "\n");	obex_return_val_if_fail(self != NULL, -1);	if (self->object)	{		DEBUG(1, "We are busy.\n");		return -EBUSY;	}	obex_return_val_if_fail(object != NULL, -1);	self->object = object;        self->state = STATE_START | MODE_CLI;		return obex_client(self, NULL, 0);}/** * OBEX_CancelRequest - Cancel an ongoing operation * @self: OBEX handle * @nice: If true an OBEX Abort will be sent if beeing client *        or OBEX_RSP_UNAUTHORIZED as reponse if beeing server. * * */int OBEX_CancelRequest(obex_t *self, int nice){	obex_return_val_if_fail(self != NULL, -1);	return obex_cancelrequest(self, nice);}/** * OBEX_SuspendRequest - Suspend transfer of an object * @self: OBEX handle * @object: object to suspend (NULL to suspend currently transfered object) */int OBEX_SuspendRequest(obex_t *self, obex_object_t *object){	obex_return_val_if_fail(object != NULL || self->object != NULL, -1);	return obex_object_suspend(object ? object : self->object);}/** * OBEX_ResumeRequest - Resume transfer of an object * @self: OBEX handle */int OBEX_ResumeRequest(obex_t *self){	obex_return_val_if_fail(self->object != NULL, -1);	return obex_object_resume(self, self->object);}/** * OBEX_ObjectNew - Create a new OBEX Object * @self: OBEX handle * @cmd: command of object * * Returns a pointer to a new OBEX Object or %NULL on error. */obex_object_t *OBEX_ObjectNew(obex_t *self, uint8_t cmd){	obex_object_t *object;	obex_return_val_if_fail(self != NULL, NULL);	object = obex_object_new();	if(object == NULL)		return NULL;	obex_object_setcmd(object, cmd, (uint8_t) (cmd | OBEX_FINAL));	/* Need some special woodoo magic on connect-frame */	if(cmd == OBEX_CMD_CONNECT)	{		if(obex_insert_connectframe(self, object) < 0)	{			obex_object_delete(object);			object = NULL;		}	}	return object;}/** * OBEX_ObjectDelete - Delete an OBEX object * @self: OBEX handle * @object: object to delete. * * Note that as soon as you have passed an object to the lib using * OBEX_Request(), you shall not delete it yourself. */int OBEX_ObjectDelete(obex_t *self, obex_object_t *object){	obex_return_val_if_fail(object != NULL, -1);	return obex_object_delete(object);}/** * OBEX_ObjectAddHeader - Attach a header to an object * @self: OBEX handle * @object: OBEX object * @hi: Header identifier * @hv: Header value * @hv_size: Header size * @flags: See obex.h for possible values * * Add a new header to an object. * * If you want all headers to fit in one packet, use the flag * %OBEX_FL_FIT_ONE_PACKET on all headers you add to an object. * * To stream a body add a body header with hv.bs = %NULL and set the flag * %OBEX_FL_STREAM_START. You will now get %OBEX_EV_STREAMEMPTY events as * soon as the the parser wants you to feed it with more data. * * When you get an %OBEX_EV_STREAMEMPTY event give the parser some data by * adding a body-header and set the flag %OBEX_EV_STREAM_DATA. When you * have no more data to send set the flag %OBEX_EV_STREAM_DATAEND instead. * * After adding a header you are free to do whatever you want with the buffer * if you are NOT streaming. If you are streaming you may not touch the * buffer until you get another %OBEX_EV_STREAMEMTPY or until the request * finishes. * * The headers will be sent in the order you add them. */int OBEX_ObjectAddHeader(obex_t *self, obex_object_t *object, uint8_t hi,				obex_headerdata_t hv, uint32_t hv_size,				unsigned int flags){	obex_return_val_if_fail(self != NULL, -1);	obex_return_val_if_fail(object != NULL, -1);	return obex_object_addheader(self, object, hi, hv, hv_size, flags);}/** * OBEX_ObjectGetNextHeader - Get next available header from an object * @self: OBEX handle * @object: OBEX object * @hi: Pointer to header identifier * @hv: Pointer to hv * @hv_size: Pointer to hv_size * * Returns 0 when no more headers are available. * * All headers are read-only. * * You will get the headers in the received order. */int OBEX_ObjectGetNextHeader(obex_t *self, obex_object_t *object, uint8_t *hi,					obex_headerdata_t *hv,					uint32_t *hv_size){	obex_return_val_if_fail(self != NULL, -1);	obex_return_val_if_fail(object != NULL, -1);	return obex_object_getnextheader(self, object, hi, hv, hv_size);}/** * OBEX_ObjectReParseHeaders - Allow the user to parse again the rx headers * @self: OBEX handle * @object: OBEX object * * The user must have extracted all headers from the object before * calling this function (until %OBEX_ObjectGetNextHeader() returns 0). * Next call to %OBEX_ObjectGetNextHeader() will return the first received * header. * * Returns 1 on success * Returns 0 if failed due previous parsing not completed. */int OBEX_ObjectReParseHeaders(obex_t *self, obex_object_t *object){	obex_return_val_if_fail(self != NULL, -1);	obex_return_val_if_fail(object != NULL, -1);	return obex_object_reparseheaders(self, object);}/** * OBEX_ObjectReadStream - Read data from body stream * @self: OBEX handle * @object: OBEX object * @buf: A pointer to a pointer which this function will set to a buffer which * shall be read (and ONLY read) after this function returns. * * To recieve the body as a stream call this function with buf = %NULL as soon * as you get an OBEX_EV_REQHINT event. * * You will now recieve %OBEX_EV_STREAMAVAIL events when data is available * for you. Call this function to get the data. * * Note! When receiving a stream data is not buffered so if you don't call this * function when you get an %OBEX_EV_STREAMAVAIL event data will be lost. * * Returns the number of bytes in buffer, or 0 for end-of-stream. */int OBEX_ObjectReadStream(obex_t *self, obex_object_t *object, const uint8_t **buf){	obex_return_val_if_fail(self != NULL, -1);	obex_return_val_if_fail(object != NULL, -1);	return obex_object_readstream(self, object, buf);}/** * OBEX_ObjectSetRsp - Sets the response to a received request. * @self: OBEX handle * @object: OBEX object * @rsp: Respose code in non-last packets * @lastrsp: Response code in last packet * * Returns -1 on error. */int OBEX_ObjectSetRsp(obex_object_t *object, uint8_t rsp, uint8_t lastrsp){	obex_return_val_if_fail(object != NULL, -1);	return obex_object_setrsp(object, rsp, lastrsp);}/** * OBEX_ObjectGetNonHdrData - Get any data which was before headers * @object: OBEX object * @buffer: Pointer to a pointer which will point to a read-only buffer * * Returns the size of the buffer or -1 for error. */int OBEX_ObjectGetNonHdrData(obex_object_t *object, uint8_t **buffer){	obex_return_val_if_fail(object != NULL, -1);	if(!object->rx_nonhdr_data)		return 0;	*buffer = object->rx_nonhdr_data->data;	return object->rx_nonhdr_data->data_size;}/** * OBEX_ObjectSetNonHdrData - Set data to send before headers * @object: OBEX object * @buffer: Data to send * @len: Length to data * * Some commands (notably SetPath) send data before headers. Use this * function to set this data. */int OBEX_ObjectSetNonHdrData(obex_object_t *object, const uint8_t *buffer, unsigned int len){	//TODO: Check that we actually can send len bytes without violating MTU	obex_return_val_if_fail(object != NULL, -1);	obex_return_val_if_fail(buffer != NULL, -1);	if(object->tx_nonhdr_data)		return -1;	object->tx_nonhdr_data = buf_new(len);	if(object->tx_nonhdr_data == NULL)		return -1;	buf_insert_end(object->tx_nonhdr_data, (uint8_t *)buffer, len);	return 1;}/** * OBEX_ObjectSetHdrOffset - Set headeroffset * @object: OBEX object

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品一区二区| 91精品国产色综合久久不卡蜜臀 | 国产精品乱码人人做人人爱| 日韩一区二区免费在线观看| 日韩一级二级三级| 日韩精品一区二| 精品免费一区二区三区| 久久日一线二线三线suv| 2024国产精品| 国产亚洲欧洲997久久综合| 国产精品污污网站在线观看| 国产精品色婷婷| 亚洲美女免费视频| 亚洲一区二区在线观看视频| 一区二区成人在线| 亚洲国产精品视频| 免费不卡在线观看| 国产乱国产乱300精品| 懂色av中文字幕一区二区三区| 国产精品亚洲一区二区三区在线 | 国产福利一区二区三区| 精品亚洲porn| 91亚洲精品久久久蜜桃| 欧美日韩激情在线| 日韩欧美一级片| 国产精品三级在线观看| 亚洲电影视频在线| 国内一区二区视频| 99精品在线免费| 91精品在线麻豆| 国产三级欧美三级日产三级99 | 国产在线精品一区二区三区不卡| 成人涩涩免费视频| 欧美三级电影精品| 欧美精品一区二区三区很污很色的| 日本一区二区三区dvd视频在线| 亚洲欧美另类在线| 韩国av一区二区| 91久久精品一区二区二区| 日韩欧美国产综合在线一区二区三区| 久久久久久电影| 亚洲成人免费av| 成人午夜av影视| 91麻豆精品国产91久久久资源速度 | 9人人澡人人爽人人精品| 91精品在线免费| 日韩伦理电影网| 国产一区二区在线观看视频| 欧美日韩美女一区二区| 国产精品视频九色porn| 精品一区二区三区在线观看国产| 9色porny自拍视频一区二区| 26uuu亚洲| 天天爽夜夜爽夜夜爽精品视频| 99久久精品国产一区二区三区| 精品国产一区二区三区av性色| 亚洲成av人片一区二区梦乃| 97久久精品人人做人人爽| 2020国产精品自拍| 免费日本视频一区| 欧美亚洲禁片免费| 亚洲三级久久久| 97超碰欧美中文字幕| 国产精品视频麻豆| 国产精品69久久久久水密桃| 精品美女在线观看| 日韩1区2区日韩1区2区| 5858s免费视频成人| 亚洲电影你懂得| 欧美日韩一卡二卡| 亚洲在线视频网站| 99re亚洲国产精品| 自拍偷在线精品自拍偷无码专区 | 欧美乱妇23p| 一区二区免费视频| 91精彩视频在线| 亚洲一区二区三区四区五区黄| 一本色道久久综合亚洲精品按摩 | 欧美性猛交一区二区三区精品| 一区二区免费在线| 欧美午夜精品免费| 偷拍日韩校园综合在线| 91精品国产综合久久久久久| 日韩电影免费一区| 精品久久久久久亚洲综合网| 国产美女精品一区二区三区| 久久九九久精品国产免费直播| 国产成人综合自拍| 中文字幕一区二区三区精华液| 色婷婷久久久综合中文字幕| 亚洲一卡二卡三卡四卡 | 国产999精品久久久久久绿帽| 国产调教视频一区| 99在线精品一区二区三区| 国产精品盗摄一区二区三区| 色欧美日韩亚洲| 视频一区二区三区中文字幕| 日韩三级伦理片妻子的秘密按摩| 黄一区二区三区| 亚洲视频资源在线| 欧美高清视频一二三区| 国产精品综合在线视频| 亚洲欧洲国产日韩| 欧美日韩中文国产| 精彩视频一区二区三区| 日韩久久一区二区| 欧美一区三区二区| 国产99精品国产| 三级久久三级久久| 久久精品夜色噜噜亚洲a∨| 99re成人精品视频| 蜜桃精品在线观看| 国产嫩草影院久久久久| 在线观看视频一区二区| 狠狠色丁香婷婷综合| 一区二区三区日韩精品视频| 精品国产一区二区三区不卡| 91久久免费观看| 国产成人av一区| 一区二区三区在线视频观看| 精品国产一区二区三区四区四| 一本大道久久精品懂色aⅴ| 久久精品99国产国产精| 一区二区三区成人在线视频| 久久免费午夜影院| 欧美日本一区二区三区| 成人av网站在线观看| 久久福利资源站| 天天av天天翘天天综合网 | 日韩午夜电影av| 色天天综合色天天久久| 国产激情视频一区二区在线观看 | 日韩一区欧美一区| 久久免费精品国产久精品久久久久| 欧美日韩国产bt| 99视频在线精品| 风间由美一区二区av101| 免费高清在线一区| 午夜电影网一区| 一区二区久久久| 亚洲免费三区一区二区| 亚洲日本一区二区三区| 国产精品卡一卡二卡三| 国产三区在线成人av| 国产日本欧洲亚洲| 久久久久99精品国产片| 久久久久国产精品厨房| 久久久一区二区| 久久久久久久一区| 久久久久国产精品人| 久久久天堂av| 欧美国产乱子伦 | 色一情一乱一乱一91av| 风间由美一区二区三区在线观看| 国产成人免费视频| 福利一区在线观看| 成人禁用看黄a在线| 粉嫩av亚洲一区二区图片| 国产精品一二三四| 成人黄色网址在线观看| av在线这里只有精品| 91美女片黄在线观看| 在线视频国产一区| 精品视频一区二区三区免费| 欧美高清性hdvideosex| 精品99一区二区三区| 国产色产综合色产在线视频| 国产精品国产三级国产三级人妇| 亚洲婷婷国产精品电影人久久| 亚洲精品一二三| 日韩黄色免费电影| 国产露脸91国语对白| 99国产精品久久久久| 欧美日韩精品欧美日韩精品一| 欧美一三区三区四区免费在线看 | 99久久精品免费精品国产| 色婷婷av一区二区三区大白胸 | 久久综合色婷婷| 亚洲国产精品传媒在线观看| 日韩精品亚洲专区| 国产资源精品在线观看| 91麻豆福利精品推荐| 6080国产精品一区二区| 欧美激情中文不卡| 亚洲电影第三页| 国产大片一区二区| 欧美主播一区二区三区| 久久免费看少妇高潮| 一二三区精品福利视频| 国产精品一区二区不卡| 色欧美片视频在线观看在线视频| 日韩免费观看2025年上映的电影| 中文av一区特黄| 日韩不卡一区二区| 成人免费视频一区| 在线观看91精品国产麻豆| 中文在线资源观看网站视频免费不卡 | 中文字幕一区二区三区在线观看| 午夜精品久久久| 91一区二区三区在线播放|