Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/locsrv/locsrv.c

    r372df8f r8a637a4  
    412412{
    413413        if (server == NULL)
    414                 return EEXISTS;
     414                return EEXIST;
    415415       
    416416        fibril_mutex_lock(&servers_list_mutex);
     
    467467        }
    468468       
    469         /* Set the interface, if any. */
    470         service->forward_interface = IPC_GET_ARG1(*icall);
    471 
    472469        /* Get fqsn */
    473470        char *fqsn;
     
    514511                free(service->name);
    515512                free(service);
    516                 async_answer_0(iid, EEXISTS);
     513                async_answer_0(iid, EEXIST);
    517514                return;
    518515        }
     
    702699 *
    703700 */
    704 static void loc_forward(ipc_callid_t callid, ipc_call_t *call)
     701static void loc_forward(ipc_callid_t callid, ipc_call_t *call, void *arg)
    705702{
    706703        fibril_mutex_lock(&services_list_mutex);
     
    709706         * Get ID from request
    710707         */
     708        iface_t iface = IPC_GET_ARG1(*call);
    711709        service_id_t id = IPC_GET_ARG2(*call);
    712710        loc_service_t *svc = loc_service_find_id(id);
     
    719717       
    720718        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);
    728720        async_exchange_end(exch);
    729721       
     
    959951            loc_namespace_find_id(IPC_GET_ARG1(*icall));
    960952        if (namespace == NULL)
    961                 async_answer_0(iid, EEXISTS);
     953                async_answer_0(iid, EEXIST);
    962954        else
    963955                async_answer_1(iid, EOK, namespace->refcnt);
     
    13251317        categ_dir_add_cat(&cdir, cat);
    13261318
    1327         cat = category_new("disk");
    1328         categ_dir_add_cat(&cdir, cat);
    1329 
    1330         cat = category_new("partition");
    1331         categ_dir_add_cat(&cdir, cat);
    1332 
    13331319        cat = category_new("iplink");
    13341320        categ_dir_add_cat(&cdir, cat);
     
    13821368 *
    13831369 */
    1384 static void loc_connection_supplier(ipc_callid_t iid, ipc_call_t *icall)
     1370static void loc_connection_supplier(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    13851371{
    13861372        /* Accept connection */
     
    14401426 *
    14411427 */
    1442 static void loc_connection_consumer(ipc_callid_t iid, ipc_call_t *icall)
     1428static void loc_connection_consumer(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    14431429{
    14441430        /* Accept connection */
     
    15071493}
    15081494
    1509 /** Function for handling connections to location service
    1510  *
    1511  */
    1512 static void loc_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    1513 {
    1514         /* Select interface */
    1515         switch ((sysarg_t) (IPC_GET_ARG1(*icall))) {
    1516         case LOC_PORT_SUPPLIER:
    1517                 loc_connection_supplier(iid, icall);
    1518                 break;
    1519         case LOC_PORT_CONSUMER:
    1520                 loc_connection_consumer(iid, icall);
    1521                 break;
    1522         case LOC_CONNECT_TO_SERVICE:
    1523                 /* Connect client to selected service */
    1524                 loc_forward(iid, icall);
    1525                 break;
    1526         default:
    1527                 /* No such interface */
    1528                 async_answer_0(iid, ENOENT);
    1529         }
    1530 }
    1531 
    15321495/**
    15331496 *
     
    15421505        }
    15431506       
    1544         /* Set a handler of incomming connections */
    1545         async_set_client_connection(loc_connection);
    1546        
    1547         /* Register location service at naming service */
    1548         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);
    15491510        if (rc != EOK)
    15501511                return rc;
    15511512       
     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       
    15521526        printf("%s: Accepting connections\n", NAME);
    15531527        async_manager();
Note: See TracChangeset for help on using the changeset viewer.