You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bluesky-commits@incubator.apache.org by pi...@apache.org on 2009/11/30 11:24:43 UTC
svn commit: r885379 [27/28] - in /incubator/bluesky/trunk/RealClass:
DTU/src/ TServer/ TServer/autom4te.cache/ TServer/intl/ TServer/po/
TServer/src/ TServer/src/.deps/
Added: incubator/bluesky/trunk/RealClass/TServer/src/adminserver.h
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/adminserver.h?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/adminserver.h (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/adminserver.h Mon Nov 30 11:24:38 2009
@@ -0,0 +1,230 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+// AdminServer.h: interface for the CAdminServer class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(ADMINSERVER_H)
+#define ADMINSERVER_H
+
+#define THREADCOUNT 1
+class CTCPPollThread;
+class CAsyncSocketEx;
+
+#include <list>
+#include "msgtype.h"
+#include "listencomm.h"
+#include "lissocket.h"
+#include "clientsocket.h"
+#include "multicomm.h"
+#include "jmutex.h"
+#include "error.h"
+#include <signal.h>
+#include <arpa/inet.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip_icmp.h>
+#include <netdb.h>
+#include <setjmp.h>
+#include <errno.h>
+class CLisSocket;
+
+//Client list
+typedef std::list<CRCLClient*> rclUserList;
+//teacher list
+typedef std::list<CRCLTeacher*> rclTeacherList;
+//MCU list
+typedef std::list<CRCLMCU*> rclMCUList;
+//SeMCU list
+typedef std::list<CRCLSeMCU*> rclSeMCUList;
+//room list
+typedef std::list<CRCLRoom*> rclRoomList;
+//IP list
+typedef std::list<CRCLNodeIP*> rclIPList;
+//ID list
+typedef std::list<DWORD> rclIDList;
+
+//node type,ID,name,IP,localIP
+typedef int(*NodeChangeNotify)(DWORD,DWORD,DWORD,char*,char*,char*);
+
+
+class CAdminServer
+{
+ friend class CLisSocket;
+ friend class CClientSocket;
+public:
+ int Init();
+ CAdminServer();
+ virtual ~CAdminServer();
+ int DataSent(DWORD);
+ BOOL IsComplete(std::string);
+ int rclSendMessage(DWORD,std::string);//send message to a ID with a string
+ int rclSendM();//send_thread send message
+ BOOL ParseRequest(CRCLMSG* pM, int event, SOCKET s, BOOL &bKeepAlive);
+ int GotConnection(SOCKET,char*,int);//user join
+ int Disconnect(SOCKET s);//delete a user
+private:
+
+ int rclSendThreadHandle;//send_thread handle
+ NodeChangeNotify NodeInfoOut;//node information out
+
+ JMutex umu;//user list
+ JMutex tmu;//teacher list
+ JMutex mmu;//MCU list
+ JMutex smu;//seMCU list
+ JMutex rmu;//room list
+ JMutex imu;//IP list
+ JMutex dmu;//ID list
+ JMutex Jtext_layoutC;
+ JMutex Jtext_layoutT;
+
+ DWORD hScan;
+ DWORD rclSysMax;// max number for system
+ DWORD rclTeacherMax;//max teacher number
+ DWORD rclStudentMax;//max student number
+ DWORD rclGroupMax;//max group number
+
+
+
+public:
+ DWORD rclMCUChoose;//MCU choose mode
+ DWORD rclCurrentNum;
+ DWORD rclMaxNum;
+ DWORD rclAverageNum;
+ DWORD sum;
+ DWORD count;
+ BOOL bRun;
+
+public:
+ int rclGetIPSameA(char *ClientIP,char *MCUIP);
+ void rclDebugLog(char *log,char *vl="",int v2=0,int v3=0,int v4=0);
+
+ void rclScanSys();
+ int rclNodeChooseMCUIP(char* ip,char *pip,SOCKET s);
+ int rclGetIPSame(char *ClientIP,char *MCUIP);
+ int rclChooseMCU(DWORD cid,DWORD gid,SOCKET *ps,char *ip,DWORD *id);
+ int rclSeMCULeaveGroup(CRCLSeMCULeaveGroup *pMSG,SOCKET s);
+ void rclSeMCULeaveGroupLogout(DWORD SeMCUID,SOCKET s);
+ int rclSeMCUJoinGroup(CRCLSeMCUJoinGroup *pMSG,SOCKET s);
+ int rclSeMCULoginAndJoinGroup(DWORD SeMCUID,SOCKET s,int event);
+ int rclSeMCUGetGroupInfo(CRCLSeMCUGetGroupInfo *pMSG,SOCKET s);
+ int rclSeMCULogout(CRCLSeMCULogout *pMSG,SOCKET s);
+ int rclSeMCULogin(CRLCSeMCULogin *pMSG,SOCKET s,int event);
+ int rclTeacherGetClientList(CRCLTeacherGetClientList *pMSG,SOCKET s);
+
+ int rclTeacherSwitchMode(CRCLTeacherSwitchMode *pMSG,SOCKET s);
+ int rclTeacherCancelClientFocus(CRCLTeacherCancelClientFocus *pMSG,SOCKET s);
+ int rclTeacherAllowClientFocus(CRCLTeacherAllowClientFocus *pMSG,SOCKET s);
+ void rclResponseInfo(char *info);
+ int rclClientGetClientInfo(CRCLClientGetClientInfo *pMSG,SOCKET s);
+ int rclClientGetGroupInfo(CRCLClientGetCroupInfo *pMSG,SOCKET s);
+ DWORD rclPopPushID(DWORD id);
+ int InitializeIDList(DWORD IDCount);
+ int rclResponseError(DWORD MSGType,SOCKET s,DWORD et);
+ int rclClientTextBroadcast(CRCLClientTextBroadcast *pMSG,SOCKET s);
+ int rclClientDestroyFocus(CRCLClientDestroyFocus *pMSG,SOCKET s);
+ int rclClientApplyFocus(CRCLClientApplyFocus *pMSG,SOCKET s);
+ int rclTeacherTextBroadcast(CRCLTeacherTextBroadcast *pMSG,SOCKET s);
+ int rclMCULeaveGroup(CRCLMCULeaveGroup *pMSG,SOCKET s);
+ int rclSendResponse(char* pbuf,DWORD len,SOCKET* s,DWORD nums);
+ int rclMakePacket(char *pResponse,char *pRes,DWORD len);
+ int rclClientLogout(CRCLClientLogout *pMSG,SOCKET s);
+ int rclClientLeaveGroup(CRCLClientLeaveGroup *pMSG,SOCKET s);
+ int rclClientJoinGroup(CRCLClientJoinInGroup *pMSG,SOCKET s);
+ int rclTeacherLeaveGroup(CRCLDestroyGroup *pMSG,SOCKET s);
+ int rclTeacherCreateGroup(CRCLCreateGroup *pMSG,SOCKET s);
+ int rclClientLogin(CRCLClientLogin *pMSG,SOCKET s,int event);
+ int rclMCULogout(CRCLMCULogout *pMSG,SOCKET s);
+ int rclMCULogin(CRCLMCULogin *pMSG,SOCKET s,int event);
+ int rclTeacherLogout(CRCLTeacherLogout *pMSG,SOCKET s);
+ int rclTeacherLogin(CRCLTeacherLogin *pMSG,SOCKET s,int event);
+ int rclUserSendTextToGroup(DWORD userid,DWORD groupid,std::string text,int flag);
+ int rclUserSendTextToUser();
+ int rclTeacherChat(CRCLTeacherChat *pMSG ,SOCKET s);
+ int rclBroadCast(DWORD);
+ void pingtest();
+
+ void* statistics(int signo);
+ unsigned short cal_chksum(unsigned short *addr,int len);
+ int pack(int pack_no);
+ void send_packet(void);
+ void recv_packet(void);
+ int unpack(char *buf,int len);
+ void tv_sub(struct timeval *out,struct timeval *in);
+
+ void rclShowTeacherInfo();
+ void rclShowUserInfo();
+ void rclShowMCUInfo();
+ void rclShowSeMCUInfo();
+ void rclShowRoomInfo();
+ void rclShowIPInfo();
+ void rclShowIDInfo();
+ void rclShowFocusInfo();
+
+ void rclShutdown();
+
+
+ long rclSThreadEvent;
+
+ DWORD rclSendThreadID;
+
+
+ rclUserList UserList;
+
+
+ rclTeacherList TeacherList;
+
+
+ rclMCUList MCUList;
+
+
+ rclSeMCUList SeMCUList;
+
+
+ rclRoomList RoomList;
+
+
+ rclIPList IPList;
+ rclIPList IPList2;
+
+
+ rclIDList IDList;
+
+
+
+public:
+ DWORD ListenPort;
+ DWORD MaxOnline;
+ DWORD MaxTeacherOnline;
+ DWORD MaxStudentOnline;
+ DWORD MCUChoose;
+ DWORD ClientTalk;
+ char ReplaceText[1024];
+ CMultiComm m_accept[THREADCOUNT];
+ CListenComm m_listen;
+protected:
+private:
+
+ CLisSocket m_listemsocket;
+};
+
+#endif // !defined(ADMINSERVER_H)
Added: incubator/bluesky/trunk/RealClass/TServer/src/asyncsocketex.cpp
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/asyncsocketex.cpp?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/asyncsocketex.cpp (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/asyncsocketex.cpp Mon Nov 30 11:24:38 2009
@@ -0,0 +1,286 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+// AsyncSocketEx.cpp:
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "asyncsocketex.h"
+
+
+//////////////////////////////////////////////////////////////////////
+// construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CAsyncSocketEx::CAsyncSocketEx()
+{
+ m_SocketData.hSocket=INVALID_SOCKET;
+ m_SocketData.nSocketIndex=-1;
+ m_lEvent = 0;
+}
+
+CAsyncSocketEx::~CAsyncSocketEx()
+{
+ Close();
+}
+
+BOOL CAsyncSocketEx::Create( UINT nSocketPort /*=0*/, int nSocketType /*=SOCK_STREAM*/, LPCTSTR lpszSocketAddress /*=NULL*/ )
+{
+
+ SOCKET hSocket=socket(AF_INET, nSocketType, 0);
+ if (hSocket==INVALID_SOCKET)
+ return false;
+ m_SocketData.hSocket=hSocket;
+ int one =1;
+ if(!SetSockOpt(SO_REUSEADDR, (char *) &one, sizeof(int), SOL_SOCKET))
+ printf("error\n");
+ if (!Bind(nSocketPort, lpszSocketAddress))
+ {
+ Close();
+ return false;
+ }
+ return true;
+}
+
+BOOL CAsyncSocketEx::Bind(UINT nSocketPort, LPCTSTR lpszSocketAddress)
+{
+ SOCKADDR_IN sockAddr;
+ memset(&sockAddr,0,sizeof(sockAddr));
+
+ LPSTR lpszAscii = (LPSTR)lpszSocketAddress;
+ sockAddr.sin_family = AF_INET;
+
+ if (lpszAscii == NULL)
+ sockAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+ else
+ {
+ DWORD lResult = inet_addr(lpszAscii);
+ if (lResult == INADDR_NONE)
+ {
+ return false;
+ }
+ sockAddr.sin_addr.s_addr = lResult;
+ }
+
+ sockAddr.sin_port = htons((u_short)nSocketPort);
+
+ return Bind((SOCKADDR*)&sockAddr, sizeof(sockAddr));
+}
+
+BOOL CAsyncSocketEx::Bind(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+{
+ if (!bind(m_SocketData.hSocket, lpSockAddr, nSockAddrLen))
+ return true;
+ else
+ return false;
+}
+
+void CAsyncSocketEx::Close()
+{
+ if (m_SocketData.hSocket != INVALID_SOCKET)
+ {
+ if( close(m_SocketData.hSocket) == SOCKET_ERROR){
+ printf("\nclose socket error.");
+ return;
+ }
+ m_SocketData.hSocket=INVALID_SOCKET;
+ m_lEvent = 0;
+ }
+}
+
+BOOL CAsyncSocketEx::GetSockOpt(int nOptionName, void* lpOptionValue, int* lpOptionLen, int nLevel /* = SOL_SOCKET*/)
+{
+ int status;
+ if(m_SocketData.hSocket == 0)
+ return false;
+
+ status = getsockopt(m_SocketData.hSocket, nLevel, nOptionName, lpOptionValue, (socklen_t*)lpOptionLen );
+ if (status != 0)
+ return false;
+
+ return true;
+}
+
+BOOL CAsyncSocketEx::SetSockOpt(int nOptionName, const void* lpOptionValue, int nOptionLen, int nLevel /* = SOL_SOCKET*/)
+{
+ int status;
+ if(m_SocketData.hSocket == 0)
+ return false;
+
+ status = setsockopt(m_SocketData.hSocket, nLevel, nOptionName, lpOptionValue, nOptionLen );
+ if (status != 0)
+ return false;
+
+ return true;
+}
+
+
+int CAsyncSocketEx::Receive(void* lpBuf, int nBufLen, int nFlags /*=0*/)
+{
+ return recv(m_SocketData.hSocket, (LPSTR)lpBuf, nBufLen, nFlags);
+}
+
+
+int CAsyncSocketEx::Send(const void* lpBuf, int nBufLen, int nFlags /*=0*/)
+{
+ return send(m_SocketData.hSocket, (LPSTR)lpBuf, nBufLen, nFlags);
+}
+
+BOOL CAsyncSocketEx::Connect(LPCTSTR lpszHostAddress, UINT nHostPort)
+{
+
+ SOCKADDR_IN sockAddr;
+ memset(&sockAddr,0,sizeof(sockAddr));
+
+ LPSTR lpszAscii = (LPSTR)lpszHostAddress;
+ sockAddr.sin_family = AF_INET;
+ sockAddr.sin_addr.s_addr = inet_addr(lpszAscii);
+
+ if (sockAddr.sin_addr.s_addr == INADDR_NONE)
+ {
+
+ }
+
+ sockAddr.sin_port = htons((u_short)nHostPort);
+
+ return CAsyncSocketEx::Connect((SOCKADDR*)&sockAddr, sizeof(sockAddr));
+}
+
+BOOL CAsyncSocketEx::Connect( const SOCKADDR* lpSockAddr, int nSockAddrLen )
+{
+ if(m_SocketData.hSocket == INVALID_SOCKET)
+ return false;
+ return SOCKET_ERROR!=connect(m_SocketData.hSocket, lpSockAddr, nSockAddrLen);
+}
+
+
+BOOL CAsyncSocketEx::GetPeerName( SOCKADDR* lpSockAddr, int* lpSockAddrLen )
+{
+ if ( !getpeername(m_SocketData.hSocket, lpSockAddr, (socklen_t*)lpSockAddrLen) )
+ return true;
+ else
+ return false;
+}
+
+BOOL CAsyncSocketEx::GetSockName( SOCKADDR* lpSockAddr, int* lpSockAddrLen )
+{
+ if ( !getsockname(m_SocketData.hSocket, lpSockAddr, (socklen_t*)lpSockAddrLen) )
+ return true;
+ else
+ return false;
+}
+
+BOOL CAsyncSocketEx::ShutDown( int nHow /*=sends*/ )
+{
+ if ( !shutdown(m_SocketData.hSocket, nHow) )
+ return true;
+ else
+ return false;
+}
+
+SOCKET CAsyncSocketEx::Detach( )
+{
+ SOCKET socket=m_SocketData.hSocket;
+ m_SocketData.hSocket=INVALID_SOCKET;
+ m_lEvent = 0;
+ return socket;
+}
+
+BOOL CAsyncSocketEx::Attach( SOCKET hSocket, long lEvent /* = 0 */)
+{
+ if (hSocket==INVALID_SOCKET || !hSocket)
+ return false;
+
+ m_SocketData.hSocket=hSocket;
+ m_lEvent = lEvent;
+ return true;
+}
+
+BOOL CAsyncSocketEx::Listen( int nConnectionBacklog /*=5*/ )
+{
+ if (listen(m_SocketData.hSocket, nConnectionBacklog)==0)
+ return true;
+ else
+ return false;
+}
+
+BOOL CAsyncSocketEx::Accept( CAsyncSocketEx& rConnectedSocket, SOCKADDR* lpSockAddr /*=NULL*/, int* lpSockAddrLen /*=NULL*/ )
+{
+
+ SOCKET hTemp = accept(m_SocketData.hSocket, lpSockAddr, (socklen_t*)lpSockAddrLen);
+
+ if (hTemp == INVALID_SOCKET)
+ return false;
+ rConnectedSocket.m_SocketData.hSocket=hTemp;
+ return true;
+}
+
+BOOL CAsyncSocketEx::IOCtl( long lCommand, DWORD* lpArgument )
+{
+ if ( !ioctl(m_SocketData.hSocket, lCommand, lpArgument) )
+ return false;
+ else
+ return true;
+}
+
+int CAsyncSocketEx::GetLastError()
+{
+
+ return -1;
+}
+
+
+SOCKET CAsyncSocketEx::GetSocketHandle()
+{
+ return m_SocketData.hSocket;
+}
+
+
+
+int CAsyncSocketEx::Poll()
+{
+ fd_set fdsetread;
+ struct timeval tv;
+
+ FD_ZERO(&fdsetread);
+ FD_SET(m_SocketData.hSocket,&fdsetread);
+ tv.tv_sec = 0;
+ tv.tv_usec = 10000;
+
+
+ if (select(FD_SETSIZE,&fdsetread,0,0,&tv) < 0){
+ m_lEvent = -1;
+ return m_lEvent;
+ }
+ m_lEvent = 0;
+
+
+ if(FD_ISSET(m_SocketData.hSocket,&fdsetread)){
+
+
+ m_lEvent = 1;
+
+
+ }
+ return m_lEvent;
+}
+
+void CAsyncSocketEx::OnEvent()
+{
+
+ return ;
+}
Added: incubator/bluesky/trunk/RealClass/TServer/src/asyncsocketex.h
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/asyncsocketex.h?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/asyncsocketex.h (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/asyncsocketex.h Mon Nov 30 11:24:38 2009
@@ -0,0 +1,125 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+// AsyncSocketEx.h:
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+//#include "adminserver.h"
+#if !defined(ASYNCSOCKETEX_H)
+#define ASYNCSOCKETEX_H
+
+
+class CMultiComm ;
+class CListenComm;
+class CAsyncSocketEx
+{
+ friend class CMultiComm;
+ friend class CListenComm;
+public:
+ virtual int Poll();
+ SOCKET GetSocketHandle();
+ /////////////////////////////////////
+ //Functions that imitate CAsyncSocket
+
+ //Construction
+ CAsyncSocketEx(); //Constructs a CAsyncSocket object
+ virtual ~CAsyncSocketEx();
+
+ //Creates a socket
+ BOOL Create(UINT nSocketPort = 0,
+ int nSocketType = SOCK_STREAM,
+ LPCTSTR lpszSocketAddress = NULL );
+
+ //
+ inline long GetStatus(){ return m_lEvent;};
+ inline void SetStatus(long lEvent){ m_lEvent = lEvent;};
+ //Attaches a socket handle to a CAsyncSocket object
+ BOOL Attach( SOCKET hSocket, long lEvent=0);
+
+ //Detaches a socket handle from a CAsyncSocket object
+ SOCKET Detach( );
+
+ //Gets the error status for the last operation that failed.
+ static int GetLastError();
+
+ //Gets the address of the peer socket to which the socket is connected
+ BOOL GetPeerName( SOCKADDR* lpSockAddr, int* lpSockAddrLen );
+
+ //Gets the local name for a socket
+ BOOL GetSockName( SOCKADDR* lpSockAddr, int* lpSockAddrLen );
+
+ //Retrieves a socket option
+ BOOL GetSockOpt(int nOptionName, void* lpOptionValue, int* lpOptionLen, int nLevel = SOL_SOCKET);
+
+ //Sets a socket option
+ BOOL SetSockOpt(int nOptionName, const void* lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET);
+
+
+ //Operations
+
+
+ virtual void Close();
+
+
+ BOOL Bind(UINT nSocketPort, LPCTSTR lpszSocketAddress);
+ BOOL Bind(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ virtual BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort);
+ virtual BOOL Connect( const SOCKADDR* lpSockAddr, int nSockAddrLen );
+
+ BOOL Listen( int nConnectionBacklog = 5 );
+ virtual BOOL Accept( CAsyncSocketEx& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL );
+
+
+
+ BOOL IOCtl( long lCommand, DWORD* lpArgument );
+
+
+ BOOL ShutDown( int nHow = sends );
+
+
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ enum { receives = 0, sends = 1, both = 2 };
+
+
+protected:
+// virtual void OnReceive(int nErrorCode){};
+// virtual void OnSend(int nErrorCode){};
+// virtual void OnConnect(int nErrorCode){};
+// virtual void OnAccept(int nErrorCode){};
+// virtual void OnClose(int nErrorCode){};
+
+protected:
+ virtual void OnEvent();
+
+protected:
+ struct t_AsyncSocketExData
+ {
+ SOCKET hSocket;
+ int nSocketIndex;
+ } m_SocketData;
+
+ long m_lEvent;
+
+};
+
+
+#endif // !defined(ASYNCSOCKETEX_H)
Added: incubator/bluesky/trunk/RealClass/TServer/src/callbacks.cpp
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/callbacks.cpp?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/callbacks.cpp (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/callbacks.cpp Mon Nov 30 11:24:38 2009
@@ -0,0 +1,226 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+
+#include "callbacks.hh"
+#include "interface.hh"
+#include "support.hh"
+
+#include "stdafx.h"
+#include "asyncsocketex.h"
+#include <list>
+#include <string>
+#include "clientsocket.h"
+#include "multicomm.h"
+#include "listencomm.h"
+#include "adminserver.h"
+#include <pthread.h>
+
+CAdminServer server;
+extern GtkWidget *exit1;
+extern GtkWidget *start;
+extern GtkWidget *update;
+extern GtkWidget *entry_usernum;
+extern GtkWidget *entry_maxnum;
+extern GtkWidget *entry_avenum;
+extern GtkWidget *scrolledwindow_info;
+GtkAdjustment* change;
+static gint timer = 0;
+gdouble val = 0;
+extern GtkTextBuffer *buffer;
+extern GtkTextIter start1,end;
+pthread_t ping;
+
+void
+on_start_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+#ifdef WIN32
+ WSADATA dat;
+ WSAStartup(MAKEWORD(2,2),&dat);
+#endif // WIN32
+ gtk_widget_set_sensitive (exit1, true);
+ gtk_widget_set_sensitive (start, false);
+ gtk_widget_set_sensitive (update, true);
+ server.Init();
+
+}
+
+void*
+accept_test(void*)
+{
+ while(1)
+ {
+ server.pingtest();
+ sleep(5);
+ }
+}
+void
+on_about1_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+
+}
+
+
+void
+on_set_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+
+}
+
+
+void
+on_update_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ server.rclShowTeacherInfo();
+ server.rclShowUserInfo();
+ server.rclShowMCUInfo();
+ server.rclShowSeMCUInfo();
+ server.rclShowRoomInfo();
+}
+
+
+void
+on_help_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+
+}
+
+
+void
+on_about_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ GtkWidget *about;
+ about = create_About();
+ gtk_widget_show_all(about);
+
+}
+
+
+void
+on_button_clear_clicked (GtkButton *button,
+ gpointer user_data)
+{
+ gtk_text_buffer_get_start_iter(buffer,&start1);
+ gtk_text_buffer_delete(buffer,&start1,&end);
+
+}
+
+
+void
+on_button_update_clicked (GtkButton *button,
+ gpointer user_data)
+{
+ server.rclShowTeacherInfo();
+ server.rclShowUserInfo();
+ server.rclShowMCUInfo();
+ server.rclShowSeMCUInfo();
+ server.rclShowRoomInfo();
+
+}
+
+gint timer_callback(void* para)
+{
+ if(server.count == 0)
+ server.count = 1;
+ char usernum[8],maxnum[8],avenum[8];
+ sprintf(usernum,"%d",server.rclCurrentNum);
+ gtk_entry_set_text((GtkEntry*)entry_usernum,usernum);
+ if(server.rclMaxNum < server.rclCurrentNum)
+ {
+ server.rclMaxNum = server.rclCurrentNum;
+ sprintf(maxnum,"%d",server.rclMaxNum);
+ gtk_entry_set_text((GtkEntry*)entry_maxnum,maxnum);
+ }
+ server.sum += server.rclCurrentNum;
+ server.rclAverageNum = (int)((2*server.sum+server.count) / (2*server.count));
+ printf("%d***********%d**********%d\n",server.sum,server.rclAverageNum,server.count);
+ sprintf(avenum,"%d",server.rclAverageNum);
+ gtk_entry_set_text((GtkEntry*)entry_avenum,avenum);
+
+ server.count++;
+
+ server.rclShowTeacherInfo();
+ server.rclShowUserInfo();
+ server.rclShowMCUInfo();
+ server.rclShowSeMCUInfo();
+ server.rclShowRoomInfo();
+ return 1;
+}
+
+gint quit_callback(void*)
+{
+ printf("system stop......\n");
+ pthread_detach(ping);
+ server.rclShutdown();
+
+ return false;
+}
+
+void
+on_scrolledwindow_move_focus_out (GtkScrolledWindow *scrolledwindow,
+ GtkDirectionType direction,
+ gpointer user_data)
+{
+ printf("@@@@@@@@@@@@2\n");
+ change = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info));
+ gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info),change);
+
+ change = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info));
+ val = change->value;
+ val += 5;
+ printf("****%d****\n",val);
+ gtk_adjustment_set_value(GTK_ADJUSTMENT(change),val);
+ gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info),change);
+}
+
+
+void
+on_scrolledwindow_scroll_child (GtkScrolledWindow *scrolledwindow,
+ GtkScrollType scroll,
+ gboolean horizontal,
+ gpointer user_data)
+{
+ gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info),change);
+
+ change = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info));
+ val = change->value;
+ val += 5;
+ printf("****%d****\n",val);
+ gtk_adjustment_set_value(GTK_ADJUSTMENT(change),val);
+ gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info),change);
+}
+
+void auto_change(void)
+{
+ change = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info));
+ val = change->value;
+ val += 5;
+ printf("****%d****\n",val);
+ gtk_adjustment_set_value(GTK_ADJUSTMENT(change),val);
+ gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(scrolledwindow_info),change);
+}
Added: incubator/bluesky/trunk/RealClass/TServer/src/callbacks.hh
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/callbacks.hh?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/callbacks.hh (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/callbacks.hh Mon Nov 30 11:24:38 2009
@@ -0,0 +1,68 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+#include <gtk/gtk.h>
+
+
+
+void
+on_about1_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_start_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_set_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_update_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_help_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_about_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_button_clear_clicked (GtkButton *button,
+ gpointer user_data);
+
+void
+on_button_update_clicked (GtkButton *button,
+ gpointer user_data);
+
+gint timer_callback(void*);
+gint quit_callback(void*);
+
+void
+on_scrolledwindow_move_focus_out (GtkScrolledWindow *scrolledwindow,
+ GtkDirectionType direction,
+ gpointer user_data);
+
+void
+on_scrolledwindow_scroll_child (GtkScrolledWindow *scrolledwindow,
+ GtkScrollType scroll,
+ gboolean horizontal,
+ gpointer user_data);
+
+void auto_change(void);
+void* accept_test(void*);
Added: incubator/bluesky/trunk/RealClass/TServer/src/clientsocket.cpp
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/clientsocket.cpp?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/clientsocket.cpp (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/clientsocket.cpp Mon Nov 30 11:24:38 2009
@@ -0,0 +1,97 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+// ClientSocket.cpp: implementation of the CClientSocket class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "clientsocket.h"
+#include "adminserver.h"
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+extern CAdminServer server;
+CClientSocket::CClientSocket()
+{
+
+}
+
+CClientSocket::~CClientSocket()
+{
+ Close();
+}
+
+void CClientSocket::OnEvent()
+{
+ char recvbuffer[10000];
+ char caddr[50];
+ unsigned long len;
+ SOCKADDR lpSockAddr;
+ SOCKET s;
+ int iplen = sizeof(SOCKADDR);
+ BOOL rclb;
+ rclb = false;
+ if(m_lEvent == 0) //no any event.
+ return;
+ IOCtl(FIONREAD, &len);
+ if(len==0){ //disconnect.
+ int ret = 1;
+
+ server.Disconnect(GetSocketHandle());
+ printf("read to close socket\n");
+ ShutDown(both);
+ while(ret>0){
+ ret = Receive(recvbuffer, 10000);
+ }
+ Close();
+ printf("A client disconnected.\n");
+ return ;
+ }
+
+ s = GetSocketHandle();
+ if(GetPeerName(&lpSockAddr,&iplen))
+ {
+ SOCKADDR_IN* ip = (SOCKADDR_IN*)&lpSockAddr;
+ sprintf(caddr,"%d.%d.%d.%d",
+ ((u_char*)&ip->sin_addr.s_addr)[0],
+ ((u_char*)&ip->sin_addr.s_addr)[1],
+ ((u_char*)&ip->sin_addr.s_addr)[2],
+ ((u_char*)&ip->sin_addr.s_addr)[3]);
+ server.GotConnection(s, caddr, ip->sin_port);
+ printf("%s\n",caddr);
+
+ }
+ memset(recvbuffer, 0, 10000);
+ int recv_len = Receive(recvbuffer, 9999);
+ CRCLMSG* pM = (CRCLMSG*)recvbuffer;
+ int index = recv_len;
+ int packetlen = pM->msglen +8 - recv_len;
+ while(packetlen > 0)
+ {
+ recv_len = Receive(recvbuffer+index, packetlen);
+ printf(" recv a message lenth is %d\n",recv_len);
+ index += recv_len;
+ packetlen -= recv_len;
+ }
+ pM = (CRCLMSG*)recvbuffer;
+
+
+ if(!server.ParseRequest(pM, 1, s, rclb))
+ printf("parse failed\n");
+
+ return ;
+}
Added: incubator/bluesky/trunk/RealClass/TServer/src/clientsocket.h
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/clientsocket.h?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/clientsocket.h (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/clientsocket.h Mon Nov 30 11:24:38 2009
@@ -0,0 +1,40 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+// ClientSocket.h: interface for the CClientSocket class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(CLIENTSOCKET_H)
+#define CLIENTSOCKET_H
+
+
+#include "asyncsocketex.h"
+#include <string>
+class CClientSocket : public CAsyncSocketEx
+{
+ //friend class CClientSocket;
+public:
+ CClientSocket();
+ virtual ~CClientSocket();
+
+protected:
+ virtual void OnEvent();
+
+};
+
+
+#endif // !defined(CLIENTSOCKET_H)
Added: incubator/bluesky/trunk/RealClass/TServer/src/error.h
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/error.h?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/error.h (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/error.h Mon Nov 30 11:24:38 2009
@@ -0,0 +1,61 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+#define RCL_PASSWORD_ERROR 1
+#define RCL_USER_AlREADY_ONLINE 2
+#define RCL_MAX_USER 3
+#define RCL_LOGIN_ERROR 4
+#define RCL_MAX_TEACHER 5
+#define RCL_MAX_STUDENT 6
+
+
+#define RCL_TEACHER_CREATE_GROUP_NOMCU 10
+#define RCL_TEACHER_CREATE_GROUP_FAIL 11
+#define RCL_MAX_GROUP 12
+#define RCL_TEACHER_LEAVE_GROUP_FAIL 13
+
+
+#define RCL_STUDENT_JOIN_GROUP_FAIL 20
+#define RCL_STUDENT_LEAVE_GROUP_FAIL 21
+#define RCL_STUDENT_GROUP_MAX_USER 22
+
+
+#define RCL_MCU_LEAVE_GROUP_FAIL 30
+
+
+#define RCL_STUDENT_APPLY_FOCUS_NO_TOKEN 40
+#define RCL_STUDENT_APPLY_FOCUS_FAIL 41
+#define RCL_STUDENT_KILL_FOCUS_FAIL 42
+#define RCL_STUDENT_BROADCAST_TEXT_FAIL 43
+
+
+#define RCL_TEACHER_BROADCAST_TEXT_FAIL 50
+
+
+#define RCL_STUDENT_GET_GROUPLIST_FAIL 60
+#define RCL_STUDENT_GET_CLIENTLIST_FAIL 61
+
+
+#define RCL_TEACHER_ALLOW_FOCUS_EXIST 70
+#define RCL_TEACHER_ALLOW_FOCUS_FAIL 71
+
+
+#define RCL_TEACHER_CANCEL_FOCUS_NOT_EXIST 80
+#define RCL_TEACHER_CANCEL_FOCUS_FAIl 81
+
+
+#define RC_UNKNOW_ERROR 10001
Added: incubator/bluesky/trunk/RealClass/TServer/src/interface.cpp
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/interface.cpp?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/interface.cpp (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/interface.cpp Mon Nov 30 11:24:38 2009
@@ -0,0 +1,671 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+//LANG = utf8;
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <gdk/gdkkeysyms.h>
+#define GTK_ENABLE_BROKEN
+#include <gtk/gtk.h>
+
+
+#include "callbacks.hh"
+#include "interface.hh"
+#include "support.hh"
+
+#include "languagechoose.h" //choose lanuage 2007.11.10
+
+#define CURRENT_VERSION "2.0"
+
+
+
+GtkWidget *exit1;
+GtkWidget *start;
+GtkWidget *update;
+GtkWidget *textview_info;
+GtkTextBuffer *buffer;
+GtkTextIter start1,end;
+GtkWidget *clist_room;
+GtkWidget *clist_teacher;
+GtkWidget *clist_student;
+GtkWidget *clist_mcu;
+GtkWidget *clist_semcu;
+GtkWidget *entry_usernum;
+GtkWidget *entry_maxnum;
+GtkWidget *entry_avenum;
+GtkWidget *scrolledwindow_info;
+
+
+GtkWidget*
+create_window_tserver (void)
+{
+ GtkWidget *window_tserver;
+ GtkWidget *hbox1;
+ GtkWidget *vbox1;
+ GtkWidget *menubar;
+ GtkWidget *menuitem1;
+ GtkWidget *menuitem1_menu;
+ GtkWidget *separatormenuitem1;
+
+ GtkWidget *menuitem4;
+ GtkWidget *menuitem4_menu;
+ GtkWidget *set;
+
+ GtkWidget *help;
+ GtkWidget *help_menu;
+ GtkWidget *about;
+ GtkWidget *version;
+ GtkWidget *hbox2;
+ GtkWidget *vbox4;
+
+
+ GtkWidget *hbox6;
+ GtkWidget *button_clear;
+ GtkWidget *button_update;
+ GtkWidget *vbox2;
+ GtkWidget *vbox3;
+ GtkWidget *hbox3;
+ GtkWidget *label_usernum;
+
+ GtkWidget *hbox4;
+ GtkWidget *label_maxnum;
+
+ GtkWidget *hbox5;
+ GtkWidget *label_avenum;
+
+ GtkWidget *notebook_info;
+ GtkWidget *scrolledwindow_room;
+
+ GtkWidget *room_id;
+ GtkWidget *room_name;
+ GtkWidget *rteacher_id;
+ GtkWidget *rmcu_id;
+ GtkWidget *rfocus_id;
+ GtkWidget *roomlist;
+ GtkWidget *scrolledwindow_teacher;
+
+ GtkWidget *teacher_id;
+ GtkWidget *teacher_name;
+ GtkWidget *teacher_ip;
+ GtkWidget *tmcu_id;
+ GtkWidget *teacherlist;
+ GtkWidget *scrolledwindow_student;
+
+ GtkWidget *student_id;
+ GtkWidget *student_name;
+ GtkWidget *student_ip;
+ GtkWidget *sroom_id;
+ GtkWidget *smcu_id;
+ GtkWidget *focus;
+ GtkWidget *studentlist;
+ GtkWidget *scrolledwindow_mcu;
+
+ GtkWidget *mcu_id;
+ GtkWidget *mcu_name;
+ GtkWidget *mcu_ip;
+ GtkWidget *mroom_id;
+ GtkWidget *MCUlist;
+ GtkWidget *scrolledwindow_semcu;
+
+ GtkWidget *semcu_id;
+ GtkWidget *semcu_name;
+ GtkWidget *semcu_ip;
+ GtkWidget *semmcu_id;
+ GtkWidget *seroom_id;
+ GtkWidget *SeMCUlist;
+
+ GtkWidget *label_num;
+ GtkWidget *label_list;
+ GtkWidget *label_info;
+ GtkWidget *alignment_num;
+ GtkWidget *alignment_list;
+ GtkWidget *alignment_info;
+ GtkWidget *frame_num;
+ GtkWidget *frame_list;
+ GtkWidget *frame_info;
+
+ GtkWidget *vbox_num;
+ GtkWidget *vbox_list;
+ GtkWidget *vbox_info;
+ GtkStyle *style;
+
+ window_tserver = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ style = gtk_rc_get_style( window_tserver );
+ pango_font_description_set_family(style->font_desc, "Stsong" );
+ gtk_widget_set_style( window_tserver, style );
+ gtk_window_set_modal((GtkWindow *)window_tserver,TRUE);
+ gtk_window_set_title (GTK_WINDOW (window_tserver), pwindow_title);
+ gtk_window_set_default_size (GTK_WINDOW (window_tserver), 600, 400);
+ g_signal_connect(G_OBJECT(window_tserver),"destroy",
+ G_CALLBACK(gtk_main_quit),NULL);
+ gtk_window_set_resizable(GTK_WINDOW (window_tserver),FALSE);
+
+ gtk_window_set_position((GtkWindow*)window_tserver,GTK_WIN_POS_CENTER_ALWAYS);
+
+ hbox1 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox1);
+ gtk_container_add (GTK_CONTAINER (window_tserver), hbox1);
+
+ vbox1 = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox1);
+ gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 0);
+
+ menubar = gtk_menu_bar_new ();
+ gtk_widget_show (menubar);
+ gtk_box_pack_start (GTK_BOX (vbox1), menubar, FALSE, FALSE, 0);
+
+ menuitem1 = gtk_menu_item_new_with_mnemonic (pmenu_system);
+ gtk_widget_show (menuitem1);
+ gtk_container_add (GTK_CONTAINER (menubar), menuitem1);
+
+ menuitem1_menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu);
+
+ start = gtk_menu_item_new_with_mnemonic (pstart_system);
+ gtk_widget_show (start);
+ gtk_container_add (GTK_CONTAINER (menuitem1_menu), start);
+
+
+ separatormenuitem1 = gtk_separator_menu_item_new ();
+ gtk_widget_show (separatormenuitem1);
+ gtk_container_add (GTK_CONTAINER (menuitem1_menu), separatormenuitem1);
+ gtk_widget_set_sensitive (separatormenuitem1, FALSE);
+
+ exit1 = gtk_menu_item_new_with_mnemonic (pexit_system);
+ gtk_widget_show (exit1);
+ gtk_container_add (GTK_CONTAINER (menuitem1_menu), exit1);
+
+
+ menuitem4 = gtk_menu_item_new_with_mnemonic (pcontrol);
+ gtk_widget_show (menuitem4);
+ gtk_container_add (GTK_CONTAINER (menubar), menuitem4);
+
+ menuitem4_menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu);
+
+ update = gtk_menu_item_new_with_mnemonic (pupdate);
+ gtk_widget_show (update);
+ gtk_container_add (GTK_CONTAINER (menuitem4_menu), update);
+ gtk_widget_set_sensitive (update, FALSE);
+
+ help = gtk_menu_item_new_with_mnemonic (phelp);
+ gtk_widget_show (help);
+ gtk_container_add (GTK_CONTAINER (menubar), help);
+
+ help_menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (help), help_menu);
+
+ about = gtk_menu_item_new_with_mnemonic (pabout);
+ gtk_widget_show (about);
+ gtk_container_add (GTK_CONTAINER (help_menu), about);
+
+ hbox2 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox2);
+ gtk_box_pack_start (GTK_BOX (vbox1), hbox2, TRUE, TRUE, 0);
+
+ vbox4 = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox4);
+ gtk_box_pack_start (GTK_BOX (hbox2), vbox4, TRUE, TRUE, 0);
+
+ frame_info = gtk_frame_new (NULL);
+ gtk_widget_show (frame_info);
+ gtk_box_pack_start (GTK_BOX (vbox4), frame_info, TRUE, TRUE, 0);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame_info), GTK_SHADOW_ETCHED_OUT);
+
+ alignment_info = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_widget_show (alignment_info);
+ gtk_container_add (GTK_CONTAINER (frame_info), alignment_info);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (alignment_info), 0, 0, 12, 0);
+
+ vbox_info = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox_info);
+ gtk_container_add (GTK_CONTAINER (alignment_info), vbox_info);
+
+ label_info = gtk_label_new (psever_log);
+ gtk_widget_show (label_info);
+ gtk_frame_set_label_widget (GTK_FRAME (frame_info), label_info);
+ gtk_label_set_use_markup (GTK_LABEL (label_info), TRUE);
+
+ scrolledwindow_info = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_show (scrolledwindow_info);
+ gtk_box_pack_start (GTK_BOX (vbox_info), scrolledwindow_info, TRUE, TRUE, 0);
+ gtk_widget_set_size_request (scrolledwindow_info, 220, 320);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow_info), GTK_SHADOW_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow_info),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ g_signal_connect ((gpointer) scrolledwindow_info, "move_focus_out",
+ G_CALLBACK (on_scrolledwindow_move_focus_out),
+ NULL);
+ g_signal_connect ((gpointer) scrolledwindow_info, "scroll_child",
+ G_CALLBACK (on_scrolledwindow_scroll_child),
+ NULL);
+
+ textview_info = gtk_text_view_new ();
+ gtk_widget_show (textview_info);
+ gtk_container_add (GTK_CONTAINER (scrolledwindow_info), textview_info);
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview_info));
+ gtk_text_buffer_get_end_iter(buffer,&end);
+
+ gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(textview_info),NULL);
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(textview_info),NULL);
+
+ hbox6 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox6);
+ gtk_box_pack_start (GTK_BOX (vbox4), hbox6, TRUE, TRUE, 0);
+ gtk_widget_set_size_request (hbox6, -1, 24);
+
+ button_update = gtk_button_new_with_mnemonic (pbutn_update);
+ gtk_widget_show (button_update);
+ gtk_box_pack_end (GTK_BOX (hbox6), button_update, FALSE, FALSE, 0);
+ gtk_widget_set_size_request (button_update, 50, -1);
+
+ button_clear = gtk_button_new_with_mnemonic (pbutn_clear);
+ gtk_widget_show (button_clear);
+ gtk_box_pack_end (GTK_BOX (hbox6), button_clear, FALSE, FALSE, 0);
+ gtk_widget_set_size_request (button_clear, 50, -1);
+
+ vbox2 = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox2);
+ gtk_box_pack_start (GTK_BOX (hbox2), vbox2, TRUE, TRUE, 0);
+
+ vbox3 = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox3);
+ gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, TRUE, 0);
+ gtk_widget_set_size_request (vbox3, 380, 100);
+
+ frame_num = gtk_frame_new (NULL);
+ gtk_widget_show (frame_num);
+ gtk_box_pack_start (GTK_BOX (vbox3), frame_num, TRUE, TRUE, 0);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame_num), GTK_SHADOW_ETCHED_OUT);
+
+ alignment_num = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_widget_show (alignment_num);
+ gtk_container_add (GTK_CONTAINER (frame_num), alignment_num);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (alignment_num), 0, 0, 12, 0);
+
+ vbox_num = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox_num);
+ gtk_container_add (GTK_CONTAINER (alignment_num), vbox_num);
+
+ label_num = gtk_label_new (puser_statis);
+ gtk_widget_show (label_num);
+ gtk_frame_set_label_widget (GTK_FRAME (frame_num), label_num);
+ gtk_label_set_use_markup (GTK_LABEL (label_num), TRUE);
+
+ hbox3 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox3);
+ gtk_box_pack_start (GTK_BOX (vbox_num), hbox3, TRUE, TRUE, 0);
+
+ label_usernum = gtk_label_new (pusernum);
+ gtk_widget_show (label_usernum);
+ gtk_box_pack_start (GTK_BOX (hbox3), label_usernum, FALSE, FALSE, 0);
+ gtk_widget_set_size_request (label_usernum, 100, -1);
+
+ entry_usernum = gtk_entry_new ();
+ gtk_entry_set_text((GtkEntry*)entry_usernum,"0");
+ gtk_entry_set_editable((GtkEntry*)entry_usernum, FALSE);
+ gtk_widget_show (entry_usernum);
+ gtk_box_pack_start (GTK_BOX (hbox3), entry_usernum, FALSE, TRUE, 0);
+ gtk_widget_set_size_request (entry_usernum, 75, -1);
+
+ hbox4 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox4);
+ gtk_box_pack_start (GTK_BOX (vbox_num), hbox4, TRUE, TRUE, 0);
+
+ label_maxnum = gtk_label_new (puser_maxnum);
+ gtk_widget_show (label_maxnum);
+ gtk_box_pack_start (GTK_BOX (hbox4), label_maxnum, FALSE, FALSE, 0);
+ gtk_widget_set_size_request (label_maxnum, 100, -1);
+
+ entry_maxnum = gtk_entry_new ();
+ gtk_entry_set_text((GtkEntry*)entry_maxnum,"0");
+ gtk_entry_set_editable((GtkEntry*)entry_maxnum, FALSE);
+ gtk_widget_show (entry_maxnum);
+ gtk_box_pack_start (GTK_BOX (hbox4), entry_maxnum, FALSE, TRUE, 0);
+ gtk_widget_set_size_request (entry_maxnum, 75, -1);
+
+ hbox5 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox5);
+ gtk_box_pack_start (GTK_BOX (vbox_num), hbox5, TRUE, TRUE, 0);
+
+ label_avenum = gtk_label_new (pavenum);
+ gtk_widget_show (label_avenum);
+ gtk_box_pack_start (GTK_BOX (hbox5), label_avenum, FALSE, FALSE, 0);
+ gtk_widget_set_size_request (label_avenum, 100, -1);
+
+ entry_avenum = gtk_entry_new ();
+ gtk_entry_set_text((GtkEntry*)entry_avenum,"0");
+ gtk_entry_set_editable((GtkEntry*)entry_avenum, FALSE);
+ gtk_widget_show (entry_avenum);
+ gtk_box_pack_start (GTK_BOX (hbox5), entry_avenum, FALSE, TRUE, 0);
+ gtk_widget_set_size_request (entry_avenum, 75, -1);
+
+ frame_list = gtk_frame_new (NULL);
+ gtk_widget_show (frame_list);
+ gtk_box_pack_start (GTK_BOX (vbox2), frame_list, TRUE, TRUE, 0);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame_list), GTK_SHADOW_ETCHED_OUT);
+
+ alignment_list = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_widget_show (alignment_list);
+ gtk_container_add (GTK_CONTAINER (frame_list), alignment_list);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (alignment_list), 0, 0, 12, 0);
+
+ vbox_list = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox_list);
+ gtk_container_add (GTK_CONTAINER (alignment_list), vbox_list);
+
+ label_list = gtk_label_new (pserv_stat);
+ gtk_widget_show (label_list);
+ gtk_frame_set_label_widget (GTK_FRAME (frame_list), label_list);
+ gtk_label_set_use_markup (GTK_LABEL (label_list), TRUE);
+
+ notebook_info = gtk_notebook_new ();
+ gtk_widget_show (notebook_info);
+ gtk_box_pack_start (GTK_BOX (vbox_list), notebook_info, TRUE, TRUE, 0);
+
+ scrolledwindow_room = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_show (scrolledwindow_room);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow_room),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (notebook_info), scrolledwindow_room);
+
+ clist_room = gtk_clist_new (5);
+ gtk_widget_show (clist_room);
+ gtk_container_add (GTK_CONTAINER (scrolledwindow_room), clist_room);
+ gtk_clist_set_column_width (GTK_CLIST (clist_room), 0, 50);
+ gtk_clist_set_column_width (GTK_CLIST (clist_room), 1, 60);
+ gtk_clist_set_column_width (GTK_CLIST (clist_room), 2, 60);
+ gtk_clist_set_column_width (GTK_CLIST (clist_room), 3, 80);
+ gtk_clist_set_column_width (GTK_CLIST (clist_room), 4, 80);
+ gtk_clist_column_titles_show (GTK_CLIST (clist_room));
+
+ room_id = gtk_label_new (pclassID);
+ gtk_widget_show (room_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_room), 0, room_id);
+
+ room_name = gtk_label_new (pclassName);
+ gtk_widget_show (room_name);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_room), 1, room_name);
+
+ rteacher_id = gtk_label_new (pteacherID);
+ gtk_widget_show (rteacher_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_room), 2, rteacher_id);
+
+ rmcu_id = gtk_label_new (prmcu_id);
+ gtk_widget_show (rmcu_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_room), 3, rmcu_id);
+
+ rfocus_id = gtk_label_new (pfocus_stuID);
+ gtk_widget_show (rfocus_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_room), 4, rfocus_id);
+
+ roomlist = gtk_label_new (pclass);
+ gtk_widget_show (roomlist);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook_info), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook_info), 0), roomlist);
+
+ scrolledwindow_teacher = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_show (scrolledwindow_teacher);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow_teacher),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (notebook_info), scrolledwindow_teacher);
+
+ clist_teacher = gtk_clist_new (4);
+ gtk_widget_show (clist_teacher);
+ gtk_container_add (GTK_CONTAINER (scrolledwindow_teacher), clist_teacher);
+ gtk_clist_set_column_width (GTK_CLIST (clist_teacher), 0, 60);
+ gtk_clist_set_column_width (GTK_CLIST (clist_teacher), 1, 100);
+ gtk_clist_set_column_width (GTK_CLIST (clist_teacher), 2, 120);
+ gtk_clist_set_column_width (GTK_CLIST (clist_teacher), 3, 60);
+ gtk_clist_column_titles_show (GTK_CLIST (clist_teacher));
+
+ teacher_id = gtk_label_new (pteacherID);
+ gtk_widget_show (teacher_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_teacher), 0, teacher_id);
+
+ teacher_name = gtk_label_new (pteacherName);
+ gtk_widget_show (teacher_name);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_teacher), 1, teacher_name);
+
+ teacher_ip = gtk_label_new (pteacherIP);
+ gtk_widget_show (teacher_ip);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_teacher), 2, teacher_ip);
+
+ tmcu_id = gtk_label_new (pclassID);
+ gtk_widget_show (tmcu_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_teacher), 3, tmcu_id);
+
+ teacherlist = gtk_label_new (pteacher);
+ gtk_widget_show (teacherlist);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook_info), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook_info), 1), teacherlist);
+
+ scrolledwindow_student = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_show (scrolledwindow_student);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow_student),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (notebook_info), scrolledwindow_student);
+
+ clist_student = gtk_clist_new (5);
+ gtk_widget_show (clist_student);
+ gtk_container_add (GTK_CONTAINER (scrolledwindow_student), clist_student);
+ gtk_clist_set_column_width (GTK_CLIST (clist_student), 0, 50);
+ gtk_clist_set_column_width (GTK_CLIST (clist_student), 1, 60);
+ gtk_clist_set_column_width (GTK_CLIST (clist_student), 2, 100);
+ gtk_clist_set_column_width (GTK_CLIST (clist_student), 3, 50);
+ gtk_clist_set_column_width (GTK_CLIST (clist_student), 4, 70);
+ gtk_clist_column_titles_show (GTK_CLIST (clist_student));
+
+ student_id = gtk_label_new (pstuID);
+ gtk_widget_show (student_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_student), 0, student_id);
+ gtk_widget_set_size_request (student_id, 12, -1);
+
+ student_name = gtk_label_new (pstuName);
+ gtk_widget_show (student_name);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_student), 1, student_name);
+
+ student_ip = gtk_label_new (pstuIP);
+ gtk_widget_show (student_ip);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_student), 2, student_ip);
+
+ sroom_id = gtk_label_new (pclassID);
+ gtk_widget_show (sroom_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_student), 3, sroom_id);
+
+ smcu_id = gtk_label_new (prmcu_id);
+ gtk_widget_show (smcu_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_student), 4, smcu_id);
+
+
+
+ studentlist = gtk_label_new (pstu);
+ gtk_widget_show (studentlist);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook_info), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook_info), 2), studentlist);
+
+ scrolledwindow_mcu = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_show (scrolledwindow_mcu);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow_mcu),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (notebook_info), scrolledwindow_mcu);
+
+ clist_mcu = gtk_clist_new (4);
+ gtk_widget_show (clist_mcu);
+ gtk_container_add (GTK_CONTAINER (scrolledwindow_mcu), clist_mcu);
+ gtk_clist_set_column_width (GTK_CLIST (clist_mcu), 0, 60);
+ gtk_clist_set_column_width (GTK_CLIST (clist_mcu), 1, 100);
+ gtk_clist_set_column_width (GTK_CLIST (clist_mcu), 2, 120);
+ gtk_clist_set_column_width (GTK_CLIST (clist_mcu), 3, 60);
+ gtk_clist_column_titles_show (GTK_CLIST (clist_mcu));
+
+ mcu_id = gtk_label_new (prmcu_id);
+ gtk_widget_show (mcu_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_mcu), 0, mcu_id);
+
+ mcu_name = gtk_label_new (prmcu_name);
+ gtk_widget_show (mcu_name);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_mcu), 1, mcu_name);
+
+ mcu_ip = gtk_label_new (prmcuIP);
+ gtk_widget_show (mcu_ip);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_mcu), 2, mcu_ip);
+
+ mroom_id = gtk_label_new (pclassID);
+ gtk_widget_show (mroom_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_mcu), 3, mroom_id);
+
+ MCUlist = gtk_label_new (prmcu);
+ gtk_widget_show (MCUlist);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook_info), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook_info), 3), MCUlist);
+
+ scrolledwindow_semcu = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_show (scrolledwindow_semcu);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow_semcu),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (notebook_info), scrolledwindow_semcu);
+
+ clist_semcu = gtk_clist_new (5);
+ gtk_widget_show (clist_semcu);
+ gtk_container_add (GTK_CONTAINER (scrolledwindow_semcu), clist_semcu);
+ gtk_clist_set_column_width (GTK_CLIST (clist_semcu), 0, 60);
+ gtk_clist_set_column_width (GTK_CLIST (clist_semcu), 1, 60);
+ gtk_clist_set_column_width (GTK_CLIST (clist_semcu), 2, 100);
+ gtk_clist_set_column_width (GTK_CLIST (clist_semcu), 3, 60);
+ gtk_clist_set_column_width (GTK_CLIST (clist_semcu), 4, 50);
+ gtk_clist_column_titles_show (GTK_CLIST (clist_semcu));
+
+ semcu_id = gtk_label_new (psemcu_id);
+ gtk_widget_show (semcu_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_semcu), 0, semcu_id);
+
+ semcu_name = gtk_label_new (psemcu_name);
+ gtk_widget_show (semcu_name);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_semcu), 1, semcu_name);
+
+ semcu_ip = gtk_label_new (psemcu_ip);
+ gtk_widget_show (semcu_ip);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_semcu), 2, semcu_ip);
+
+ semmcu_id = gtk_label_new (prmcu_id);
+ gtk_widget_show (semmcu_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_semcu), 3, semmcu_id);
+
+ seroom_id = gtk_label_new (pclassID);
+ gtk_widget_show (seroom_id);
+ gtk_clist_set_column_widget (GTK_CLIST (clist_semcu), 4, seroom_id);
+
+ SeMCUlist = gtk_label_new (psemcu);
+ gtk_widget_show (SeMCUlist);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook_info), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook_info), 4), SeMCUlist);
+
+ g_signal_connect ((gpointer) start, "activate",
+ G_CALLBACK (on_start_activate),
+ NULL);
+
+ g_signal_connect ((gpointer) exit1, "activate",
+ G_CALLBACK (gtk_main_quit),
+ NULL);
+
+ g_signal_connect ((gpointer) update, "activate",
+ G_CALLBACK (on_update_activate),
+ NULL);
+ g_signal_connect ((gpointer) help, "activate",
+ G_CALLBACK (on_help_activate),
+ NULL);
+ g_signal_connect ((gpointer) about, "activate",
+ G_CALLBACK (on_about_activate),
+ NULL);
+
+
+
+ g_signal_connect ((gpointer) button_clear, "clicked",
+ G_CALLBACK (on_button_clear_clicked),
+ NULL);
+ g_signal_connect ((gpointer) button_update, "clicked",
+ G_CALLBACK (on_button_update_clicked),
+ NULL);
+
+
+ return window_tserver;
+}
+
+GtkWidget * create_About( void )
+{
+ GtkWidget * About;
+ GtkWidget * vbox;
+ GtkWidget * vbox1;
+ GtkWidget * vbox2;
+ GtkWidget * hbox1;
+
+ GtkWidget * AboutBufferText;
+ GtkWidget * Ok;
+ GtkStyle *style;
+ char convert[1000];
+ GError * error;
+ char text[1000];
+
+
+ About=gtk_window_new( GTK_WINDOW_TOPLEVEL );
+ style = gtk_rc_get_style( About );
+ pango_font_description_set_family(style->font_desc, "Stsong" );
+ gtk_widget_set_style( About, style );
+
+ gtk_widget_set_usize( About,300,200 );
+ gtk_window_set_title( GTK_WINDOW( About ),pabout); //"" );
+ gtk_window_set_position( GTK_WINDOW( About ),GTK_WIN_POS_CENTER );
+ gtk_window_set_policy( GTK_WINDOW( About ),TRUE,FALSE,FALSE );
+ gtk_widget_realize( About );
+ gtk_window_set_modal((GtkWindow *)About,TRUE);
+
+ vbox=gtk_vbox_new(FALSE, 0);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
+ gtk_container_add(GTK_CONTAINER(About), vbox);
+
+ vbox2=gtk_vbox_new(FALSE, 0);
+
+ gtk_container_add(GTK_CONTAINER(vbox), vbox2);
+
+ strcpy(text,pok);
+ strcpy(convert, g_convert(text,sizeof(text),"UTF-8","ISO-8859-1",NULL, NULL, &error));
+
+
+
+ GtkTextBuffer *Buffer;
+ AboutBufferText = gtk_text_view_new ();
+ gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(AboutBufferText),NULL);
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(AboutBufferText),NULL);
+ gtk_container_add (GTK_CONTAINER ( vbox2 ), AboutBufferText);
+ Buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW( AboutBufferText ));
+ GtkTextIter it1;
+ gtk_text_buffer_get_start_iter(Buffer, &it1);
+ gtk_text_buffer_insert(Buffer, &it1,pversion, -1);
+ gtk_text_buffer_insert(Buffer, &it1,CURRENT_VERSION, -1);
+
+ vbox2 = gtk_hbox_new(FALSE, 0);
+ gtk_box_pack_end(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0);
+ gtk_widget_show(hbox1);
+
+
+ Ok = gtk_button_new_with_label("OK");
+ gtk_box_pack_end(GTK_BOX(vbox2), Ok, FALSE, TRUE, 0);
+
+ gtk_signal_connect_object(GTK_OBJECT( Ok ), "clicked",
+ GTK_SIGNAL_FUNC(gtk_widget_destroy),
+ (gpointer) About);
+
+ return About;
+}
Added: incubator/bluesky/trunk/RealClass/TServer/src/interface.hh
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/interface.hh?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/interface.hh (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/interface.hh Mon Nov 30 11:24:38 2009
@@ -0,0 +1,18 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+GtkWidget* create_window_tserver (void);
+GtkWidget * create_About( void );
Added: incubator/bluesky/trunk/RealClass/TServer/src/languagechoose.cpp
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/languagechoose.cpp?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/languagechoose.cpp (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/languagechoose.cpp Mon Nov 30 11:24:38 2009
@@ -0,0 +1,663 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+
+#include "languagechoose.h"
+
+
+
+//window_title
+#ifdef LANGUAGE_EN
+ char *pwindow_title = "Server";
+#endif
+#ifdef LANGUAGE_CH
+ char *pwindow_title = "课å æå¡ä¸å¿";
+#endif
+
+
+//pmenu system
+#ifdef LANGUAGE_EN
+ char *pmenu_system = "System";
+#endif
+#ifdef LANGUAGE_CH
+ char *pmenu_system = "ç³»ç»";
+#endif
+
+
+//pstart system
+#ifdef LANGUAGE_EN
+ char *pstart_system = "Start";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstart_system = "å¯å¨";
+#endif
+
+//exit system
+#ifdef LANGUAGE_EN
+ char *pexit_system = "Quit";
+#endif
+#ifdef LANGUAGE_CH
+ char *pexit_system = "éåº";
+#endif
+
+//pcontrol
+#ifdef LANGUAGE_EN
+ char *pcontrol = "Control";
+#endif
+#ifdef LANGUAGE_CH
+ char *pcontrol = "æ§å¶";
+#endif
+
+//update
+#ifdef LANGUAGE_EN
+ char *pupdate = "Update";
+#endif
+#ifdef LANGUAGE_CH
+ char *pupdate = "æ´æ°";
+#endif
+
+//help
+#ifdef LANGUAGE_EN
+ char *phelp = "Help";
+#endif
+#ifdef LANGUAGE_CH
+ char *phelp = "帮å©";
+#endif
+
+//about
+#ifdef LANGUAGE_EN
+ char *pabout = "About";
+#endif
+#ifdef LANGUAGE_CH
+ char *pabout = "å
³äº";
+#endif
+
+//server log
+#ifdef LANGUAGE_EN
+ char *psever_log = "<b>Server Log</b>";
+#endif
+#ifdef LANGUAGE_CH
+ char *psever_log = "<b>æå¡å¨æ¥å¿</b>";
+#endif
+
+//update button
+#ifdef LANGUAGE_EN
+ char *pbutn_update = "Update";
+#endif
+#ifdef LANGUAGE_CH
+ char *pbutn_update = "æ´æ°";
+#endif
+
+//clear-button
+#ifdef LANGUAGE_EN
+ char *pbutn_clear = "Clear";
+#endif
+#ifdef LANGUAGE_CH
+ char *pbutn_clear = "æ¸
空";
+#endif
+
+//user statistics
+#ifdef LANGUAGE_EN
+ char *puser_statis = "Users Statistics";
+#endif
+#ifdef LANGUAGE_CH
+ char *puser_statis = "<b>æå¡å¨ç¨æ·ç»è®¡</b>";
+#endif
+
+//current user number
+#ifdef LANGUAGE_EN
+ char *pusernum = "Current Users ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pusernum = "å½åç¨æ·æ°ç®";
+#endif
+
+//maximum number
+#ifdef LANGUAGE_EN
+ char *puser_maxnum = "Maximum Number ";
+#endif
+#ifdef LANGUAGE_CH
+ char *puser_maxnum = "æ大ç¨æ·æ°ç®";
+#endif
+
+//average number
+#ifdef LANGUAGE_EN
+ char *pavenum = "Average Number ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pavenum = "å¹³åç¨æ·æ°ç®";
+#endif
+
+//server online status
+#ifdef LANGUAGE_EN
+ char *pserv_stat = "<b>Server Online Status</b>";
+#endif
+#ifdef LANGUAGE_CH
+ char *pserv_stat = "<b>æå¡å¨å¨çº¿ç¶åµ</b>";
+#endif
+
+//class ID
+#ifdef LANGUAGE_EN
+ char *pclassID = "ClassID";
+#endif
+#ifdef LANGUAGE_CH
+ char *pclassID = "课å ID";
+#endif
+
+//class name
+#ifdef LANGUAGE_EN
+ char *pclassName = "ClassName";
+#endif
+#ifdef LANGUAGE_CH
+ char *pclassName = "课å å称";
+#endif
+
+//teacher ID
+#ifdef LANGUAGE_EN
+ char *pteacherID = "TeacherID";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacherID = "æå¸ID";
+#endif
+
+//rmcu_id
+#ifdef LANGUAGE_EN
+ char *prmcu_id = "Main-MCU ID";
+#endif
+#ifdef LANGUAGE_CH
+ char *prmcu_id = "主MCU ID";
+#endif
+
+// Focus studentID
+#ifdef LANGUAGE_EN
+ char *pfocus_stuID = "Focus StudentID";
+#endif
+#ifdef LANGUAGE_CH
+ char *pfocus_stuID = "ç¦ç¹å¦çID";
+#endif
+
+//class
+#ifdef LANGUAGE_EN
+ char *pclass = "Class";
+#endif
+#ifdef LANGUAGE_CH
+ char *pclass = "课å ";
+#endif
+
+//teacher name
+#ifdef LANGUAGE_EN
+ char *pteacherName = "TeacherName";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacherName = "æå¸å称";
+#endif
+
+//teacherIP
+#ifdef LANGUAGE_EN
+ char *pteacherIP = "TeacherIP";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacherIP = "æå¸IP";
+#endif
+
+//teacher
+#ifdef LANGUAGE_EN
+ char *pteacher = "Teacher";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacher = "æå¸";
+#endif
+
+//studentID
+#ifdef LANGUAGE_EN
+ char *pstuID = "StudentID";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstuID = "å¦çID";
+#endif
+
+//studen name
+#ifdef LANGUAGE_EN
+ char *pstuName = "StudentName";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstuName = "å¦çåå";
+#endif
+
+//studentIP
+#ifdef LANGUAGE_EN
+ char *pstuIP = "StudentIP";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstuIP = "å¦çIP";
+#endif
+
+//student
+#ifdef LANGUAGE_EN
+ char *pstu = "Student";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu = "å¦ç";
+#endif
+
+//rmcu_name
+#ifdef LANGUAGE_EN
+ char *prmcu_name = "Main-MCU Name";
+#endif
+#ifdef LANGUAGE_CH
+ char *prmcu_name = "主MCUå称";
+#endif
+
+//rmcuIP
+#ifdef LANGUAGE_EN
+ char *prmcuIP = "Main-MCU IP";
+#endif
+#ifdef LANGUAGE_CH
+ char *prmcuIP = "主MCU IP";
+#endif
+
+//rmcu
+#ifdef LANGUAGE_EN
+ char *prmcu = "Main-MCU";
+#endif
+#ifdef LANGUAGE_CH
+ char *prmcu = "主MCU";
+#endif
+
+//semcu_id
+#ifdef LANGUAGE_EN
+ char *psemcu_id = "Sed-MCU ID";
+#endif
+#ifdef LANGUAGE_CH
+ char *psemcu_id = "è¾
MCU ID";
+#endif
+
+//semcu name
+#ifdef LANGUAGE_EN
+ char *psemcu_name = "Sed-MCU Name";
+#endif
+#ifdef LANGUAGE_CH
+ char *psemcu_name = "è¾
MCUå称";
+#endif
+
+//semcu_ip
+#ifdef LANGUAGE_EN
+ char *psemcu_ip = "Sed-MCU IP";
+#endif
+#ifdef LANGUAGE_CH
+ char *psemcu_ip = "è¾
MCU IP";
+#endif
+
+//semcu
+#ifdef LANGUAGE_EN
+ char *psemcu = "Sed-MCU";
+#endif
+#ifdef LANGUAGE_CH
+ char *psemcu = "è¾
MCU";
+#endif
+
+//ok
+#ifdef LANGUAGE_EN
+ char *pok = "OK";
+#endif
+#ifdef LANGUAGE_CH
+ char *pok = "ç¡®å®";
+#endif
+
+//version
+#ifdef LANGUAGE_EN
+ char *pversion = "The Current Version is 1.0 ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pversion = "å½åççæ¬å·ä¸º ";
+#endif
+
+//Initialization
+#ifdef LANGUAGE_EN
+ char *pInit = "Initializing......\n";
+#endif
+#ifdef LANGUAGE_CH
+ char *pInit = "åå§å......\n";
+#endif
+
+//Started
+#ifdef LANGUAGE_EN
+ char *pstarted = "System launched successfully!\n";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstarted = "ç³»ç»å¯å¨æå!\n";
+#endif
+
+//student send text message
+#ifdef LANGUAGE_EN
+ char *pstu_sed_text = "Student %s sends text message. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_sed_text = "å¦ç%såéææ¬ã";
+#endif
+
+//teacher login
+#ifdef LANGUAGE_EN
+ char *pteacher_login = "Teacher %s lands system. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacher_login = "æå¸%sç»éç³»ç»ã";
+#endif
+
+//login error
+#ifdef LANGUAGE_EN
+ char *perror001 = "Errors: Duplicate landing. \n";
+#endif
+#ifdef LANGUAGE_CH
+ char *perror001 = "é误ï¼éå¤ç»éã\n";
+#endif
+
+//error002
+#ifdef LANGUAGE_EN
+ char *perror002 = "Error: The same username has sexist. \n";
+#endif
+#ifdef LANGUAGE_CH
+ char *perror002 = "é误ï¼å·²æååç¨æ·åå¨ã\n";
+#endif
+
+//teacher logout
+#ifdef LANGUAGE_EN
+ char *pteacher_logout = "Techer %s exits system. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacher_logout = "æå¸%séåºç³»ç»ã";
+#endif
+
+//rmcu login
+#ifdef LANGUAGE_EN
+ char *prmcu_login = "Main-MCU lands system";
+#endif
+#ifdef LANGUAGE_CH
+ char *prmcu_login = "主MCU %sç»éç³»ç»ã";
+#endif
+
+//error003
+#ifdef LANGUAGE_EN
+ char *perror003 = "Error: MCU repeats landing\n";
+#endif
+#ifdef LANGUAGE_CH
+ char *perror003 = "é误ï¼MCUéå¤ç»é\n";
+#endif
+
+//error004
+#ifdef LANGUAGE_EN
+ char *perror004 = "Error: There is the same name MCU exist";
+#endif
+#ifdef LANGUAGE_CH
+ char *perror004 = "é误ï¼å·²æååMCUåå¨\n";
+#endif
+
+//rmcu logout
+#ifdef LANGUAGE_EN
+ char *prmcu_logout = "Main-MCU %s exits system. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *prmcu_logout = "主MCU %séåºç³»ç»ã";
+#endif
+
+//student login
+#ifdef LANGUAGE_EN
+ char *pstu_login = "Student %s logins system. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_login = "å¦ç%sç»éç³»ç»ã";
+#endif
+
+//error005
+#ifdef LANGUAGE_EN
+ char *perror005 = "Error: There is the same name student exist. \n";
+#endif
+#ifdef LANGUAGE_CH
+ char *perror005 = "é误ï¼å¦çéå¤ç»éã\n";
+#endif
+
+//error006
+#ifdef LANGUAGE_EN
+ char *perror006 = "Error: There is the same username exist. \n";
+#endif
+#ifdef LANGUAGE_CH
+ char *perror006 = "é误ï¼å·²æååç¨æ·åå¨ã\n";
+#endif
+
+//student logout
+#ifdef LANGUAGE_EN
+ char *pstu_logout = "Student %s exits system";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_logout = "å¦ç%séåºç³»ç»ã";
+#endif
+
+//teacher creat class
+#ifdef LANGUAGE_EN
+ char *ptcher_crclass = "Teacher %s creats class %s. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *ptcher_crclass = "æå¸%så建课å %sã";
+#endif
+
+//teacher cancel class
+#ifdef LANGUAGE_EN
+ char *ptcher_canlclass = "Teacher %s cancels class %s. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *ptcher_canlclass = "æå¸%sæ¤é课å %sã";
+#endif
+
+//student join in class
+#ifdef LANGUAGE_EN
+ char *pstu_join = "Student %s joins in class %s. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_join = "å¦ç%så å
¥è¯¾å %sã";
+#endif
+
+//student leave classroom
+#ifdef LANGUAGE_EN
+ char *pstu_out = "Student %s exits class %s. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_out = "å¦ç%s离å¼è¯¾å %sã";
+#endif
+
+//rmcu leave classroom
+#ifdef LANGUAGE_EN
+ char *prmcu_exit_class = "Main-MCU %s exit class %s. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *prmcu_exit_class = "主MCU %séåºè¯¾å %sã";
+#endif
+
+//teacher send message to group
+#ifdef LANGUAGE_EN
+ char *pteacher_send_groupmage = "Teaher %s send text-message to group. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacher_send_groupmage = "æå¸%såç»å
ç¨æ·åéææ¬ã";
+#endif
+
+//change to communication
+#ifdef LANGUAGE_EN
+ char *pclass_commu = "Class %s swich to communication mode. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pclass_commu = "课å %såæ¢å°äº¤äºæ¨¡å¼ã";
+#endif
+
+//change to teaching
+#ifdef LANGUAGE_EN
+ char *pclass_teach = "Class %s swich to teaching mode. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pclass_teach = "课å %såæ¢å°æ课模å¼ã";
+#endif
+
+//student appli
+#ifdef LANGUAGE_EN
+ char *pstu_appli = "Student %s applicates to be focus. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_appli = "å¦ç%sç³è¯·ç¦ç¹ã";
+#endif
+
+//student appli cancel
+#ifdef LANGUAGE_EN
+ char *pstu_appli_cancel = "Student %s applicates to cancel his/her focus. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_appli_cancel = "å¦ç%s请æ±æ¤éç¦ç¹ã";
+#endif
+
+
+//student send group message
+#ifdef LANGUAGE_EN
+ char *pstu_send_groupmage = "Student %s sends text-message to group. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_send_groupmage = "å¦ç%så¨ç»å
è¿è¡ææ¬å¹¿æã";
+#endif
+
+
+//student get class information
+#ifdef LANGUAGE_EN
+ char *pstu_get_classinfo = "Student %s gets information of class. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_get_classinfo = "å¦ç%sè·å课å ä¿¡æ¯ã";
+#endif
+
+
+//student get others information
+#ifdef LANGUAGE_EN
+ char *pstu_get_stulist = "Student %s gets information of other students in the class. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pstu_get_stulist = "å¦ç%sè·å课å å
å
¶ä»å¦çä¿¡æ¯ã";
+#endif
+
+
+//teacher option rstudent
+#ifdef LANGUAGE_EN
+ char *pteacher_option_rstu = "Teacher %s designats student %s as focus. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacher_option_rstu = "æå¸%sæå®å¦ç%s为ç¦ç¹ã";
+#endif
+
+
+//teacher cancel rstudent
+#ifdef LANGUAGE_EN
+ char *pteacher_cancel_rstu = "Teacher %s cancels the foucs of student. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacher_cancel_rstu = "æå¸%sæ¤éç¦ç¹ã";
+#endif
+
+
+//teacher get student list
+#ifdef LANGUAGE_EN
+ char *pteacher_get_stulist = "Teacher %s gets the student-list of the group. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pteacher_get_stulist = "æå¸%sè·åç»å
å¦çå表ã";
+#endif
+
+
+//assmcu login
+#ifdef LANGUAGE_EN
+ char *pamcu_login = "Second layer MCU %s enter system. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pamcu_login = "è¾
MCU %sç»éç³»ç»ã";
+#endif
+
+
+//assmcu login failure
+#ifdef LANGUAGE_EN
+ char *perror007 = "Error: Second layer MCU is landing repeatly. \n";
+#endif
+#ifdef LANGUAGE_CH
+ char *perror007 = "é误ï¼è¾
MCUéå¤ç»éã\n";
+#endif
+
+
+//error008
+#ifdef LANGUAGE_EN
+ char *perror008 = "Error: There is the same name second layer MCU existing. \n";
+#endif
+#ifdef LANGUAGE_CH
+ char *perror008 = "é误ï¼å·²æååè¾
MCUåå¨ã\n";
+#endif
+
+
+//assmcu logout
+#ifdef LANGUAGE_EN
+ char *pamcu_logout = "Second layer %s exits from system. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pamcu_logout = "è¾
MCU %séåºç³»ç»ã";
+#endif
+
+
+//assmcu get class information
+#ifdef LANGUAGE_EN
+ char *pamcu_get_classinfo = "Second layer MCU %s gets information of the class. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pamcu_get_classinfo = "è¾
MCU %sè·å课å ä¿¡æ¯ã";
+#endif
+
+
+//assmcu join class
+#ifdef LANGUAGE_EN
+ char *pamcu_join = "Second layer MCU %s joins in class %s. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pamcu_join = "è¾
MCU %så å
¥è¯¾å %sã";
+#endif
+
+
+//assmcu exit class
+#ifdef LANGUAGE_EN
+ char *pamcu_exit = "Second layer MCU %s exits from class %s. ";
+#endif
+#ifdef LANGUAGE_CH
+ char *pamcu_exit = "è¾
MCU %séåºè¯¾å %sã";
+#endif
+
+
+//allow chat
+#ifdef LANGUAGE_EN
+ char *pallow_chat = "Swich to the mode that allows students chating";
+#endif
+#ifdef LANGUAGE_CH
+ char *pallow_chat = "åæ¢å°å
许å¦çè天模å¼";
+#endif
+
+
+//forbid chat
+#ifdef LANGUAGE_EN
+ char *pforbid_chat = "Swich to the mode that forbids students chating";
+#endif
+#ifdef LANGUAGE_CH
+ char *pforbid_chat = "åæ¢å°ç¦æ¢å¦çè天模å¼";
+#endif
+
Added: incubator/bluesky/trunk/RealClass/TServer/src/languagechoose.h
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/languagechoose.h?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/languagechoose.h (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/languagechoose.h Mon Nov 30 11:24:38 2009
@@ -0,0 +1,414 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+#ifndef _SOURCE_NAME_H_
+#define _SOURCE_NAME_H_
+
+#define LANGUAGE_EN //choose language
+
+
+// window titile
+ extern char *pwindow_title ;
+/////////////////////
+
+
+// menu system
+ extern char *pmenu_system ;
+/////////////////////
+
+
+// start system
+ extern char *pstart_system ;
+/////////////////////
+
+
+//
+ extern char *pexit_system ;
+/////////////////////
+
+
+// control
+ extern char *pcontrol ;
+/////////////////////
+
+
+// update
+ extern char *pupdate ;
+/////////////////////
+
+
+// help
+ extern char *phelp ;
+/////////////////////
+
+
+// about
+ extern char *pabout ;
+/////////////////////
+
+
+// sever log
+ extern char *psever_log ;
+/////////////////////
+
+
+//update button
+ extern char *pbutn_update ;
+/////////////////////
+
+
+//clear-button
+ extern char *pbutn_clear ;
+/////////////////////
+
+
+//
+ extern char *puser_statis ;
+/////////////////////
+
+
+//
+ extern char *pusernum ;
+/////////////////////
+
+
+//
+ extern char *puser_maxnum ;
+/////////////////////
+
+
+//
+ extern char *pavenum ;
+/////////////////////
+
+
+//
+ extern char *pserv_stat ;
+/////////////////////
+
+
+//
+ extern char *pclassID ;
+/////////////////////
+
+
+//
+ extern char *pclassName ;
+/////////////////////
+
+
+//
+ extern char *pteacherID ;
+/////////////////////
+
+
+//
+ extern char *prmcu_id ;
+/////////////////////
+
+
+//
+ extern char *pfocus_stuID ;
+/////////////////////
+
+
+//
+ extern char *pclass ;
+/////////////////////
+
+
+//
+ extern char *pteacherName ;
+/////////////////////
+
+
+//
+ extern char *pteacherIP ;
+/////////////////////
+
+
+//
+ extern char *pteacher ;
+/////////////////////
+
+
+//
+ extern char *pstuID ;
+/////////////////////
+
+
+//
+ extern char *pstuName ;
+/////////////////////
+
+
+//
+ extern char *pstuIP ;
+/////////////////////
+
+
+//
+ extern char *pstu ;
+/////////////////////
+
+
+//
+ extern char *prmcu_name ;
+/////////////////////
+
+
+//
+ extern char *prmcuIP ;
+/////////////////////
+
+
+//
+ extern char *prmcu ;
+/////////////////////
+
+
+//
+ extern char *psemcu_id ;
+/////////////////////
+
+
+//
+ extern char *psemcu_name ;
+/////////////////////
+
+
+//
+ extern char *psemcu_ip ;
+/////////////////////
+
+
+//
+ extern char *psemcu ;
+/////////////////////
+
+
+//
+ extern char *pok ;
+/////////////////////
+
+
+//
+ extern char *pversion ;
+/////////////////////
+
+
+//
+ extern char *pInit ;
+/////////////////////
+
+
+//
+ extern char *pstu_sed_text ;
+/////////////////////
+
+
+//
+ extern char *pteacher_login ;
+/////////////////////
+
+
+//
+ extern char *perror001 ;
+/////////////////////
+
+
+//
+ extern char *perror002 ;
+/////////////////////
+
+
+//
+ extern char *pteacher_logout ;
+/////////////////////
+
+
+//
+ extern char *prmcu_login ;
+/////////////////////
+
+
+//
+ extern char *perror004 ;
+/////////////////////
+
+
+//
+ extern char *prmcu_logout ;
+/////////////////////
+
+
+//
+ extern char *perror005 ;
+/////////////////////
+
+
+//
+ extern char *perror006 ;
+/////////////////////
+
+
+//
+ extern char *pstu_logout ;
+/////////////////////
+
+
+//
+ extern char *ptcher_crclass ;
+/////////////////////
+
+
+//
+ extern char *ptcher_canlclass ;
+/////////////////////
+
+
+//
+ extern char *pstu_join ;
+/////////////////////
+
+
+//
+ extern char *pstu_out ;
+/////////////////////
+
+
+//
+ extern char *prmcu_exit_class ;
+/////////////////////
+
+
+//
+ extern char *pteacher_send_groupmage ;
+/////////////////////
+
+
+//
+ extern char *pclass_commu ;
+/////////////////////
+
+
+//
+ extern char *pclass_teach ;
+/////////////////////
+
+
+//
+ extern char *pstu_appli ;
+/////////////////////
+
+
+//
+ extern char *pstu_appli_cancel ;
+/////////////////////
+
+
+//
+ extern char *pstu_send_groupmage ;
+/////////////////////
+
+
+//
+ extern char *pstu_get_classinfo ;
+/////////////////////
+
+
+//
+ extern char *pstu_get_stulist ;
+/////////////////////
+
+
+//
+ extern char *pteacher_option_rstu ;
+/////////////////////
+
+
+//
+ extern char *pteacher_cancel_rstu ;
+/////////////////////
+
+
+//
+ extern char *pteacher_get_stulist ;
+/////////////////////
+
+
+//
+ extern char *pamcu_login ;
+/////////////////////
+
+
+//
+ extern char *perror007 ;
+/////////////////////
+
+
+//
+ extern char *perror008 ;
+/////////////////////
+
+
+//
+ extern char *pamcu_logout ;
+/////////////////////
+
+
+//
+ extern char *pamcu_get_classinfo ;
+/////////////////////
+
+
+//
+ extern char *pamcu_join ;
+/////////////////////
+
+
+//
+ extern char *pamcu_exit ;
+/////////////////////
+
+
+//
+ extern char *pallow_chat ;
+/////////////////////
+
+
+//
+ extern char *pstarted ;
+/////////////////////
+
+
+//
+ extern char *pforbid_chat ;
+/////////////////////
+
+
+//
+ extern char *perror003 ;
+/////////////////////
+
+
+//
+ extern char *pstu_login ;
+/////////////////////
+
+
+#endif
Added: incubator/bluesky/trunk/RealClass/TServer/src/lissocket.cpp
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/lissocket.cpp?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/lissocket.cpp (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/lissocket.cpp Mon Nov 30 11:24:38 2009
@@ -0,0 +1,64 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+// LisSocket.cpp: implementation of the CLisSocket class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "lissocket.h"
+#include "clientsocket.h"
+#include "adminserver.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CLisSocket::CLisSocket()
+{
+
+}
+
+CLisSocket::~CLisSocket()
+{
+ ShutDown(both);
+ Close();
+
+}
+
+void CLisSocket::OnEvent()
+{
+ CClientSocket accept;
+ int count[THREADCOUNT];
+ int t, min;
+ if(m_lEvent == 1){ //Accept socket.
+ printf("\nLinstening.................");
+ if(Accept(accept)){
+ for(t=0; t<THREADCOUNT; t++){
+ count[t] = m_pServer->m_accept[t].GetCount();
+ }
+ for(t=0, min=0; t<THREADCOUNT; t++){
+ if(count[min] > count[t])
+ min = t;
+ }
+ if(m_pServer->m_accept[min].AddSocket(accept.Detach())){
+ printf("\nAccepted a connect................");
+ }
+ }
+ }
+ return ;
+}
Added: incubator/bluesky/trunk/RealClass/TServer/src/lissocket.h
URL: http://svn.apache.org/viewvc/incubator/bluesky/trunk/RealClass/TServer/src/lissocket.h?rev=885379&view=auto
==============================================================================
--- incubator/bluesky/trunk/RealClass/TServer/src/lissocket.h (added)
+++ incubator/bluesky/trunk/RealClass/TServer/src/lissocket.h Mon Nov 30 11:24:38 2009
@@ -0,0 +1,39 @@
+//Licensed to the Apache Software Foundation (ASF) under one
+//or more contributor license agreements. See the NOTICE file
+//distributed with this work for additional information
+//regarding copyright ownership. The ASF licenses this file
+//to you under the Apache License, Version 2.0 (the
+//"License"); you may not use this file except in compliance
+//with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing,
+//software distributed under the License is distributed on an
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//KIND, either express or implied. See the License for the
+//specific language governing permissions and limitations
+//under the License.
+
+// LisSocket.h: interface for the CLisSocket class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(LISSOCKET_H)
+#define LISSOCKET_H
+
+#include "asyncsocketex.h"
+
+class CAdminServer;
+class CLisSocket : public CAsyncSocketEx
+{
+public:
+ CLisSocket();
+ virtual ~CLisSocket();
+
+ CAdminServer* m_pServer;
+protected:
+ virtual void OnEvent();
+};
+
+#endif // !defined(LISSOCKET_H)