Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mongoose
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
esp
mongoose
Commits
78eec961
Commit
78eec961
authored
Jan 02, 2013
by
Sergey Lyubka
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removing bindings code, because of inability to provide support for it
parent
adff33c8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
186 deletions
+0
-186
example.cs
bindings/csharp/example.cs
+0
-52
mongoose.cs
bindings/csharp/mongoose.cs
+0
-134
No files found.
bindings/csharp/example.cs
deleted
100644 → 0
View file @
adff33c8
// This is C# example on how to use Mongoose embeddable web server,
// http://code.google.com/p/mongoose
//
// Before using the mongoose module, make sure that Mongoose shared library is
// built and present in the current (or system library) directory
using
System
;
using
System.Runtime.InteropServices
;
public
class
Program
{
// This function is called when user types in his browser http://127.0.0.1:8080/foo
static
private
void
UriHandler
(
MongooseConnection
conn
,
MongooseRequestInfo
ri
)
{
conn
.
write
(
"HTTP/1.1 200 OK\r\n\r\n"
);
conn
.
write
(
"Hello from C#!\n"
);
conn
.
write
(
"Your user-agent is: "
+
conn
.
get_header
(
"User-Agent"
)
+
"\n"
);
}
static
private
void
UriDumpInfo
(
MongooseConnection
conn
,
MongooseRequestInfo
ri
)
{
conn
.
write
(
"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"
);
conn
.
write
(
"<html><body><head>Calling Info</head>"
);
conn
.
write
(
"<p>Request: "
+
ri
.
request_method
+
"</p>"
);
conn
.
write
(
"<p>URI: "
+
ri
.
uri
+
"</p>"
);
conn
.
write
(
"<p>Query: "
+
ri
.
query_string
+
"</p>"
);
if
(
ri
.
post_data_len
>
0
)
conn
.
write
(
"<p>Post("
+
ri
.
post_data_len
+
")[@"
+
ri
.
post_data
+
"]: '"
+
Marshal
.
PtrToStringAnsi
(
ri
.
post_data
)
+
"'</p>"
);
conn
.
write
(
"<p>User:"
+
ri
.
remote_user
+
"</p>"
);
conn
.
write
(
"<p>IP: "
+
ri
.
remote_ip
+
"</p>"
);
conn
.
write
(
"<p>HTTP: "
+
ri
.
http_version
+
"</p>"
);
conn
.
write
(
"<p>Port: "
+
ri
.
remote_port
+
"</p>"
);
conn
.
write
(
"<p>NUM Headers: "
+
ri
.
num_headers
+
"</p>"
);
for
(
int
i
=
0
;
i
<
Math
.
Min
(
64
,
ri
.
num_headers
);
i
++)
{
conn
.
write
(
"<p>"
+
i
+
":"
+
Marshal
.
PtrToStringAnsi
(
ri
.
http_headers
[
i
].
name
)
+
":"
+
Marshal
.
PtrToStringAnsi
(
ri
.
http_headers
[
i
].
value
)
+
"</p>"
);
}
conn
.
write
(
"</body></html>"
);
}
static
void
Main
()
{
Mongoose
web_server
=
new
Mongoose
();
// Set options and /foo URI handler
web_server
.
set_option
(
"ports"
,
"8080"
);
web_server
.
set_option
(
"root"
,
"c:\\"
);
web_server
.
set_uri_callback
(
"/foo"
,
new
MongooseCallback
(
UriHandler
));
web_server
.
set_uri_callback
(
"/dumpinfo"
,
new
MongooseCallback
(
UriDumpInfo
));
// Serve requests until user presses "enter" on a keyboard
Console
.
ReadLine
();
}
}
bindings/csharp/mongoose.cs
deleted
100644 → 0
View file @
adff33c8
// Copyright (c) 2004-2009 Sergey Lyubka
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
// $Id: mongoose.cs 472 2009-08-30 22:40:29Z spsone1 $
using
System
;
using
System.Runtime.InteropServices
;
[StructLayout(LayoutKind.Sequential)]
public
struct
MongooseHeader
{
public
IntPtr
name
;
// Using IntPtr here because if we use strings here,
public
IntPtr
value
;
// it won't be properly marshalled.
};
// This is "struct mg_request_info" from mongoose.h header file
[StructLayout(LayoutKind.Sequential)]
public
struct
MongooseRequestInfo
{
public
string
request_method
;
public
string
uri
;
public
string
http_version
;
public
string
query_string
;
public
IntPtr
post_data
;
public
string
remote_user
;
public
int
remote_ip
;
//int to match the 32bit declaration in c
public
int
remote_port
;
public
int
post_data_len
;
public
int
status_code
;
public
int
num_headers
;
[
MarshalAs
(
UnmanagedType
.
ByValArray
,
SizeConst
=
64
)]
public
MongooseHeader
[]
http_headers
;
};
// This is a delegate for mg_callback_t from mongoose.h header file
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public
delegate
void
MongooseCallback2
(
IntPtr
conn
,
ref
MongooseRequestInfo
ri
,
IntPtr
user_data
);
// This is a delegate to be used by the application
public
delegate
void
MongooseCallback
(
MongooseConnection
conn
,
MongooseRequestInfo
ri
);
public
class
Mongoose
{
public
string
version
;
private
IntPtr
ctx
;
//These two events are here to store a ref to the callbacks while they are over in unmanaged code.
private
event
MongooseCallback2
delegates2
;
private
event
MongooseCallback
delegates1
;
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
IntPtr
mg_start
();
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
void
mg_stop
(
IntPtr
ctx
);
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
string
mg_version
();
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
int
mg_set_option
(
IntPtr
ctx
,
string
name
,
string
value
);
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
string
mg_get_option
(
IntPtr
ctx
,
string
name
);
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
void
mg_set_uri_callback
(
IntPtr
ctx
,
string
uri_regex
,
MulticastDelegate
func
,
IntPtr
data
);
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
void
mg_set_log_callback
(
IntPtr
ctx
,
MulticastDelegate
func
);
public
Mongoose
()
{
ctx
=
mg_start
();
version
=
mg_version
();
}
~
Mongoose
()
{
mg_stop
(
this
.
ctx
);
this
.
ctx
=
IntPtr
.
Zero
;
}
public
int
set_option
(
string
option_name
,
string
option_value
)
{
return
mg_set_option
(
this
.
ctx
,
option_name
,
option_value
);
}
public
string
get_option
(
string
option_name
)
{
return
mg_get_option
(
this
.
ctx
,
option_name
);
}
public
void
set_uri_callback
(
string
uri_regex
,
MongooseCallback
func
)
{
// Build a closure around user function. Initialize connection object there which wraps
// mg_write() and other useful methods, and then call user specified handler.
MongooseCallback2
callback
=
delegate
(
IntPtr
conn
,
ref
MongooseRequestInfo
ri
,
IntPtr
user_data
)
{
MongooseConnection
connection
=
new
MongooseConnection
(
conn
,
this
);
func
(
connection
,
ri
);
};
// store a reference to the callback so it won't be GC'ed while its over in unmanged code
delegates2
+=
callback
;
mg_set_uri_callback
(
this
.
ctx
,
uri_regex
,
callback
,
IntPtr
.
Zero
);
}
public
void
set_log_callback
(
MongooseCallback
func
)
{
delegates1
+=
func
;
mg_set_log_callback
(
this
.
ctx
,
func
);
}
}
public
class
MongooseConnection
{
public
Mongoose
mongoose
;
private
IntPtr
conn
;
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
string
mg_get_header
(
IntPtr
ctx
,
string
name
);
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
string
mg_get_var
(
IntPtr
ctx
,
string
name
);
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
void
mg_free
(
IntPtr
ptr
);
[
DllImport
(
"_mongoose"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
public
static
extern
int
mg_write
(
IntPtr
conn
,
string
data
,
int
length
);
public
MongooseConnection
(
IntPtr
conn_
,
Mongoose
mongoose_
)
{
mongoose
=
mongoose_
;
conn
=
conn_
;
}
public
string
get_header
(
string
header_name
)
{
return
mg_get_header
(
this
.
conn
,
header_name
);
}
public
string
get_var
(
string
header_name
)
{
string
s
=
mg_get_var
(
this
.
conn
,
header_name
);
string
copy
=
""
+
s
;
mg_free
(
Marshal
.
StringToHGlobalAnsi
(
s
));
return
copy
;
}
public
int
write
(
string
data
)
{
return
mg_write
(
this
.
conn
,
data
,
data
.
Length
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment