Documentation callbacks.h + standardization
Этот коммит содержится в:
родитель
98819f92e3
Коммит
a1870a62cf
@ -122,11 +122,27 @@ typedef struct ssh_callbacks_struct *ssh_callbacks;
|
|||||||
* They are called by the socket module when a socket event appears
|
* They are called by the socket module when a socket event appears
|
||||||
*/
|
*/
|
||||||
struct ssh_socket_callbacks_struct {
|
struct ssh_socket_callbacks_struct {
|
||||||
|
/**
|
||||||
|
* User-provided data. User is free to set anything he wants here
|
||||||
|
*/
|
||||||
|
void *userdata;
|
||||||
|
/**
|
||||||
|
* This function will be called each time data appears on socket. The data
|
||||||
|
* not consumed will appear on the next data event.
|
||||||
|
*/
|
||||||
ssh_callback_data data;
|
ssh_callback_data data;
|
||||||
|
/** This function will be called each time a controlflow state changes, i.e.
|
||||||
|
* the socket is available for reading or writing.
|
||||||
|
*/
|
||||||
ssh_callback_int controlflow;
|
ssh_callback_int controlflow;
|
||||||
|
/** This function will be called each time an exception appears on socket. An
|
||||||
|
* exception can be a socket problem (timeout, ...) or an end-of-file.
|
||||||
|
*/
|
||||||
ssh_callback_int_int exception;
|
ssh_callback_int_int exception;
|
||||||
|
/** This function is called when the ssh_socket_connect was used on the socket
|
||||||
|
* on nonblocking state, and the connection successed.
|
||||||
|
*/
|
||||||
ssh_callback_int_int connected;
|
ssh_callback_int_int connected;
|
||||||
void *user;
|
|
||||||
};
|
};
|
||||||
typedef struct ssh_socket_callbacks_struct *ssh_socket_callbacks;
|
typedef struct ssh_socket_callbacks_struct *ssh_socket_callbacks;
|
||||||
|
|
||||||
@ -186,8 +202,12 @@ struct ssh_packet_callbacks_struct {
|
|||||||
uint8_t n_callbacks;
|
uint8_t n_callbacks;
|
||||||
/** A pointer to n_callbacks packet callbacks */
|
/** A pointer to n_callbacks packet callbacks */
|
||||||
ssh_packet_callback *callbacks;
|
ssh_packet_callback *callbacks;
|
||||||
|
/**
|
||||||
|
* User-provided data. User is free to set anything he wants here
|
||||||
|
*/
|
||||||
void *user;
|
void *user;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct ssh_packet_callbacks_struct *ssh_packet_callbacks;
|
typedef struct ssh_packet_callbacks_struct *ssh_packet_callbacks;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -647,7 +647,7 @@ int ssh_connect(ssh_session session) {
|
|||||||
session->socket_callbacks.connected=socket_callback_connected;
|
session->socket_callbacks.connected=socket_callback_connected;
|
||||||
session->socket_callbacks.data=callback_receive_banner;
|
session->socket_callbacks.data=callback_receive_banner;
|
||||||
session->socket_callbacks.exception=socket_callback_exception;
|
session->socket_callbacks.exception=socket_callback_exception;
|
||||||
session->socket_callbacks.user=session;
|
session->socket_callbacks.userdata=session;
|
||||||
if (session->fd != -1) {
|
if (session->fd != -1) {
|
||||||
ssh_socket_set_fd(session->socket, session->fd);
|
ssh_socket_set_fd(session->socket, session->fd);
|
||||||
ret=SSH_OK;
|
ret=SSH_OK;
|
||||||
|
@ -289,7 +289,7 @@ void ssh_packet_register_socket_callback(ssh_session session, ssh_socket s){
|
|||||||
session->socket_callbacks.connected=NULL;
|
session->socket_callbacks.connected=NULL;
|
||||||
session->socket_callbacks.controlflow=NULL;
|
session->socket_callbacks.controlflow=NULL;
|
||||||
session->socket_callbacks.exception=NULL;
|
session->socket_callbacks.exception=NULL;
|
||||||
session->socket_callbacks.user=session;
|
session->socket_callbacks.userdata=session;
|
||||||
ssh_socket_set_callbacks(s,&session->socket_callbacks);
|
ssh_socket_set_callbacks(s,&session->socket_callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ int ssh_socket_pollcallback(ssh_poll_handle p, int fd, int revents, void *v_s){
|
|||||||
s->fd=-1;
|
s->fd=-1;
|
||||||
if(s->callbacks && s->callbacks->connected)
|
if(s->callbacks && s->callbacks->connected)
|
||||||
s->callbacks->connected(SSH_SOCKET_CONNECTED_ERROR,err,
|
s->callbacks->connected(SSH_SOCKET_CONNECTED_ERROR,err,
|
||||||
s->callbacks->user);
|
s->callbacks->userdata);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* Then we are in a more standard kind of error */
|
/* Then we are in a more standard kind of error */
|
||||||
@ -166,7 +166,7 @@ int ssh_socket_pollcallback(ssh_poll_handle p, int fd, int revents, void *v_s){
|
|||||||
if(s->callbacks && s->callbacks->exception){
|
if(s->callbacks && s->callbacks->exception){
|
||||||
s->callbacks->exception(
|
s->callbacks->exception(
|
||||||
SSH_SOCKET_EXCEPTION_ERROR,
|
SSH_SOCKET_EXCEPTION_ERROR,
|
||||||
s->last_errno,s->callbacks->user);
|
s->last_errno,s->callbacks->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(r==0){
|
if(r==0){
|
||||||
@ -174,7 +174,7 @@ int ssh_socket_pollcallback(ssh_poll_handle p, int fd, int revents, void *v_s){
|
|||||||
if(s->callbacks && s->callbacks->exception){
|
if(s->callbacks && s->callbacks->exception){
|
||||||
s->callbacks->exception(
|
s->callbacks->exception(
|
||||||
SSH_SOCKET_EXCEPTION_EOF,
|
SSH_SOCKET_EXCEPTION_EOF,
|
||||||
0,s->callbacks->user);
|
0,s->callbacks->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(r>0){
|
if(r>0){
|
||||||
@ -183,7 +183,7 @@ int ssh_socket_pollcallback(ssh_poll_handle p, int fd, int revents, void *v_s){
|
|||||||
if(s->callbacks && s->callbacks->data){
|
if(s->callbacks && s->callbacks->data){
|
||||||
r= s->callbacks->data(buffer_get_rest(s->in_buffer),
|
r= s->callbacks->data(buffer_get_rest(s->in_buffer),
|
||||||
buffer_get_rest_len(s->in_buffer),
|
buffer_get_rest_len(s->in_buffer),
|
||||||
s->callbacks->user);
|
s->callbacks->userdata);
|
||||||
buffer_pass_bytes(s->in_buffer,r);
|
buffer_pass_bytes(s->in_buffer,r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -195,7 +195,7 @@ int ssh_socket_pollcallback(ssh_poll_handle p, int fd, int revents, void *v_s){
|
|||||||
s->state = SSH_SOCKET_CONNECTED;
|
s->state = SSH_SOCKET_CONNECTED;
|
||||||
ssh_poll_set_events(p,POLLOUT | POLLIN | POLLERR);
|
ssh_poll_set_events(p,POLLOUT | POLLIN | POLLERR);
|
||||||
if(s->callbacks && s->callbacks->connected)
|
if(s->callbacks && s->callbacks->connected)
|
||||||
s->callbacks->connected(SSH_SOCKET_CONNECTED_OK,0,s->callbacks->user);
|
s->callbacks->connected(SSH_SOCKET_CONNECTED_OK,0,s->callbacks->userdata);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* So, we can write data */
|
/* So, we can write data */
|
||||||
@ -208,7 +208,7 @@ int ssh_socket_pollcallback(ssh_poll_handle p, int fd, int revents, void *v_s){
|
|||||||
buffer_pass_bytes(s->out_buffer,w);
|
buffer_pass_bytes(s->out_buffer,w);
|
||||||
} else if(s->callbacks && s->callbacks->controlflow){
|
} else if(s->callbacks && s->callbacks->controlflow){
|
||||||
/* Otherwise advertise the upper level that write can be done */
|
/* Otherwise advertise the upper level that write can be done */
|
||||||
s->callbacks->controlflow(SSH_SOCKET_FLOW_WRITEWONTBLOCK,s->callbacks->user);
|
s->callbacks->controlflow(SSH_SOCKET_FLOW_WRITEWONTBLOCK,s->callbacks->userdata);
|
||||||
}
|
}
|
||||||
ssh_poll_remove_events(p,POLLOUT);
|
ssh_poll_remove_events(p,POLLOUT);
|
||||||
/* TODO: Find a way to put back POLLOUT when buffering occurs */
|
/* TODO: Find a way to put back POLLOUT when buffering occurs */
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user