Lines Matching refs:socket

267 //	#pragma mark - socket
275 struct net_socket_private *socket = new (std::nothrow) net_socket_private;
276 if (socket == NULL)
279 memset(socket, 0, sizeof(net_socket));
280 socket->family = family;
281 socket->type = type;
282 socket->protocol = protocol;
284 mutex_init(&socket->lock, "socket");
287 socket->send.buffer_size = 65535;
288 socket->send.low_water_mark = 1;
289 socket->send.timeout = B_INFINITE_TIMEOUT;
290 socket->receive.buffer_size = 65535;
291 socket->receive.low_water_mark = 1;
292 socket->receive.timeout = B_INFINITE_TIMEOUT;
294 socket->first_protocol = gTCPModule->init_protocol(socket);
295 if (socket->first_protocol == NULL) {
297 mutex_destroy(&socket->lock);
298 delete socket;
302 socket->first_info = gTCPModule;
306 domainProtocol->socket = socket;
308 socket->first_protocol->next = domainProtocol;
309 socket->first_protocol->module = gTCPModule;
310 socket->first_protocol->socket = socket;
312 *_socket = socket;
320 net_socket_private *socket = (net_socket_private *)_socket;
322 if (socket->parent != NULL)
323 panic("socket still has a parent!");
325 socket->first_info->uninit_protocol(socket->first_protocol);
326 mutex_destroy(&socket->lock);
327 delete socket;
332 socket_accept(net_socket *socket, struct sockaddr *address,
336 status_t status = socket->first_info->accept(socket->first_protocol,
353 socket_bind(net_socket *socket, const struct sockaddr *address, socklen_t addressLength)
360 empty.sa_family = socket->family;
366 if (socket->address.ss_len != 0) {
367 status_t status = socket->first_info->unbind(socket->first_protocol,
368 (sockaddr *)&socket->address);
373 memcpy(&socket->address, address, sizeof(sockaddr));
375 status_t status = socket->first_info->bind(socket->first_protocol,
379 socket->address.ss_len = 0;
387 socket_connect(net_socket *socket, const struct sockaddr *address, socklen_t addressLength)
392 if (socket->address.ss_len == 0) {
394 status_t status = socket_bind(socket, NULL, 0);
399 return socket->first_info->connect(socket->first_protocol, address);
404 socket_listen(net_socket *socket, int backlog)
406 status_t status = socket->first_info->listen(socket->first_protocol, backlog);
408 socket->options |= SO_ACCEPTCONN;
415 socket_send(net_socket *socket, const void *data, size_t length, int flags)
417 if (socket->peer.ss_len == 0)
420 if (socket->address.ss_len == 0) {
422 status_t status = socket_bind(socket, NULL, 0);
439 memcpy(buffer->source, &socket->address, socket->address.ss_len);
440 memcpy(buffer->destination, &socket->peer, socket->peer.ss_len);
442 status_t status = socket->first_info->send_data(socket->first_protocol, buffer);
453 socket_recv(net_socket *socket, void *data, size_t length, int flags)
456 ssize_t status = socket->first_info->read_data(
457 socket->first_protocol, length, flags, &buffer);
500 net_socket_private *socket;
502 (net_socket **)&socket);
507 socket->send = parent->send;
508 socket->receive = parent->receive;
509 socket->options = parent->options & ~SO_ACCEPTCONN;
510 socket->linger = parent->linger;
511 memcpy(&socket->address, &parent->address, parent->address.ss_len);
512 memcpy(&socket->peer, &parent->peer, parent->peer.ss_len);
515 parent->pending_children.Add(socket);
516 socket->parent = parent;
519 *_socket = socket;
531 net_socket_private *socket = parent->connected_children.RemoveHead();
532 if (socket != NULL) {
533 socket->parent = NULL;
535 *_socket = socket;
539 return socket != NULL ? B_OK : B_ENTRY_NOT_FOUND;
557 net_socket_private *socket = (net_socket_private *)_socket;
563 mutex_lock(&socket->lock);
567 while (socket->child_count > backlog
568 && (child = socket->pending_children.RemoveTail()) != NULL) {
570 socket->child_count--;
572 while (socket->child_count > backlog
573 && (child = socket->connected_children.RemoveTail()) != NULL) {
576 socket->child_count--;
579 socket->max_backlog = backlog;
580 mutex_unlock(&socket->lock);
588 net_socket_private* socket = (net_socket_private*)_socket;
589 return socket->parent != NULL;
594 socket_connected(net_socket *socket)
596 net_socket_private *socket_private = (net_socket_private *)socket;
614 net_socket_private *socket = (net_socket_private *)_socket;
616 mutex_lock(&socket->lock);
623 if ((ssize_t)socket->receive.low_water_mark > value && value >= B_OK)
629 if ((ssize_t)socket->send.low_water_mark > value && value >= B_OK)
634 socket->error = value;
641 mutex_unlock(&socket->lock);
685 // standard socket API
707 net_socket *socket;
708 status_t status = socket_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &socket);
712 status = socket->first_info->open(socket->first_protocol);
715 socket_delete(socket);
719 *_socket = socket;
720 return socket->first_protocol;
730 //socket_delete(protocol->socket);
865 memcpy(&protocol->socket->address, address, sizeof(struct sockaddr_in));
866 protocol->socket->address.ss_len = sizeof(struct sockaddr_in);