forked from cesanta/mongoose
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
119 additions
and
82 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,89 +1,15 @@ | ||
# Copyright (c) 2014 Cesanta Software | ||
# All rights reserved | ||
# | ||
# Makefile for Mongoose web server examples | ||
|
||
CFLAGS = -W -Wall -I.. -pthread -g -pipe $(CFLAGS_EXTRA) | ||
RM = rm -rf | ||
OUT = -o $@ | ||
ALL_PROGS = server post | ||
NS = ../../net_skeleton | ||
SW = ../../ssl_wrapper | ||
SUBDIRS = $(sort $(filter-out csharp/, $(dir $(wildcard */)))) | ||
X = $(SUBDIRS) | ||
|
||
ifeq ($(OS),Windows_NT) | ||
ifndef MINGW | ||
MSVC = ../../vc6 | ||
RM = del /q /f | ||
OUT = | ||
CC = $(MSVC)/bin/cl | ||
CFLAGS = /MD /TC /nologo /W3 /I$(MSVC)/include /I.. | ||
CFLAGS += /link /incremental:no /libpath:$(MSVC)/lib /machine:IX86 | ||
CFLAGS += $(CFLAGS_EXTRA) | ||
else | ||
CC = g++ | ||
CFLAGS = -W -Wall -Wno-unused-parameter -I.. -O0 -g -pipe $(CFLAGS_EXTRA) -lwsock32 | ||
endif | ||
else | ||
UNAME_S := $(shell uname -s) | ||
CC = g++ | ||
CFLAGS += -lssl -g -O0 | ||
.PHONY: $(SUBDIRS) | ||
|
||
ifeq ($(UNAME_S),Linux) | ||
CFLAGS += -ldl | ||
endif | ||
all: $(SUBDIRS) | ||
|
||
ifeq ($(UNAME_S),Darwin) | ||
endif | ||
endif | ||
|
||
all: $(ALL_PROGS) | ||
|
||
# To enable Lua in a server, uncomment following lines | ||
LUA = ../lua-5.2.3/src | ||
#CFLAGS += -I$(LUA) -L$(LUA) -llua -DMONGOOSE_USE_LUA | ||
|
||
server: server.c ../mongoose.c | ||
$(CC) server.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
hello: hello.c ../mongoose.c | ||
$(CC) hello.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
websocket: websocket_html.c websocket.c ../mongoose.c | ||
$(CC) websocket.c websocket_html.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
post: post.c ../mongoose.c | ||
$(CC) post.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
multi_threaded: multi_threaded.c ../mongoose.c | ||
$(CC) multi_threaded.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
upload: upload.c ../mongoose.c | ||
$(CC) upload.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
auth: auth.c ../mongoose.c | ||
$(CC) auth.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
file: file.c ../mongoose.c | ||
$(CC) file.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
form: form.c ../mongoose.c | ||
$(CC) form.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
mjpg: mjpg.c ../mongoose.c | ||
$(CC) mjpg.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
pubsub: websocket2.c ../mongoose.c | ||
$(CC) websocket2.c ../mongoose.c $(OUT) $(CFLAGS) | ||
|
||
proxy: proxy.c ../mongoose.c | ||
$(CC) proxy.c ../mongoose.c $(OUT) -I$(NS) -DNS_ENABLE_SSL -lssl $(CFLAGS) | ||
|
||
websocket_html.c: websocket.html | ||
perl mkdata.pl $< > $@ | ||
|
||
u: | ||
$(CC) unit_test.c $(OUT) $(CFLAGS) | ||
./$@ | ||
$(SUBDIRS): | ||
@$(MAKE) -C $@ | ||
|
||
clean: | ||
-@$(RM) $(ALL_PROGS) websocket_html.c *.exe *.dSYM *.obj *.exp .*o *.lib u | ||
for d in $(SUBDIRS) ; do $(MAKE) -C $$d clean ; done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
// This file is part of mongoose web server project, | ||
// https://github.com/cesanta/mongoose | ||
|
||
using System; | ||
|
||
public class Program { | ||
static private int EventHandler(IntPtr conn_ptr, int ev) { | ||
MongooseConnection conn = (MongooseConnection) | ||
System.Runtime.InteropServices.Marshal.PtrToStructure( | ||
conn_ptr , typeof(MongooseConnection)); | ||
|
||
if (ev == 102) { | ||
// MG_AUTH | ||
return 1; | ||
} else if (ev == 103) { | ||
// MG_REQUEST | ||
Mongoose.send_data(conn_ptr, "Hello from C#!\n"); | ||
Mongoose.send_data(conn_ptr, "URI: " + conn.uri + "\n"); | ||
Mongoose.send_data(conn_ptr, "HTTP Headers:\n"); | ||
|
||
for (int i = 0; i < conn.num_headers; i++) { | ||
IntPtr name = conn.http_headers[i].name; | ||
IntPtr val = conn.http_headers[i].value; | ||
System.Runtime.InteropServices.Marshal.PtrToStringAnsi(name); | ||
Mongoose.send_data(conn_ptr, " " + | ||
System.Runtime.InteropServices.Marshal.PtrToStringAnsi(name) + ": " + | ||
System.Runtime.InteropServices.Marshal.PtrToStringAnsi(val) + "\n"); | ||
} | ||
return 1; | ||
} | ||
return 0; | ||
} | ||
|
||
static void Main() { | ||
Mongoose web_server = new Mongoose(".", "9001", | ||
new MongooseEventHandler(EventHandler)); | ||
|
||
Console.WriteLine("Mongoose started, press Ctrl-C to exit."); | ||
for (;;) { | ||
web_server.poll(1000); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
// This file is part of mongoose web server project, | ||
// https://github.com/cesanta/mongoose | ||
|
||
using System; | ||
using System.Runtime.InteropServices; | ||
|
||
[StructLayout(LayoutKind.Sequential)] public struct MongooseHeader { | ||
[MarshalAs(UnmanagedType.LPTStr)] public IntPtr name; | ||
[MarshalAs(UnmanagedType.LPTStr)] public IntPtr value; | ||
}; | ||
|
||
// mongoose.h :: struct mg_connection | ||
[StructLayout(LayoutKind.Sequential)] public struct MongooseConnection { | ||
[MarshalAs(UnmanagedType.LPTStr)] public string request_method; | ||
[MarshalAs(UnmanagedType.LPTStr)] public string uri; | ||
[MarshalAs(UnmanagedType.LPTStr)] public string http_version; | ||
[MarshalAs(UnmanagedType.LPTStr)] public string query_string; | ||
|
||
[MarshalAs(UnmanagedType.ByValArray,SizeConst=48)] public char[] remote_ip; | ||
[MarshalAs(UnmanagedType.LPTStr)] public string local_ip; | ||
[MarshalAs(UnmanagedType.U2)] public short remote_port; | ||
[MarshalAs(UnmanagedType.U2)] public short local_port; | ||
|
||
[MarshalAs(UnmanagedType.SysInt)] public int num_headers; | ||
[MarshalAs(UnmanagedType.ByValArray,SizeConst=30)] | ||
public MongooseHeader[] http_headers; | ||
|
||
[MarshalAs(UnmanagedType.LPTStr)] public IntPtr content; | ||
[MarshalAs(UnmanagedType.SysInt)] public int content_len; | ||
|
||
[MarshalAs(UnmanagedType.SysInt)] public int is_websocket; | ||
[MarshalAs(UnmanagedType.SysInt)] public int status_code; | ||
[MarshalAs(UnmanagedType.SysInt)] public int wsbits; | ||
}; | ||
|
||
public delegate int MongooseEventHandler(IntPtr c, int ev); | ||
|
||
public class Mongoose { | ||
public const string dll_ = "mongoose"; | ||
private IntPtr server_; | ||
|
||
[DllImport(dll_)] private static extern IntPtr | ||
mg_create_server(IntPtr user_data, MongooseEventHandler eh); | ||
[DllImport(dll_)] private static extern int | ||
mg_poll_server(IntPtr server, int milli); | ||
[DllImport(dll_)] private static extern IntPtr | ||
mg_set_option(IntPtr server, string name, string value); | ||
[DllImport(dll_)] public static extern int | ||
mg_send_data(IntPtr conn, string data, int length); | ||
|
||
public Mongoose(string document_root, | ||
string listening_port, | ||
MongooseEventHandler event_handler) { | ||
server_ = mg_create_server(IntPtr.Zero, event_handler); | ||
mg_set_option(server_, "document_root", document_root); | ||
mg_set_option(server_, "listening_port", listening_port); | ||
} | ||
|
||
public static int send_data(IntPtr conn, string data) { | ||
return mg_send_data(conn, data, data.Length); | ||
} | ||
|
||
public void poll(int milli) { | ||
mg_poll_server(server_, milli); | ||
} | ||
|
||
// TODO: add destructor and call mg_destroy_server() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.