Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
M
mongoose
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Ganil-acq
GANILinux
linux-service
library
mongoose
Commits
78eec961
Commit
78eec961
authored
12 years ago
by
Sergey Lyubka
Browse files
Options
Downloads
Patches
Plain Diff
Removing bindings code, because of inability to provide support for it
parent
adff33c8
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
bindings/csharp/example.cs
+0
-52
0 additions, 52 deletions
bindings/csharp/example.cs
bindings/csharp/mongoose.cs
+0
-134
0 additions, 134 deletions
bindings/csharp/mongoose.cs
with
0 additions
and
186 deletions
bindings/csharp/example.cs
deleted
100644 → 0
+
0
−
52
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
();
}
}
This diff is collapsed.
Click to expand it.
bindings/csharp/mongoose.cs
deleted
100644 → 0
+
0
−
134
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
);
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment