Changeset 6e9e12b in mainline for uspace/srv/logger/main.c


Ignore:
Timestamp:
2012-08-16T09:15:21Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0a6a996
Parents:
669f5cae
Message:

Get rid of logview for now

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/logger/main.c

    r669f5cae r6e9e12b  
    104104static int handle_receive_message(logging_namespace_t *namespace, int level)
    105105{
    106         bool skip_message = (level > (int)get_default_logging_level()) && !namespace_has_reader(namespace, level);
     106        bool skip_message = !namespace_has_reader(namespace, level);
    107107        if (skip_message) {
    108108                /* Abort the actual message buffer transfer. */
     
    156156        printf(NAME "/sink: client %s terminated.\n", namespace_get_name(namespace));
    157157        namespace_writer_detach(namespace);
    158 }
    159 
    160 
    161 static logging_namespace_t *find_namespace_and_attach_reader(void)
    162 {
    163         ipc_call_t call;
    164         ipc_callid_t callid = async_get_call(&call);
    165 
    166         if (IPC_GET_IMETHOD(call) != LOGGER_CONNECT) {
    167                 async_answer_0(callid, EINVAL);
    168                 return NULL;
    169         }
    170 
    171         void *name;
    172         int rc = async_data_write_accept(&name, true, 1, MAX_NAMESPACE_LENGTH, 0, NULL);
    173 
    174         if (rc != EOK) {
    175                 async_answer_0(callid, rc);
    176                 return NULL;
    177         }
    178 
    179         logging_namespace_t *result = namespace_reader_attach((const char *) name);
    180         if (result == NULL) {
    181                 rc = ENOENT;
    182         }
    183 
    184         async_answer_0(callid, rc);
    185 
    186         free(name);
    187 
    188         return result;
    189 }
    190 
    191 
    192 static int handle_send_message(logging_namespace_t *namespace, int *level)
    193 {
    194         ipc_callid_t callid;
    195         size_t size;
    196         bool expects_data_read = async_data_read_receive(&callid, &size);
    197         if (!expects_data_read) {
    198                 return EINVAL;
    199         }
    200 
    201         log_message_t *message = namespace_get_next_message(namespace);
    202         size_t message_len = str_size(message->message) + 1;
    203 
    204         if (size > message_len) {
    205                 size = message_len;
    206         }
    207 
    208         async_data_read_finalize(callid, message->message, size);
    209 
    210         *level = (int) message->level;
    211         message_destroy(message);
    212 
    213         return EOK;
    214 }
    215 
    216 
    217 static void connection_handler_source(logging_namespace_t *namespace)
    218 {
    219         printf(NAME "/source: new client for %s.\n", namespace_get_name(namespace));
    220 
    221         while (true) {
    222                 ipc_call_t call;
    223                 ipc_callid_t callid = async_get_call(&call);
    224 
    225                 if (!IPC_GET_IMETHOD(call))
    226                         break;
    227 
    228                 int rc;
    229                 int message_level = 0;
    230 
    231                 switch (IPC_GET_IMETHOD(call)) {
    232                 case LOGGER_GET_MESSAGE:
    233                         rc = handle_send_message(namespace, &message_level);
    234                         async_answer_1(callid, rc, message_level);
    235                         break;
    236                 default:
    237                         async_answer_0(callid, EINVAL);
    238                         break;
    239                 }
    240         }
    241 
    242         printf(NAME "/source: client %s terminated.\n", namespace_get_name(namespace));
    243         namespace_reader_detach(namespace);
    244158}
    245159
     
    265179                connection_handler_sink(namespace);
    266180                break;
    267         case LOGGER_INTERFACE_SOURCE:
    268                 async_answer_0(iid, EOK);
    269                 /* First call has to find existing namespace. */
    270                 namespace = find_namespace_and_attach_reader();
    271                 if (namespace == NULL) {
    272                         fprintf(stderr, NAME ": failed to attach client.\n");
    273                         break;
    274                 }
    275                 connection_handler_source(namespace);
    276                 break;
    277181        default:
    278182                async_answer_0(iid, EINVAL);
Note: See TracChangeset for help on using the changeset viewer.