Changeset f9b2cb4c in mainline for uspace/srv/locsrv/locsrv.c
- Timestamp:
- 2015-08-23T12:50:23Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9ef495f
- Parents:
- 0dd16778
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/locsrv/locsrv.c
r0dd16778 rf9b2cb4c 467 467 } 468 468 469 /* Set the interface, if any. */470 service->forward_interface = IPC_GET_ARG1(*icall);471 472 469 /* Get fqsn */ 473 470 char *fqsn; … … 702 699 * 703 700 */ 704 static void loc_forward(ipc_callid_t callid, ipc_call_t *call )701 static void loc_forward(ipc_callid_t callid, ipc_call_t *call, void *arg) 705 702 { 706 703 fibril_mutex_lock(&services_list_mutex); … … 709 706 * Get ID from request 710 707 */ 708 iface_t iface = IPC_GET_ARG1(*call); 711 709 service_id_t id = IPC_GET_ARG2(*call); 712 710 loc_service_t *svc = loc_service_find_id(id); … … 719 717 720 718 async_exch_t *exch = async_exchange_begin(svc->server->sess); 721 722 if (svc->forward_interface == 0) 723 async_forward_fast(callid, exch, svc->id, 0, 0, IPC_FF_NONE); 724 else 725 async_forward_fast(callid, exch, svc->forward_interface, 726 svc->id, 0, IPC_FF_NONE); 727 719 async_forward_fast(callid, exch, iface, svc->id, 0, IPC_FF_NONE); 728 720 async_exchange_end(exch); 729 721 … … 1376 1368 * 1377 1369 */ 1378 static void loc_connection_supplier(ipc_callid_t iid, ipc_call_t *icall )1370 static void loc_connection_supplier(ipc_callid_t iid, ipc_call_t *icall, void *arg) 1379 1371 { 1380 1372 /* Accept connection */ … … 1434 1426 * 1435 1427 */ 1436 static void loc_connection_consumer(ipc_callid_t iid, ipc_call_t *icall )1428 static void loc_connection_consumer(ipc_callid_t iid, ipc_call_t *icall, void *arg) 1437 1429 { 1438 1430 /* Accept connection */ … … 1501 1493 } 1502 1494 1503 /** Function for handling connections to location service1504 *1505 */1506 static void loc_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)1507 {1508 /* Select interface */1509 switch ((sysarg_t) (IPC_GET_ARG1(*icall))) {1510 case LOC_PORT_SUPPLIER:1511 loc_connection_supplier(iid, icall);1512 break;1513 case LOC_PORT_CONSUMER:1514 loc_connection_consumer(iid, icall);1515 break;1516 case LOC_CONNECT_TO_SERVICE:1517 /* Connect client to selected service */1518 loc_forward(iid, icall);1519 break;1520 default:1521 /* No such interface */1522 async_answer_0(iid, ENOENT);1523 }1524 }1525 1526 1495 /** 1527 1496 * … … 1536 1505 } 1537 1506 1538 /* Set a handler of incomming connections */ 1539 async_set_fallback_port_handler(loc_connection, NULL); 1540 1541 /* Register location service at naming service */ 1542 int rc = service_register(SERVICE_LOC); 1507 port_id_t port; 1508 int rc = async_create_port(INTERFACE_LOC_SUPPLIER, 1509 loc_connection_supplier, NULL, &port); 1543 1510 if (rc != EOK) 1544 1511 return rc; 1545 1512 1513 rc = async_create_port(INTERFACE_LOC_CONSUMER, 1514 loc_connection_consumer, NULL, &port); 1515 if (rc != EOK) 1516 return rc; 1517 1518 /* Set a handler of incomming connections */ 1519 async_set_fallback_port_handler(loc_forward, NULL); 1520 1521 /* Register location service at naming service */ 1522 rc = service_register(SERVICE_LOC); 1523 if (rc != EOK) 1524 return rc; 1525 1546 1526 printf("%s: Accepting connections\n", NAME); 1547 1527 async_manager();
Note:
See TracChangeset
for help on using the changeset viewer.