CSL
5.2
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
example_server.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2004 Steve Harris, Uwe Koloska
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU Lesser General Public License as
6
* published by the Free Software Foundation; either version 2.1 of the
7
* License, or (at your option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU Lesser General Public License for more details.
13
*
14
* $Id$
15
*/
16
17
#include <stdio.h>
18
#include <stdlib.h>
19
#include <unistd.h>
20
21
#include "
lo/lo.h
"
22
23
int
done
= 0;
24
25
void
error
(
int
num,
const
char
*m,
const
char
*path);
26
27
int
generic_handler
(
const
char
*path,
const
char
*types,
lo_arg
**argv,
28
int
argc,
void
*
data
,
void
*user_data);
29
30
int
foo_handler
(
const
char
*path,
const
char
*types,
lo_arg
**argv,
int
argc,
31
void
*
data
,
void
*user_data);
32
33
int
quit_handler
(
const
char
*path,
const
char
*types,
lo_arg
**argv,
int
argc,
34
void
*
data
,
void
*user_data);
35
36
int
main
()
37
{
38
/* start a new server on port 7770 */
39
lo_server_thread
st =
lo_server_thread_new
(
"7770"
,
error
);
40
41
/* add method that will match any path and args */
42
lo_server_thread_add_method
(st, NULL, NULL,
generic_handler
, NULL);
43
44
/* add method that will match the path /foo/bar, with two numbers, coerced
45
* to float and int */
46
lo_server_thread_add_method
(st,
"/foo/bar"
,
"fi"
,
foo_handler
, NULL);
47
48
/* add method that will match the path /quit with no args */
49
lo_server_thread_add_method
(st,
"/quit"
,
""
,
quit_handler
, NULL);
50
51
lo_server_thread_start
(st);
52
53
while
(!
done
) {
54
#ifdef WIN32
55
Sleep(1);
56
#else
57
usleep(1000);
58
#endif
59
}
60
61
lo_server_thread_free
(st);
62
63
return
0;
64
}
65
66
void
error
(
int
num,
const
char
*msg,
const
char
*path)
67
{
68
printf(
"liblo server error %d in path %s: %s\n"
, num, path, msg);
69
fflush(stdout);
70
}
71
72
/* catch any incoming messages and display them. returning 1 means that the
73
* message has not been fully handled and the server should try other methods */
74
int
generic_handler
(
const
char
*path,
const
char
*types,
lo_arg
**argv,
75
int
argc,
void
*
data
,
void
*user_data)
76
{
77
int
i;
78
79
printf(
"path: <%s>\n"
, path);
80
for
(i=0; i<argc; i++) {
81
printf(
"arg %d '%c' "
, i, types[i]);
82
lo_arg_pp
(types[i], argv[i]);
83
printf(
"\n"
);
84
}
85
printf(
"\n"
);
86
fflush(stdout);
87
88
return
1;
89
}
90
91
int
foo_handler
(
const
char
*path,
const
char
*types,
lo_arg
**argv,
int
argc,
92
void
*
data
,
void
*user_data)
93
{
94
/* example showing pulling the argument values out of the argv array */
95
printf(
"%s <- f:%f, i:%d\n\n"
, path, argv[0]->f, argv[1]->i);
96
fflush(stdout);
97
98
return
0;
99
}
100
101
int
quit_handler
(
const
char
*path,
const
char
*types,
lo_arg
**argv,
int
argc,
102
void
*
data
,
void
*user_data)
103
{
104
done
= 1;
105
printf(
"quiting\n\n"
);
106
fflush(stdout);
107
108
return
0;
109
}
110
111
/* vi:set ts=8 sts=4 sw=4: */
CSL
liblo-0.26
examples
example_server.c
Generated on Thu Nov 15 2012 22:01:09 for CSL by
1.8.1.1