OpenMeetings系统较大,代码量也不小,如果对前端的OpenLaszlo开发不熟悉的话,刚研究代码时,确实有种丈二和尚摸不着头脑的感觉。一番研究之后,终于初步理清了系统的初步动作流程,具体执行顺序记录如下:

1:index.jsp文件

apache-openmeetings-2.1.0-src/WebContent/src/test/backup 下有一个index.jsp文件,系统启动时,站点访问的就是这个jsp定义的默认页面,其中以一段代码片段如下:

	<script type="text/javascript">
// <![CDATA[ var d = new Date(); var so = new SWFObject("main.lzx.swf8.swf?r="+d.getTime(), "lzapp", "100%", "100%", "8", "#ffffff");
so.addParam("quality", "high");
so.addParam("id", "lzapp");
so.addParam("allowScriptAccess", "always");
so.addParam("scale", "noscale");
so.write("flashcontent"); function focusSWF(){ if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
}else {
document.getElementById('lzapp').focus();
}
} // ]]>
</script>

我们看到,该代码将main.lzx.swf8.swf的flash文件装载进来,而该flash文件正是由WebContent/src目录下的main.lzx的文件编译生成。

2:main.lzx文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--
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. -->
<canvas width="100%" height="100%" title="OpenMeetings">
<text>Hello World!</text>
<switch>
<when property="$debug">
<method name="doDebugInit">
canvas.setAttribute('debug', true);
</method>
<debug fontsize="11" oninit="Debug.showInternalProperties = true" width="40%" y="50%" x="0" height="50%" />
</when>
<otherwise>
<method name="doDebugInit">
</method>
</otherwise>
</switch> <!--引入库文件-->
<include href="incubator/lzcombobox.lzx" />
<include href="incubator/shadowbox.lzx" /> <include href="resources/" /> <!--base/目录下涵盖了一些通用功能的代码,其中有两个名为mainDatasets.lzx和mainMethods.lzx的文件,
前者定义了一个数据集,后者为main.lzx定义了方法,而这两者就包含了代码执行顺序的真相。
-->
<include href="base/" /><!-- attributes,methods,datasets,are moved into /base -->
<include href="modules/" />
<include href="plugins/" /> <!--设置各种Style-->
<silverstyle name="defaultstyle" isdefault="true" canvascolor="white" /> <silverstyle name="componentStyle" basecolor="0xFFFFFF" textcolor="0x000000" /> <silverstyle name="itemStyle" textcolor="0xFFFFFF" /> <whitestyle name="menuStyle" textcolor="0x000000" /> <!-- main colors: 264269 -->
<handler name="oninit">
doDebugInit();
var cmenu = new LzContextMenu();
canvas.setDefaultContextMenu(cmenu);
cmenu.hideBuiltInItems();
if($debug) Debug.write("main.lzx/oninit:",this);
canvas.lc = new LocalConnection();
</handler> <!-- View for Contents. All Windows will be loaded on this view. -->
<view name="main_content" y="${ canvas.naviHeightDelta }" width="${canvas.width}"
height="${ canvas.height-canvas.naviHeightDelta }"
visibility="hidden" showhandcursor="false"> <handler name="onmouseover">
setCurrentMouseWheelObject(this._scrollbar);
</handler>
<handler name="onmouseout">
disableCurrentMouseWheelObject();
</handler> <view x="0" name="_content" >
<view name="inner" />
<method name="clearAll">
<![CDATA[
canvas.sendViaLocalConnection(canvas.vid_lc_name, "clearAll", null);
if($debug) Debug.write("main.lzx/main_content._content.inner.clearAll(): ",this.inner,this.inner.subviews.length);
var baseContent = this.inner.subviews[0].close();
for (var eg in this.inner.subviews) {
if($debug) Debug.write("main.lzx/main_content._content.inner.clearAll()-subviews: ",this.inner.subviews[eg]);
if (eg!=0) this.inner.subviews[eg].close();
}
return baseContent;
]]>
</method>
</view>
<om_hscrollbar name="_scrollbarH" id="_mainScrollHBar" visibility="hidden" />
<om_vscrollbar name="_scrollbar" id="_mainScrollBar" />
</view> <!-- View for Navigation-bar and App-name -->
<view name="_mainbgcontentNavi" x="0" y="0" clip="true"
width="100%" height="${ canvas.naviHeight }" visibility="hidden">
<image id="mainApplogo" visible="false" />
<text id="mainBaseText" visible="false"
fgcolor="${ canvas.fontColorHeader }" fontsize="20" fontstyle="bold">
<method name="setShadow" >
<![CDATA[
if (this.isinited && false){
this.normalMC = this.getDisplayObject();
this.displacementMap = new flash.filters.DropShadowFilter();
this.normalMC.filters = [this.displacementMap];
}
]]>
</method>
<handler name="onclick">
lz.Browser.loadURL(canvas.currentappnameurl,"_blank");
</handler>
<labelTooltip id="mainBaseTextLabel" />
</text>
<handler name="oninit">
var cmenu = new LzContextMenu();
this.setContextMenu(cmenu);
cmenu.hideBuiltInItems();
</handler>
</view> <!-- View for Conference menu bar at the top side. Visible on conference -->
<view name="_conferencemenu" y="0" x="0" width="100%" height="20" visibility="hidden" >
<method name="removeAll">
<![CDATA[
if($debug) Debug.write("main.lzx/_coferencemenu.removeAll(): ");
while (this.subviews.length > 0) {
this.subviews[0].destroy();
}
parent._moderatormenu.removeAll();
]]>
</method>
</view> <view name="_moderatormenu" y="0" x="0" width="100%" height="20">
<method name="removeAll">
<![CDATA[
if($debug) Debug.write("main.lzx/_moderatormenu.removeAll(): ");
while (this.subviews.length > 0) {
this.subviews[0].destroy();
}
]]>
</method>
</view> <!-- View for "Loading" -->
<view name="_loadingAll" visible="false" opacity="0.7"
width="${ canvas.width }" height="${ canvas.height }"
bgcolor="0xFFFFFF" clickable="true" showhandcursor="false">
<method name="hideContentOnly">
this.showLoadingAnni.setAttribute('started', true);
this.setAttribute("visibility","visible");
this._text.setAttribute("visibility","hidden");
</method>
<method name="showLoading">
this.showLoadingAnni.setAttribute('started', true);
this.setAttribute("visibility","visible");
this._text.setAttribute("visibility","visible");
</method>
<method name="hideLoading">
this.setAttribute("visibility","hidden");
</method>
<animator name="showLoadingAnni" attribute="opacity"
from="0" to="0.7" started="false" duration="250" />
<text name="_text" align="right" y="56" fontsize="14" fgcolor="red">Loading...</text>
</view> </canvas>

3:mainDatasets.lzx文件

<!-- all datasets for main.lzx -->

<library>

<!--dataset一旦被包含或者选择,将会触发init event,oninit下的代码将执行,将config.xml文件设置为其属性
this.doRequest()调用时,会将config.xml文件中的数据集加载进来,然后会执行ondata下的代码parent.mainTheme.loadTheme()
加载出现error或者timeout时,则分别执行onerror和ontimeout下的代码。
-->
<!-- get values from config.xml -->
<dataset type="http" name="myConfigSet" request="false" ondata="parent.mainTheme.loadTheme()">
<handler name="oninit">
var d = new Date();
this.setAttribute("src","config.xml?random="+d.getTime());
this.doRequest();
</handler>
<handler name="ondata">
if ($debug) Debug.write("ondata");
</handler>
<handler name="onerror" args="e">
if ($debug) Debug.write("onerror",e);
</handler>
<handler name="ontimeout" args="e">
if ($debug) Debug.write("ontimeout",e);
</handler>
</dataset> <!--上面的代码调用loadTheme,我们看到,该方法中,将default-theme.xml设置为属性。和上面代码流程一样
调用doRequest()将其加载进来,接下来调用ondata下的canvas.myinit(), 这个方法在mainMethods.lzx
中实现了,下一段中详细解析该文件。
-->
<!-- get values from config.xml -->
<dataset type="http" name="mainTheme" request="false" ondata="canvas.myinit()">
<method name="loadTheme">
var d = new Date();
this.setAttribute("src","default-theme.xml?random="+d.getTime());
this.doRequest();
</method>
<handler name="ondata">
if ($debug) Debug.write("ondata");
</handler>
<handler name="onerror" args="e">
if ($debug) Debug.write("onerror",e);
</handler>
<handler name="ontimeout" args="e">
if ($debug) Debug.write("ontimeout",e);
</handler>
</dataset> </library>

4:mainMethods.lzx代码较多,现只将上段代码中调用的myinit()方法贴出来解析

    <method name="myinit">
<![CDATA[
canvas.mediaerrortimeout = 30000;
canvas.medialoadtimeout = 30000; if($debug) Debug.write("main.lzx/config.xml ondata",this); //Set Config-values by config.xml, see comments on config.xml
this.setAttribute('rtmphostlocal',canvas.myConfigSet.getPointer().xpathQuery('config/rtmphostlocal/text()'));
this.setAttribute('rtmpport',Number(canvas.myConfigSet.getPointer().xpathQuery('config/rtmpport/text()')));
this.setAttribute('rtmpTunnelport',Number(canvas.myConfigSet.getPointer().xpathQuery('config/rtmpTunnelport/text()')));
this.setAttribute('rtmpsslport',Number(canvas.myConfigSet.getPointer().xpathQuery('config/rtmpsslport/text()'))); var userSSLString = canvas.myConfigSet.getPointer().xpathQuery('config/useSSL/text()');
if ($debug) Debug.write("userSSLString",userSSLString)
if (userSSLString == "yes") {
this.setAttribute('useSSL',true);
} this.setAttribute('red5httpport',Number(canvas.myConfigSet.getPointer().xpathQuery('config/red5httpport/text()'))); this.setAttribute('currentappname',canvas.myConfigSet.getPointer().xpathQuery('config/currentappname/text()'));
this.setAttribute('currentappnameurl',canvas.myConfigSet.getPointer().xpathQuery('config/currentappnameurl/text()'));
this.setAttribute('currentappnamebugurl',canvas.myConfigSet.getPointer().xpathQuery('config/currentappnamebugurl/text()'));
this.setAttribute('loudnessAcitviation',canvas.myConfigSet.getPointer().xpathQuery('config/loudnessAcitviation/text()'));
this.setAttribute('webAppRootKey',canvas.myConfigSet.getPointer().xpathQuery('config/webAppRootKey/text()'));
this.setAttribute('showWindowEffect',canvas.myConfigSet.getPointer().xpathQuery('config/showWindowEffect/text()'));
this.setAttribute('firstdayinweek',canvas.myConfigSet.getPointer().xpathQuery('config/firstdayinweek/text()'));
this.setAttribute('showRecording',canvas.myConfigSet.getPointer().xpathQuery('config/showRecording/text()')); //old menubar is not active anymore
//this.setAttribute('showmodernWhiteBoard',canvas.myConfigSet.getPointer().xpathQuery('config/showmodernWhiteBoard/text()')); //Audio-Video-Settings
this.setAttribute('framesPerSecond',Number(canvas.myConfigSet.getPointer().xpathQuery('config/framesPerSecond/text()')));
this.setAttribute('bandwidthNeededNormal',Number(canvas.myConfigSet.getPointer().xpathQuery('config/bandwidthNeededNormal/text()')));
this.setAttribute('bandwidthNeededBest',Number(canvas.myConfigSet.getPointer().xpathQuery('config/bandwidthNeededBest/text()')));
this.setAttribute('camQualityNormal',Number(canvas.myConfigSet.getPointer().xpathQuery('config/camQualityNormal/text()')));
this.setAttribute('camQualityBest',Number(canvas.myConfigSet.getPointer().xpathQuery('config/camQualityBest/text()'))); this.setAttribute('defaultWhiteboardWidth',Number(canvas.myConfigSet.getPointer().xpathQuery('config/defaultWhiteboardWidth/text()')));
this.setAttribute('defaultWhiteboardHeight',Number(canvas.myConfigSet.getPointer().xpathQuery('config/defaultWhiteboardHeight/text()'))); this.setAttribute('adminModuleUser',canvas.myConfigSet.getPointer().xpathQuery('config/adminModuleUser/text()'));
this.setAttribute('adminModuleRoom',canvas.myConfigSet.getPointer().xpathQuery('config/adminModuleRoom/text()'));
this.setAttribute('adminModuleOrg',canvas.myConfigSet.getPointer().xpathQuery('config/adminModuleOrg/text()'));
this.setAttribute('adminModuleLanguages',canvas.myConfigSet.getPointer().xpathQuery('config/adminModuleLanguages/text()'));
this.setAttribute('adminModuleConnections',canvas.myConfigSet.getPointer().xpathQuery('config/adminModuleConnections/text()'));
this.setAttribute('adminModuleConfiguration',canvas.myConfigSet.getPointer().xpathQuery('config/adminModuleConfiguration/text()'));
this.setAttribute('adminModuleBackup',canvas.myConfigSet.getPointer().xpathQuery('config/adminModuleBackup/text()'));
this.setAttribute('adminModuleServers',canvas.myConfigSet.getPointer().xpathQuery('config/adminModuleServers/text()')); this.setAttribute('moderatorModuleUser',canvas.myConfigSet.getPointer().xpathQuery('config/moderatorModuleUser/text()'));
this.setAttribute('moderatorModuleRoom',canvas.myConfigSet.getPointer().xpathQuery('config/moderatorModuleRoom/text()')); this.setAttribute('dashboardModuleStartScreen',canvas.myConfigSet.getPointer().xpathQuery('config/dashboardModuleStartScreen/text()'));
this.setAttribute('dashboardModuleCalendar',canvas.myConfigSet.getPointer().xpathQuery('config/dashboardModuleCalendar/text()'));
this.setAttribute('conferenceModuleRoomList',canvas.myConfigSet.getPointer().xpathQuery('config/conferenceModuleRoomList/text()'));
this.setAttribute('conferenceRoomModule',canvas.myConfigSet.getPointer().xpathQuery('config/conferenceRoomModule/text()'));
this.setAttribute('restrictedRoomModule',canvas.myConfigSet.getPointer().xpathQuery('config/restrictedRoomModule/text()'));
this.setAttribute('interviewRoomModule',canvas.myConfigSet.getPointer().xpathQuery('config/interviewRoomModule/text()'));
this.setAttribute('userSettingsModule',canvas.myConfigSet.getPointer().xpathQuery('config/userSettingsModule/text()'));
this.setAttribute('recordModule',canvas.myConfigSet.getPointer().xpathQuery('config/recordModule/text()')); this.setAttribute('httpRootKey',canvas.myConfigSet.getPointer().xpathQuery('config/httpRootKey/text()'));
this.setAttribute('httphostlocal',canvas.myConfigSet.getPointer().xpathQuery('config/httphostlocal/text()'));
this.setAttribute('protocol',canvas.myConfigSet.getPointer().xpathQuery('config/protocol/text()'));
this.setAttribute('proxyType',canvas.myConfigSet.getPointer().xpathQuery('config/proxyType/text()')); //set user color
canvas.currentusercolor = canvas.getColorForUser(); var lc_SID = lz.Browser.getInitArg('lc_SID'); if($debug) Debug.write("lc_SID: ", lc_SID); if (lc_SID == undefined) {
new lz.errorPopup(canvas,{'error':'You are loading the wrong SWF, there is no lz_SID given'});
return;
} this.setAttribute('lc_SID', lc_SID);
this.setAttribute('vid_lc_name', this.lc_SID + "__videoLC");
this.setAttribute('rtmp_lc_name', this.lc_SID + "__rtmpLC");
this.setAttribute('videoComp_lc_name', this.lc_SID + "__streamLC");
this.setAttribute('videoComp_lc_callback_name', this.lc_SID + "__streamLC_cback"); var videoComp_lc = new LocalConnection();
videoComp_lc.connect(this.videoComp_lc_name);
this.setAttribute('videoComp_lc', videoComp_lc); var t = this;
canvas.videoComp_lc.regExpResult = function(tId,tResult) {
t.regExpResult(tId,tResult);
}
canvas.videoComp_lc.exitRoom = function(confirm) {
if ($debug) Debug.write("confirm exitRoom:", confirm);
if (confirm) {
canvas.currentBaseConferenceRoom._screenSharingAdapter.closeAllScreenSharings();
if (canvas.appointmentNotificationPopUp != null) {
canvas.appointmentNotificationPopUp.destroy();
}
canvas.doActionmenu('quit');
}
} mainBaseText.setAttribute('text',canvas.currentappname);
var elemPrefix = "config/appdisplay/displayelement";
var cfgDp = canvas.myConfigSet.getPointer();
mainBaseText.setAttribute('x', cfgDp.xpathQuery(elemPrefix + "[@name='name']/@x"));
mainBaseText.setAttribute('y', cfgDp.xpathQuery(elemPrefix + "[@name='name']/@y"));
mainBaseText.setAttribute('visible', "true" == cfgDp.xpathQuery(elemPrefix + "[@name='name']/@display"));
mainBaseText.setShadow();
mainBaseTextLabel.setAttribute('text',canvas.currentappnameurl);
mainApplogo.setAttribute('src', getThemeImage('logo_image'));
mainApplogo.setAttribute('x', cfgDp.xpathQuery(elemPrefix + "[@name='logo']/@x"));
mainApplogo.setAttribute('y', cfgDp.xpathQuery(elemPrefix + "[@name='logo']/@y"));
mainApplogo.setAttribute('visible', "true" == cfgDp.xpathQuery(elemPrefix + "[@name='logo']/@display")); var cleanUrl = _url; var hasParams = _url.indexOf("?");
if (hasParams != -1) {
cleanUrl = _url.substr(0,hasParams-1);
} if ($debug) Debug.write("_url ",_url,cleanUrl);
var doubleSlash = cleanUrl.indexOf("//");
var isNotPort80 = cleanUrl.indexOf(":", doubleSlash+2);
if ($debug) Debug.write("isNotPort80: ",isNotPort80,doubleSlash);
if (isNotPort80!=-1){
//Debug.write("isNotPort80: ",doubleSlash+2, _url.indexOf(":", doubleSlash+2)-doubleSlash-2);
var server = cleanUrl.substr(doubleSlash+2, _url.indexOf(":", doubleSlash+2)-doubleSlash-2);
} else {
var server = cleanUrl.substr(doubleSlash+2, _url.indexOf("/", doubleSlash+2)-doubleSlash-2);
} if ($debug) Debug.write("this zielnr: ",this,server); this.setAttribute('rtmphost',server); if (this.rtmphostlocal.length==0){
this.setAttribute('rtmphostlocal',server);
} //Check for Invitation
var invitationHash = lz.Browser.getInitArg('invitationHash'); if ($debug) Debug.info("###################### -1 ");
if ($debug) Debug.info("invitationHash :: ",invitationHash); if (invitationHash != undefined){
canvas.isinitRoomDirect = true;
canvas.invitationHash = invitationHash;
} var secureHash = lz.Browser.getInitArg('secureHash');
if (secureHash != undefined){
canvas.secureRemoteUserLogin = true;
canvas.secureHash = secureHash;
} if ($debug) Debug.info("###################### -2 "); //sid=fe9ea55284e0b23991b1c1089b2c8f64&roomid=1
var sid = lz.Browser.getInitArg('sid');
var initroomid = lz.Browser.getInitArg('roomid');
if (sid != undefined && initroomid != undefined){
canvas.remoteUserLogin = true;
canvas.initroomid = initroomid;
canvas.remoteUserSid = sid;
} var directRoomId = lz.Browser.getInitArg('directRoomId');
if (directRoomId != undefined) {
canvas.directUserLogin = true;
canvas.directRoomId = directRoomId;
} var language = lz.Browser.getInitArg('language');
if (language != undefined) {
canvas.language_id = Number(language);
} //check for reset password
var hash = lz.Browser.getInitArg('hash');
if (hash!=undefined){
canvas.isResetUsername = true;
canvas.resetHash = hash;
} var cuserItem = lz.Browser.getInitArg('cuser');
if (cuserItem!=undefined){
canvas.cuser = cuserItem; //Lookup additional actions
var tAccept = lz.Browser.getInitArg('tAccept');
if (tAccept != undefined) {
canvas.cuserStatus = tAccept;
} else {
canvas.cuserStatus = "none";
} } var moodleRoom = lz.Browser.getInitArg('moodleRoom');
var becomemoderator = lz.Browser.getInitArg('becomemoderator'); if (becomemoderator != undefined) {
if (becomemoderator == "2"){
canvas.becomemoderator = true;
} else {
canvas.becomemoderator = false;
}
} if (moodleRoom != undefined){
canvas.isMoodleRoom = true; var moodleWwwRoot = lz.Browser.getInitArg('wwwroot');
var moodleUserId = lz.Browser.getInitArg('user_id');
var moodlePicture = lz.Browser.getInitArg('picture'); if (moodleWwwRoot != undefined) {
canvas.moodleWwwRoot = moodleWwwRoot;
}
if (moodleUserId != undefined) {
canvas.moodleUserId = Number(moodleUserId);
}
if (moodlePicture != undefined) {
canvas.moodlePicture = moodlePicture;
}
} var scopeRoomId = lz.Browser.getInitArg('scopeRoomId');
if (scopeRoomId != undefined){
hib.userScope = scopeRoomId;
} this.setBaseColors(); //Debug.write("rtmphostlocal,rtmphost: ",canvas.rtmphostlocal,canvas.rtmphost);
var src = hib.getUrl(); canvas.thishib.setAttribute('src',src);
canvas.thishib.loaderVar = new lz.autoLoader(canvas);
canvas.thishib.loaderVar._src.setAttribute('text',src);
canvas.thishib.connect();
]]>
</method>

上面的代码中,我们看到,绝大部分都是关于RTMP及用户的一些属性设置,所有设置完成之后,代码的最后阶段调用canvas.thishib.connect();对了,这就是发起连接的开始,代码执行到此处,才开始前后台的交互操作。这个thishib是一个hibRtmpConnection类,定义在base/hibernate/hibRtmpConnection.lzx文件中,下段继续解析它

5:hibRtmpConnection.lzx文件

<library>

<dataset name="myresultnavi" />

<dataset name="languagesSet" />        

<dataset name="countrySet" />
<dataset name="timeZoneSet" /> <class name="userStatus" extends="view" width="250" height="30">
<attribute name="statusText" type="string" />
<attribute name="statusColor" type="number" value="0" /> <text name="status" width="240" height="20" x="5" y="5" fontstyle="bold" fgcolor="0" text="defaulttext" fontsize="10"/> <handler name="oninit">
this.status.setAttribute("text", this.statusText);
this.status.setAttribute("fgcolor", this.statusColor);
this.setAttribute("visibility", "visible");
lz.Timer.addTimer( new LzDelegate( this, "selfDestroy" ), 3000 );
</handler> <method name="selfDestroy" args="ignore=null">
this.destroy();
</method>
</class> <class name="hibRtmpConnection" extends="rtmpConnection" debug="false"
src="$once{ this.getUrl() }" > <attribute name="counterror" type="number" value="0" /> <attribute name="loaderVar" value="null" /> <attribute name="userScope" value="hibernate" type="string" /> <!-- refreshing the session regulary -->
<attribute name="refreshDelegate" value="null" /> <!-- UserId-->
<attribute name="UserID" value="1" type="number" />
<!-- reconnect after each conferenceView -->
<attribute name="reconnectAfterRoomleft" type="boolean" value="false" />
<attribute name="reconnectedRoomInstance" value="null" /> <attribute name="reconnectionAction" value="false" type="boolean" />
<attribute name="reconnectObjRef" value="null" /> <attribute name="userobject" value="null" /> <!-- default will be loaded on startup -->
<attribute name="userlang" value="1" type="number" /> <!-- The default Language will be loaded on init -->
<attribute name="initlanguageLoaded" value="false" type="boolean" /> <!-- This domain is the orgdomain used in the video-conference -->
<attribute name="conferencedomain" value="public" type="string" /> <!-- if this connection is used for testing the app
see test-setup.lzx -->
<attribute name="testAppLoading" value="false" type="boolean" /> <!--
the real ROOM_ID
-->
<attribute name="currentroomid" value="0" type="number" /> <!-- This is the current domain the user has logged-in -->
<attribute name="currentdomain" value="domain1" type="string" />
<attribute name="currentdomainObj" value="domain1" type="string" /> <!--- the current Invitation-Object -->
<attribute name="currentInvitation" value="null" /> <!--- the current Dashboard config -->
<attribute name="dashboardConfig" value="null" /> <!-- shows what kind of conferenceView it is at the moment
wether its conferenceView or audienceView -->
<attribute name="modus" value="" type="string" /> <!-- shows what kind of room the use is public or private -->
<attribute name="roomtype" value="" type="string" /> <attribute name="showKickMessage" value="false" type="boolean"/>
<attribute name="showFullMessage" value="false" type="boolean"/> <attribute name="useRTMPT" value="false" type="boolean" /> <method name="getProtocol">
if (canvas.useSSL) {
return "rtmps";
}
if (this.useRTMPT) {
return "rtmpt";
}
return "rtmp";
</method> <method name="getPort">
if (canvas.useSSL) {
if (canvas.isSlaveHosted) {
return canvas.slaveRtmpsslport;
}
return canvas.rtmpsslport;
}
if (this.useRTMPT) {
if (canvas.isSlaveHosted) {
return canvas.slaveRtmpTunnelport;
}
return canvas.rtmpTunnelport;
}
if (canvas.isSlaveHosted) {
return canvas.slaveRtmpport;
}
return canvas.rtmpport;
</method> <method name="getHost">
if (canvas.isSlaveHosted) {
return canvas.slaveRtmphostlocal;
}
return canvas.rtmphostlocal;
</method> <method name="getWebappRootKey">
if (canvas.isSlaveHosted) {
return canvas.slaveWebAppRootKey;
}
return canvas.webAppRootKey;
</method> <!--
canvas.getUrl() can not be reused since it has different protocol and port
and potentially in cluster another host, the only thing that stays the same
no matter if hosted on slave or on master, is the scope, so
userScope always stays the same
-->
<method name="getUrl">
return this.getProtocol() + '://' + this.getHost() + ':' + this.getPort()
+ '/' + this.getWebappRootKey() + '/' + this.userScope;
</method> <!--
The onconnect Method is triggered several times:
- When you enter a room the NetConnection will close and reconnect to the Scope of the Room
- When you leave the room again it will be re-connected to the default scope again
-->
<handler name="onconnect">
if($debug) Debug.write("hibRtmpConnection/onconnect");
if (this.reconnectionAction){
this.overwritePublicSID.doCall();
this.setUsernameReconnect.doCall();
} else if (this.reconnectAfterRoomleft) {
//Return to content after reconnect
canvas.thishib.reconnectedRoomInstance.destroy();
this.overwritePublicSID.doCall();
this.setUsernameReconnect.doCall();
} else {
this.refreshDelegate = new LzDelegate( this, "refreshSessionMeth" );
//lz.Timer.addTimer( this.refreshDelegate, 60000 );
lz.Timer.addTimer( this.refreshDelegate, canvas.refreshSession );
canvas.thishib.loaderVar.setProgress(); //Load Session Data
this.getsessiondata.callRPC();
}
</handler> <handler name="ondisconnect">
canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "disconnect", [canvas.thishib.src]);
</handler> <method name="reconnectComplete">
if (this.reconnectionAction){
this.reconnectionAction = false;
this.reconnectObjRef.reconnectSuccess();
} else if (this.reconnectAfterRoomleft) {
loadContentByTempActionForNavi();
}
canvas.currentContentView.sendInit.sendEvent(this);
</method> <handler name="onerror" >
<![CDATA[
if ($debug) Debug.write("error ",this.status,this.src,this.lastCalled,this.showKickMessage);
if (this.showFullMessage) {
new lz.labelerrorPopup(canvas,{errorlabelid:99});
this.showFullMessage = false;
return;
} else if (this.showKickMessage) {
new lz.labelerrorPopup(canvas,{errorlabelid:606});
canvas._loadingAll.hideContentOnly();
return;
} else if (this.reconnectionAction){
this.connect();
} else if (this.reconnectAfterRoomleft) {
if ($debug) Debug.write("this.reconnectAfterRoomleft: ",this.reconnectAfterRoomleft);
this.counterror=0;
this.connect();
} else {
this.useRTMPT = true
var src = getUrl();
this.setAttribute('src',src);
//Debug.write("new src ",this.src);
if (this.counterror<3){
this.counterror++;
//Debug.write("try ",this.counterror,"one");
canvas.thishib.loaderVar.error.setAttribute('text',"try "+this.counterror);
this.connect();
} else {
//Debug.write("connection failed");
canvas.thishib.loaderVar.error.setAttribute('text',this.status);
canvas.setAttribute('loadingmessage','connection failed');
new lz.labelerrorPopup(canvas,{errorlabelid:556});
}
canvas.thishib.loaderVar._src.setAttribute('text',src);
}
]]>
</handler> <method name="refreshSessionMeth" args="calleeObj">
this.refreshSession.doCall();
</method> <!-- This Function is just for refreshing the Session -->
<netRemoteCallHib name="refreshSession" funcname="userservice.refreshSession" showLoading="false" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<handler name="ondata" args="value">
//if ($debug) Debug.write("hibRtmpConnection/refreshSession [",value,"]");
lz.Timer.addTimer( parent.refreshDelegate, canvas.refreshSession );
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getsessiondata" funcname="xmlcrm.getsessiondata" >
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("hibRtmpConnection/getsessiondata [",value,"]");
canvas.sessionObject = value;
canvas.sessionId = value.session_id;
canvas.sendViaLocalConnection(canvas.vid_lc_name, "setSessionId", [canvas.sessionId]);
canvas.thishib.loaderVar.setProgress();
parent.getPublicSID.doCall();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getPublicSID" funcname="getPublicSID" >
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("hibRtmpConnection/getPublicSID [",value,"]");
canvas.publicSID = value;
canvas.thishib.loaderVar.setProgress();
parent.getLanguages.doCall();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="overwritePublicSID" funcname="overwritePublicSID" >
<netparam><method name="getValue"> return canvas.publicSID;</method></netparam>
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("overwritePublicSID: ",value);
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getLanguages" funcname="languageservice.getLanguages"
dataobject="languagesSet" >
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("getLanguages: ",value);
canvas.thishib.loaderVar.setProgress();
parent.getDefaultLanguage.doCall();
</handler>
</netRemoteCallHib> <method name="setDefaultUserLanguage">
<![CDATA[
if (userlang == -1 && canvas.language_id != 0) {
userlang = canvas.language_id;
} else if (userlang == -1) {
var lang_id = canvas.default_lang_id; var browserLang = flash.external.ExternalInterface.call("function(){return window.navigator.systemLanguage || window.navigator.userLanguage || window.navigator.language;}");
if (browserLang == null) {
browserLang = "" + System.capabilities.language;
}
if (browserLang != null && browserLang.length > 1) {
var lngCode = browserLang.substring(0, 2); //openlaszlo XPath is able to search nothing, so will iterate
var xpath = "languagesSet:/item";
var list = languagesSet.getPointer().xpathQuery(xpath); var partMatch = -1, fullMatch = -1;
for (var i = 1; list != null && i <= list.length; ++i) {
xpath = "languagesSet:/item[" + i + "]/code/text()";
var val = languagesSet.getPointer().xpathQuery(xpath);
if (val != null && val.length > 1) {
var partCode = ("" + val).substring(0, 2); if (browserLang == val) {
fullMatch = i;
} else if (lngCode == val) {
partMatch = i;
} else if (partCode == lngCode) {
partMatch = i;
}
}
}
if (partMatch != -1 || fullMatch != -1) {
i = (fullMatch != -1) ? fullMatch : partMatch;
xpath = "languagesSet:/item[" + i + "]/language_id/text()";
lang_id = languagesSet.getPointer().xpathQuery(xpath);
}
} if (canvas.language_id == 0) {
userlang = lang_id;
} else {
userlang = canvas.language_id;
}
}
]]>
</method> <netRemoteCallHib name="logoutUser" funcname="xmlcrm.logoutUser"
remotecontext="$once{ canvas.thishib }" activeErrorHandler="true"
isCallBackHandler="true">
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<handler name="sendCallBack">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendCallBack logoutUser: ");
parent.initlanguageLoaded = false; var g = canvas.getUserData();
g["username"] = '';
g["userpass"] = '';
g["userquality"] = null;
g["usercolor"] = null;
g["userlang"] = null;
g["saveuserdata"]=false;
g["storedSession"] = "";
canvas.setUserData(g);
canvas.setColorStyle(canvas.baseColorScheme); parent.userlang = -1;
parent.setDefaultUserLanguage(); parent.getLanguageByIdAndMax.start = 0;
parent.getLanguageByIdAndMax.doCall();
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setUsernameReconnect" funcname="setUsernameReconnect" remotecontext="$once{ canvas.thishib }" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return canvas.user_id;</method></netparam>
<netparam><method name="getValue">return canvas.currentuser;</method></netparam>
<netparam><method name="getValue">return canvas.firstName;</method></netparam>
<netparam><method name="getValue">return canvas.lastName;</method></netparam>
<netparam><method name="getValue">return canvas.picture_uri;</method></netparam>
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("setUsernameReconnect: ",canvas.user_id,value);
parent.reconnectComplete();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getDefaultLanguage" funcname="languageservice.getDefaultLanguage" >
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
canvas.default_lang_id = value;
if ($debug) Debug.write("getDefaultLanguage: ",value,"; canvas.lang = ", canvas.language_id);
if (canvas.language_id==0){
parent.userlang = canvas.default_lang_id;
} else {
parent.userlang = canvas.language_id;
}
parent.getLanguageByIdAndMax.doCall();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getInvitationByHash" activeErrorHandler="true"
funcname="invitationservice.getInvitationByHash" >
<netparam name="invitationHash"><method name="getValue">return canvas.invitationHash;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
canvas.thishib.loaderVar.close();
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("getInvitationByHash: ",value);
if (value<0){ } else { if (value.allowEntry) {
parent.currentInvitation = value;
new lz.invitationQuickLoader(canvas.main_content._content.inner);
} else { var addInfo = "" + value.validFrom +"<br/> - <br/>"+ value.validTo; var dlg = new lz.rpcErrorDialog(canvas,{errorid:-50,addInfo:addInfo}); } }
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="secureLoginByRemote" activeErrorHandler="true"
funcname="xmlcrm.secureLoginByRemote" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam name="remoteSessionId"><method name="getValue">return canvas.secureHash;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
canvas.thishib.loaderVar.close();
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("secureLoginByRemote: ",value);
if (value<0){ } else { if (value == null) {
new lz.errorPopup(canvas,{error:'Invalid Hash'});
return;
} canvas.showNickNameDialog = value.showNickNameDialog; if ($debug) Debug.write("markSessionAsLogedIn9 ",canvas.showNickNameDialog); canvas.initroomid = value.room_id;
canvas.becomemoderator = value.becomemoderator;
canvas.showAudioVideoTest = value.showAudioVideoTest;
canvas.landingZone = value.landingZone; canvas.roomRecordingId = value.roomRecordingId; if (canvas.roomRecordingId == null) {
canvas.roomRecordingId = 0;
} if (canvas.showNickNameDialog) {
new lz.chooseNickName(canvas);
} else {
parent.getCurrentRoomClient.doCall();
}
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="loginUserByRemote" activeErrorHandler="true"
funcname="xmlcrm.loginUserByRemote" >
<netparam name="remoteSessionId"><method name="getValue">return canvas.remoteUserSid;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[ //The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("loginUserByRemote -1-: ",value);
if ($debug) Debug.write("loginUserByRemote -2-: ",canvas.remoteUserSid);
if (value<0){ } else {
parent.getCurrentRoomClient.doCall();
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getCurrentRoomClient" funcname="xmlcrm.getCurrentRoomClient" >
<netparam name="sessionId"><method name="getValue">return canvas.sessionId;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("getCurrentRoomClient: ",value);
if (value!=null){ canvas.setAttribute('currentuser',value.firstname+" "+value.lastname); //Somehow this leads to a bug in the implementation of the secure User Login
canvas.setAttribute('user_id',value.user_id); canvas.setAttribute('allowRecording',value.allowRecording); canvas.setAttribute('firstName',value.firstname);
canvas.setAttribute('lastName',value.lastname); hib.userobject.firstname = value.firstname;
hib.userobject.lastname = value.lastname; canvas.setAttribute('mail','');
canvas.setAttribute('lastLogin','');
canvas.setAttribute('official_code','');
canvas.setAttribute('picture_uri',value.picture_uri);
canvas.setAttribute('language',''); if ($debug) Debug.write("canvas.landingZone :: ",canvas.landingZone); if (canvas.landingZone == "dashboard") {
canvas.destroyExitButton = false;
parent.getRoomTypes.doCall();
} else if (canvas.roomRecordingId > 0) {
canvas.thishib.loaderVar.close();
//parent.getRoomById.doCall();
var obj = new Array();
obj["action"] = "recordModule";
loadContent(obj,null,null);
} else {
canvas.thishib.loaderVar.close();
parent.getRoomById.doCall();
}
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getRoomById" funcname="conferenceservice.getRoomById" >
<netparam name="sessionId"><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam name="roomId"><method name="getValue">return canvas.initroomid;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("getRoomById: ",value);
if (value!=null){
if (canvas.directUserLogin) {
canvas.directRoomObj = value;
canvas.thishib.loaderVar.close(); } else {
canvas.setRoomValues(value.roomtype.roomtypes_id,value.rooms_id,value);
canvas.sendViaLocalConnection(canvas.rtmp_lc_name,"setRoomValues",[value.roomtype.roomtypes_id,value.rooms_id,value]);
}
} else {
new lz.labelerrorPopup(canvas,{errorlabelid:1286});
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getLanguageByIdAndMax" funcname="languageservice.getLanguageByIdAndMax" >
<attribute name="start" value="0" type="number" />
<attribute name="step" value="100" type="number" />
<attribute name="max" value="1500" type="number" />
<netparam><method name="getValue">return parent.parent.userlang;</method></netparam>
<netparam><method name="getValue">return parent.start;</method></netparam>
<netparam><method name="getValue">return parent.step;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
if($debug) Debug.write("hibRtmpConnection/userlang:[",parent.userlang,"]");
//if($debug) Debug.write("hibRtmpConnection/getLanguageByIdAndMax:[",value,"]");
setLabelObjectByHundred(this.start,value);
//The onResult-Handler will be called be the rtmpconnection
if (this.start <= max){
this.start += this.step;
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.setProgress();
}
this.doCall();
} else {
if($debug) Debug.write("loading lang complete");
if (parent.initlanguageLoaded){
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.setProgress();
}
if($debug) Debug.write("getRoomTypes");
parent.getRoomTypes.doCall();
} else {
if($debug) Debug.write("getStates");
parent.initlanguageLoaded=true;
parent.getStates.doCall();
}
}
]]>
</handler>
</netRemoteCallHib> <!--
There must be a temporary SIP-Account created at this moment
-->
<netRemoteCallHib name="markSessionAsLogedIn" funcname="xmlcrm.markSessionAsLogedIn" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection if (value == null) {
new lz.errorPopup(canvas,{error:"Missing User Object, set the Configuration value of the key 'default.rpc.userid' to a valid user Id that has at least one Organization assigned in the OpenMeetings Administrion Configuration Panel "});
} if ($debug) Debug.write("markSessionAsLogedIn1 ",value); hib.userobject = value; canvas.user_id = hib.userobject.user_id; if (value.organisation_users.length > 0){
hib.currentdomain = value.organisation_users[0].organisation.name;
hib.currentdomainObj = value.organisation_users[0].organisation;
} else {
new lz.errorPopup(canvas,{error:"Missing Organization in User Object, set the Configuration value of the key 'default.rpc.userid' to a valid user Id that has at least one Organization assigned in the OpenMeetings Administrion Configuration Panel "});
} if ($debug) Debug.write("markSessionAsLogedIn2 ",canvas.sessionId);
if ($debug) Debug.write("markSessionAsLogedIn3 ",canvas.initroomid);
if ($debug) Debug.write("markSessionAsLogedIn4 ",canvas.isinitRoomDirect);
if ($debug) Debug.write("markSessionAsLogedIn5 ",canvas.remoteUserLogin);
if ($debug) Debug.write("markSessionAsLogedIn6 ",canvas.directUserLogin);
if ($debug) Debug.write("markSessionAsLogedIn7 ",canvas.directRoomId);
if ($debug) Debug.write("markSessionAsLogedIn8 ",canvas.secureRemoteUserLogin); if (canvas.secureRemoteUserLogin) { if ($debug) Debug.write("markSessionAsLogedIn == CALL ",canvas.secureHash); parent.secureLoginByRemote.doCall(); } else if (canvas.isinitRoomDirect){
parent.getInvitationByHash.doCall();
} else if (canvas.remoteUserLogin) {
parent.loginUserByRemote.doCall();
} else if (canvas.directUserLogin) {
//show Nick Name or Password Protection Dialog
canvas.initroomid = Number(canvas.directRoomId);
parent.getRoomById.doCall();
}
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getStates" funcname="xmlcrm.getStates" dataobject="countrySet">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("getStates: ",value);
canvas.statesInitValues = value;
canvas.thishib.loaderVar.setProgress();
parent.getTimeZones.doCall();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getTimeZones" funcname="xmlcrm.getTimeZones" dataobject="timeZoneSet">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("getTimeZones: ",value);
canvas.thishib.loaderVar.setProgress();
parent.getGeneralOptions.doCall();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getGeneralOptions" funcname="xmlcrm.getGeneralOptions" >
<handler name="ondata" args="value">
<![CDATA[
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.setProgress();
}
if ($debug) Debug.write("getGeneralOptions: ", value.length, value);
if (value != null) {
if (value.length > 0) {
//if ($debug) Debug.write("Give exclusive audio keycode is: ", value[0].conf_value);
canvas.setAttribute('GIVE_EXCLUSIVE_AUDIO_KEY', value[0].conf_value);
}
if (value.length > 1) {
if ($debug) Debug.write("red5sip.enable is: ", value[1].conf_value);
canvas.setAttribute('RED5_SIP_ENABLE', value[1].conf_value);
}
if (value.length > 2) {
if ($debug) Debug.write("max_upload_size is: ", value[2].conf_value);
canvas.setAttribute('MAX_UPLOAD_SIZE', value[2].conf_value);
}
} else {
if ($debug) Debug.warn("xmlcrm.getGeneralOptions empty!");
}
parent.getUserSalutations.doCall();
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setCurrentUserOrganization" funcname="xmlcrm.setCurrentUserOrganization">
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return hib.currentdomainObj.organisation_id;</method></netparam>
<handler name="ondata" args="value">
//Sessionmanagement.getInstance()
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("setCurrentUserOrganization: ",value);
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getUserSalutations" funcname="userservice.getUserSalutations" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return parent.parent.userlang; </method></netparam>
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("getUserSalutations ",value);
canvas.salutationsInitValues = value;
//check for password reset
if (canvas.isResetUsername){
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.close();
}
new lz.resetPassword(canvas.main_content._content.inner);
} else {
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.close();
}
//do not show loggin-PopUp for the test-Application
if (parent.testAppLoading){
canvas.loadNextStepTestApp();
} else { if (canvas.isinitRoomDirect || canvas.remoteUserLogin
|| canvas.directUserLogin || canvas.secureRemoteUserLogin){
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.setProgress();
}
if($debug) Debug.write("isinitRoomDirect or remoteUserLogin is true");
parent.markSessionAsLogedIn.doCall();
} else {
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.setProgress();
} //Check if user is auto-logged in by session
var g = canvas.getUserData();
if($debug) Debug.write("checkLoginData/g: ",g);
var storedSession = g["storedSession"];
if($debug) Debug.write("checkLoginData/save: ",storedSession); parent.loginByRemember.currentHashSession = storedSession;
parent.loginByRemember.doCall(); } }
}
</handler>
</netRemoteCallHib> <netRemoteCallHib name="loginByRemember" funcname="xmlcrm.loginByRemember" >
<attribute name="currentHashSession" value="" type="string"/>
<attribute name="sipLoader" value="null"/>
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return parent.currentHashSession;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
if ($debug) Debug.write("loginByRemember",value);
if (value != null){ canvas.setAttribute('user_id',value.user_id);
canvas.setAttribute('firstName',value.firstname);
canvas.setAttribute('lastName',value.lastname);
canvas.setAttribute('mail','');
canvas.setAttribute('lastLogin','');
canvas.setAttribute('official_code','');
canvas.setAttribute('picture_uri','');
canvas.setAttribute('language','');
canvas.setAttribute('currentuser',value.login);
if (value.omTimeZone != null) {
canvas.setAttribute('jNameTimeZone',value.omTimeZone.jname);
canvas.timeZoneId = value.omTimeZone.omtimezoneId;
} if (value.forceTimeZoneCheck) {
new lz.labelerrorPopup(canvas,{errorlabelid:1150});
} if (value.level_id >= 2) {
canvas.becomemoderator = true;
} else {
canvas.becomemoderator = false;
} if (value.sessionData == null) {
if ($debug) Debug.write("No Language Found to assign");
new lz.checkLoginData(canvas.main_content._content.inner);
return;
} if ($debug) Debug.write("value.sessionData: ", value.sessionData);
hib.userlang = isNaN(value.sessionData.language_id) ? 1 : Number(value.sessionData.language_id);
canvas.setAttribute('userlang', hib.userlang);
canvas.setAttribute('language_id', hib.userlang);
hib.userobject = value; var found = false; for (var i=0;i<value.organisation_users.length;i++) {
if (value.organisation_users[i].organisation.organisation_id == value.sessionData.organization_id) {
found = true;
hib.currentdomain = value.organisation_users[i].organisation.name;
hib.currentdomainObj = value.organisation_users[i].organisation;
break;
}
} if (found) {
hib.getLanguageByIdAndMax.start = 0; hib.getLanguageByIdAndMax.doCall();
canvas.focusOnItem = null;
} else {
if ($debug) Debug.write("No Organization Found to assign");
new lz.checkLoginData(canvas.main_content._content.inner);
} } else {
if ($debug) Debug.write("No RPC-Sesion Found to assign");
new lz.checkLoginData(canvas.main_content._content.inner);
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getRoomTypes" funcname="conferenceservice.getRoomTypes" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("getRoomTypes ",value);
canvas.roomTypesInitValues = value;
canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "getRoomTypes", [value]);
canvas.thishib.loaderVar.setProgress();
parent.setUsernameAndSession.doCall();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getNavi" funcname="xmlcrm.getNavi" dataobject="myresultnavi">
<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
<netparam><method name="getValue"> return parent.parent.userlang; </method></netparam>
<netparam><method name="getValue"> return hib.currentdomainObj.organisation_id;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("getNavi: ",value);
canvas.thishib.loaderVar.close();
//The Main-Navi will automatically init the Dashboard
new lz.mainNavi(canvas._mainbgcontentNavi,{name:'navi',naviObject:value});
new lz.helpAndBugs(canvas._mainbgcontentNavi,{name:'help'}); if (canvas.landingZone == "dashboard") { canvas.destroyExitButton = false; var g = canvas.getUserData(); if ($debug) Debug.write("doShowUpdateProfileMessage",g["doShowUpdateProfileMessage"]); if (g["doShowUpdateProfileMessage"]) {
//Do not show message
} else {
new lz.rememberMessage(canvas.main_content._content.inner,{labelid:1298,labeliderror:1297,refObj:this});
} }
]]>
</handler> <method name="sendConfirmation" args="askagain" > //Debug.write("clear yesno,askagain: ",yesno,askagain);
//can only be true in this case var g = canvas.getUserData();
g["doShowUpdateProfileMessage"]=askagain;
canvas.setUserData(g);
</method>
</netRemoteCallHib> <netRemoteCallHib name="setId" funcname="setId">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("################ setId: ",value);
canvas.setAttribute('streamid',value);
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setUsernameAndSession" funcname="setUsernameAndSession" remotecontext="$once{ canvas.thishib }" >
<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
<netparam><method name="getValue">return canvas.user_id;</method></netparam>
<netparam><method name="getValue">return canvas.currentuser;</method></netparam>
<netparam><method name="getValue">return canvas.firstName;</method></netparam>
<netparam><method name="getValue">return canvas.lastName;</method></netparam>
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("setUsernameAndSession: ",canvas.user_id,value);
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.setProgress();
}
parent.getDashboardConfiguration.doCall();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getDashboardConfiguration" funcname="xmlcrm.getDashboardConfiguration" remotecontext="$once{ canvas.thishib }" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
if ($debug) Debug.write("getDashboardConfiguration: ", value);
if (canvas.thishib.loaderVar != null) {
canvas.thishib.loaderVar.setProgress();
}
parent.dashboardConfig = value;
parent.getNavi.doCall();
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="testMethod" funcname="testMethod">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("testMethod ",value);
</handler>
</netRemoteCallHib> <!--- Notification of new User -->
<netRemoteCallHib name="addNewUser" funcname="addNewUser">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("addNewUser: ",value);
if(value.sipTransport) {
canvas._videocontainer.addItem(value.connectedSince,value.isMod,value.streamid,value.room_id,'',value.formatedDate,value.userpos,value.usercolor,value);
} else {
canvas._videocontainer.addClientItem(value.connectedSince,value.isMod,value.streamid,value.room_id,'',value.formatedDate,value.userpos,value.usercolor,value);
}
canvas.setAttribute('numberofpartners',canvas.numberofpartners+1);
</handler>
</netRemoteCallHib> <netRemoteCallHib name="getCurrentModeratorList" funcname="getCurrentModeratorList">
<handler name="ondata" args="value">
<![CDATA[
if ($debug) Debug.write("############ getCurrentModeratorList: ",value); canvas.analyzeModerationList(value); canvas.currentModeratorList = value;
//Update Moderation Flag
canvas.updateModerationFlag(); var messageAlreadyThrown = false; //if ($debug) Debug.write("throw event to drawarea: ",canvas.moderatorStreamID,canvas.ismoderator); if (this.parent.modus == "conference"){
if ($debug) Debug.write("############## showDevicePopUp");
canvas._videocontainer._videoviewcontent.showDevicePopUp(false);
}
canvas._drawarea.onopenWhiteBoard.sendEvent(); if ($debug) Debug.write("roomType_id ",canvas.currentRoomObject);
if ($debug) Debug.write("roomType_id ",canvas.currentRoomObject.roomtype.roomtypes_id); if (canvas.currentRoomObject.roomtype.roomtypes_id!=3) {
//We do not show this warning when the roomtype is 3 (restricted)
if (canvas.currentRoomObj.isModeratedRoom) {
if (value.length == 0 && !messageAlreadyThrown){
new lz.labelerrorPopup(canvas,{errorlabelid:641});
}
} else {
if (value.length == 0 && !messageAlreadyThrown){
new lz.errorModeratorPopup(canvas,{error:canvas.getLabelName(498)});
}
}
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="newStream" funcname="newStream">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("newStream: ",value);
if (value.isScreenClient) {
return;
}
canvas._videocontainer.startStream(value.publicSID,value.broadCastID,value.firstname,value.lastname,value.interviewPodId,value.VWidth,value.VHeight);
</handler>
</netRemoteCallHib> <netRemoteCallHib name="closeStream" funcname="closeStream">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("**** closeStream: ",value);
if (value.isScreenClient) {
if ($debug) Debug.write(" ondata closeStream: ",value.streamPublishName);
canvas.currentBaseConferenceRoom._screenSharingAdapter.closeScreenSharing(value);
} else {
//free the VideoContainer
//canvas._videocontainer.closeStreamClient(value.publicSID);
canvas.sendViaLocalConnection(canvas.vid_lc_name, "closeStreamClient", [value.publicSID]);
canvas.setAttribute('numberofpartners',canvas.numberofpartners-1);
}
//TODO:check first current tab
</handler>
</netRemoteCallHib> <!---
Event is invoked if a red5 stream sharing is closed
-->
<netRemoteCallHib name="stopScreenSharingMessage" funcname="stopScreenSharingMessage">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("**** closeStream: ",value);
if ($debug) Debug.write(" onResult stopScreenSharingMessage : ",value.streamPublishName);
canvas.currentBaseConferenceRoom._screenSharingAdapter.closeScreenSharing(value);
</handler>
</netRemoteCallHib> <netRemoteCallHib name="clientregisterRoom" funcname="clientregisterRoom">
<handler name="ondata" args="value">
if ($debug) Debug.write("**** clientregisterRoom::ondata ", value);
</handler>
</netRemoteCallHib> <method name="roomDisconnectUser" args="value,id">
if (canvas._videocontainer!=null){
canvas._videocontainer.disconnectclient(id);
if (canvas.currentModApply!=null) canvas.currentModApply.rejectUser(value);
if (value.isRecording) {
canvas._mymod.recordingUser = null;
}
if (value.streamPublishStarted) {
canvas._mymod.publishingObj = null;
}
canvas._mymod.setMessage();
}
</method> <netRemoteCallHib name="roomDisconnect" funcname="roomDisconnect">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("roomDisconnect: ",value);
if (value.isScreenClient) {
return;
}
if ($debug) Debug.write("canvas.currentBaseConferenceRoom._chatPanelStrict: ", canvas.currentBaseConferenceRoom._chatPanelStrict);
if (canvas.currentBaseConferenceRoom != null && canvas.currentBaseConferenceRoom._chatPanelStrict != null) {
canvas.currentBaseConferenceRoom._chatPanelStrict.closeprivatechat(["close", value.publicSID]);
}
if (canvas.currentActivityList != null) {
canvas.currentActivityList.addMessageRequest(value, canvas.getLabelName(1367), new Date().getTime());
}
if (canvas._overallchatcontent!=null){
var parentObj = canvas._overallchatcontent.parent.parent.parent._chatparticipants;
parentObj.removeItemById(value.user_id);
}
parent.roomDisconnectUser(value, value.publicSID);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="stopRecordingMessage" funcname="stopRecordingMessage">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
canvas._mymod.recordingUser = null;
canvas._mymod.setMessage();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="stopPublishingMessage" funcname="stopPublishingMessage">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
canvas._mymod.publishingObj = null;
canvas._mymod.setMessage();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setSyncFlag" funcname="setSyncFlag" >
<handler name="ondata" args="value">
if ($debug) Debug.write("setSyncFlag: ",value);
</handler>
</netRemoteCallHib> <netRemoteCallHib name="logicalRoomLeaveDis" funcname="logicalRoomLeaveDis" >
<handler name="ondata" args="value">
if ($debug) Debug.write("logicalRoomLeaveDis: ",value);
parent.roomDisconnectUser(value, value.broadCastID);
</handler>
</netRemoteCallHib> <method name="setUserStatus" args="ctx,user,o">
<![CDATA[
if (!o || !user) return;
//The onResult-Handler will be called be the rtmpconnection
if ($debug) {
Debug.write("setUserStatus: ", user);
Debug.write("setUserStatus: ", o.param);
}
var aObj = o.param[3];
var usPoint = null;
if ($debug) Debug.write("drawObj: ", aObj[0]);
switch(aObj[0]) {
case 'line':
case 'uline':
usPoint = {x: aObj[aObj.length - 5] + aObj[6], y: aObj[aObj.length - 4] + aObj[7]};
break;
case 'letter':
case 'rectangle':
case 'ellipse':
case 'clipart':
usPoint = {x: aObj[aObj.length - 3] + aObj[aObj.length - 5], y: aObj[aObj.length - 2] + aObj[aObj.length - 4]};
break;
case 'paint':
var points = aObj[1];
//points are empty on 'paint' move
usPoint = {
x: aObj[aObj.length - 5] + (points.length ? points[points.length - 1][3] : aObj[aObj.length - 3])
, y: aObj[aObj.length - 4] + (points.length ? points[points.length - 1][4] : aObj[aObj.length - 2])};
break;
case 'drawarrow':
usPoint = {x: aObj[aObj.length - 5] + aObj[9], y: aObj[aObj.length - 4] + aObj[10]};
break;
case 'clipart':
break;
}
if (usPoint) {
var us = new lz.userStatus(ctx, {
width:100
, x: usPoint.x
, y: usPoint.y - 25 //little above
, queueable: false
, statusText: user.firstname + " " + user.lastname
});
if ($debug) Debug.write("us: ", us, "; usPoint: ", usPoint);
}
]]>
</method> <netRemoteCallHib name="sendVarsToWhiteboard" funcname="sendVarsToWhiteboard">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendVarsToWhiteboard : ",value);
parent.setUserStatus(canvas._drawarea, value[0], value[1]);
canvas._drawarea.sendWatchObject(canvas._drawarea,value[1][2],value[1][3],false);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendVarsToWhiteboardById" funcname="sendVarsToWhiteboardById">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendVarsToWhiteboardById : ",value);
parent.setUserStatus(canvas._drawarea, value[0], value[1]);
canvas._drawarea.parent.parent.parent.sendWatchObjectByWhiteboard(value[1]);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="loadWmlToWhiteboardById" funcname="loadWmlToWhiteboardById">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendVarsToWhiteboardById : ",value);
canvas._drawarea.parent.parent.parent.loadWmlToWhiteboardById(value);
]]>
</handler>
</netRemoteCallHib> <!--
Adds this User to the List of current Moderators
-->
<netRemoteCallHib name="addModerator" funcname="addModerator">
<attribute name="publicSIDOfNewModerator" value="0" type="string" />
<netparam name="vars"><method name="getValue">return parent.publicSIDOfNewModerator;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write(" addModerator : ",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="removeModerator" funcname="removeModerator">
<attribute name="publicSIDOfNewModerator" value="0" type="string" />
<netparam name="vars"><method name="getValue">return parent.publicSIDOfNewModerator;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//Debug.write(" onResult setModerator : ",value);
]]>
</handler>
</netRemoteCallHib> <!--
public synchronized Long setBroadCastingFlag(String publicSID, boolean value)
-->
<netRemoteCallHib name="setBroadCastingFlag" funcname="setBroadCastingFlag">
<attribute name="publicSIDOfNewModerator" value="0" type="string" />
<attribute name="isAllowedToBroadCastAV" value="false" type="boolean" />
<attribute name="avsettings" value="av" type="string" />
<attribute name="interviewPodId" value="0" type="number" />
<netparam><method name="getValue">return parent.publicSIDOfNewModerator;</method></netparam>
<netparam><method name="getValue">return parent.isAllowedToBroadCastAV;</method></netparam>
<netparam><method name="getValue">return parent.interviewPodId;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//Debug.write(" onResult setModerator : ",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setNewBroadCastingFlag" funcname="setNewBroadCastingFlag">
<netparam><method name="getValue">return null;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//if ($debug) Debug.write(" onResult setNewBroadCastingFlag : ",value);
if (canvas.publicSID == value.publicSID) {
if ($debug) Debug.write("Its about You ",value);
if (value.isBroadcasting) { if (canvas.thishib.modus == "interview") {
canvas._drawarea.newInterviewStarting(value);
} else {
canvas._videocontainer._videoviewcontent.showDevicePopUp(false);
} canvas.setAttribute("isBroadCasting",true);
} else {
canvas.setAttribute("isBroadCasting",false);
}
}
canvas.setAttribute("lastBroadCastingUser",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="giveExclusiveAudio" funcname="giveExclusiveAudio">
<attribute name="publicSID" value="0" type="string" />
<netparam><method name="getValue">return parent.publicSID;</method></netparam>
<method name="setExclusiveAudio" args="tPublicSID">
this.publicSID = tPublicSID;
this.doCall();
</method>
</netRemoteCallHib> <netRemoteCallHib name="receiveExclusiveAudioFlag" funcname="receiveExclusiveAudioFlag">
<netparam><method name="getValue">return null;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
canvas._videocontainer.receiveExclusiveAudioFlag(value.publicSID)
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="switchMicMuted" funcname="switchMicMuted">
<attribute name="publicSID" value="" type="string" />
<attribute name="mute" value="false" type="boolean" />
<event name="onMute" />
<method name="setMute" args="tPublicSID,tMute">
this.publicSID = tPublicSID;
this.mute = tMute;
var obj = new Array();
obj["mute"] = tMute;
obj["publicSID"] = tPublicSID;
this.onMute.sendEvent(obj);
this.doCall();
</method>
<netparam><method name="getValue">return parent.publicSID;</method></netparam>
<netparam><method name="getValue">return parent.mute;</method></netparam>
</netRemoteCallHib> <netRemoteCallHib name="newRed5ScreenCursor" funcname="newRed5ScreenCursor">
<netparam><method name="getValue">return null;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//if ($debug) Debug.write(" onResult newRed5ScreenCursor : ",value);
canvas.currentBaseConferenceRoom._screenSharingAdapter.updateCursorScreenSharing(value);
]]>
</handler>
</netRemoteCallHib> <!--
Red5 Screen Sharing
-->
<netRemoteCallHib name="newScreenSharing" funcname="newScreenSharing">
<netparam><method name="getValue">return null;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[ //The onResult-Handler will be called be the rtmpconnection
//if ($debug) Debug.write(" onResult newScreenSharing 1 : ",value);
//if ($debug) Debug.write(" onResult newScreenSharing 2 : ",value.streamid);
//if ($debug) Debug.write(" onResult newScreenSharing 3 : ",canvas.streamid);
if ($debug) Debug.write(" onResult newScreenSharing 4 : ",value.streamPublishName);
if ($debug) Debug.write(" onResult newcreenSharing 5 : ",canvas.publicSID); canvas.currentBaseConferenceRoom._screenSharingAdapter.newScreenSharing(value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="checkScreenSharing" funcname="checkScreenSharing">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write(" onResult checkScreenSharing : ",value);
if (value != null) {
canvas.currentBaseConferenceRoom._screenSharingAdapter.newScreenSharings(value);
} else {
if ($debug) Debug.warn("Self Screen Sharing");
}
]]>
</handler>
</netRemoteCallHib> <!--
public synchronized Long applyForModeration(String publicSID)
-->
<netRemoteCallHib name="applyForModeration" funcname="applyForModeration"
remotecontext="$once{ canvas.thishib }">
<netparam><method name="getValue">return canvas.publicSID;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("applyForModeration : ",value);
if (value == 1) {
//Do add direct
parent.addModerator.publicSIDOfNewModerator = canvas.publicSID;
parent.addModerator.doCall();
} else if (value == 2) {
//Ask the Moderator
var tDate = new Date();
parent.sendMessageWithClient.sendMessage("applyForModeration",tDate.getTime());
} else if (value == 3) {
new lz.labelerrorPopup(canvas,{errorlabelid:696});
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setCanDraw" funcname="whiteboardservice.setCanDraw"
remotecontext="$once{ canvas.thishib }">
<attribute name="publicSID" value="" type="string" />
<attribute name="canDraw" value="true" type="boolean" />
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return parent.publicSID;</method></netparam>
<netparam><method name="getValue">return parent.canDraw;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("setCanDraw : ",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setCanShare" funcname="whiteboardservice.setCanShare"
remotecontext="$once{ canvas.thishib }">
<attribute name="publicSID" value="" type="string" />
<attribute name="canShare" value="true" type="boolean" />
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return parent.publicSID;</method></netparam>
<netparam><method name="getValue">return parent.canShare;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("setCanShare : ",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setCanRemote" funcname="whiteboardservice.setCanRemote"
remotecontext="$once{ canvas.thishib }">
<attribute name="publicSID" value="" type="string" />
<attribute name="canRemote" value="true" type="boolean" />
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return parent.publicSID;</method></netparam>
<netparam><method name="getValue">return parent.canRemote;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("setCanRemote : ",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setNewModeratorByList" funcname="setNewModeratorByList">
<handler name="ondata" args="value">
<![CDATA[
if ($debug) Debug.write("setNewModeratorByList ",value); canvas.analyzeModerationList(value); //The onResult-Handler will be called be the rtmpconnection
canvas.currentModeratorList = value;
//Update Moderation Flag
canvas.updateModerationFlag();
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendMessage" funcname="sendMessage">
<netparam name="vars"><method name="getValue">return canvas.objMessage;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("getValue : ",value); ]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendMessageAll" funcname="sendMessageAll">
<netparam name="vars"><method name="getValue">return canvas.objMessage;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("getValue : ",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendVarsToMessage" funcname="sendVarsToMessage">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("sendVarsToMessage : ",value);
if (value[0]=='audioActivity'){
//canvas.currentModApply
//if ($debug) Debug.write("audioActivity Client ",value[1],value[2]);
canvas._videocontainer.setSpeakingByPos(value[2],value[1]);
} else if (value[0]=='chat'){
// Not Used
//Debug.warn("Not Used");
canvas.addChatHistory(value);
} else if (value[0]=='activateWhiteboard'){
// Not Used
//Debug.warn("Not Used");
canvas._drawarea.parent.parent.parent.activateWhiteboard(value);
} else if (value[0]=='newWhiteboard'){
// Not Used
//Debug.warn("Not Used");
canvas._drawarea.parent.parent.parent.newWhiteboard(value);
} else if (value[0]=='removeWindow'){
// Not Used
//Debug.warn("Not Used");
canvas._drawarea.parent.parent.parent.removeWindow(value);
} else if(value[0]=='fileslist'){
canvas.currentImagesListdraw.parent.onvisible.sendEvent(true);
} else if(value[0]=='initBrowser'){
canvas.startBrowser(value);
} else if(value[0]=='newBrowserURL'){
canvas.startBrowser(value);
} else if(value[0]=='closeBrowserURL'){
canvas.closeBrowser(value);
} else if(value[0]=='clearOverallChatHistory'){
canvas._overallchatcontent.clear();
} ]]>
</handler>
</netRemoteCallHib>
<netRemoteCallHib name="sendVarsModeratorGeneral" funcname="sendVarsModeratorGeneral">
<netparam name="vars"><method name="getValue">return canvas.VarsModeratorGeneral;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("sendVarsModeratorGeneral : ",value); ]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendChatMessageWithClient"
funcname="chatservice.sendMessageWithClient" remotecontext="$once{ canvas.thishib }">
<attribute name="messageObj" value="null" />
<netparam><method name="getValue">return parent.messageObj;</method></netparam> <method name="sendMessage" args="messageObject">
this.messageObj = messageObject;
this.doCall();
</method>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("chatservice.sendMessageWithClient getValue : ",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendMessageWithClient" funcname="sendMessageWithClient"
remotecontext="$once{ canvas.thishib }" > <attribute name="messageObj" value="null" />
<method name="sendMessage" args="typeName,messageObject">
this.messageObj = new Object();
this.messageObj[0] = typeName;
this.messageObj[1] = messageObject;
this.doCall();
</method> <method name="sendAdvMessage" args="typeName,messageObject,tStamp">
this.messageObj = new Object();
this.messageObj[0] = typeName;
this.messageObj[1] = messageObject;
this.messageObj[2] = tStamp;
this.doCall();
</method> <netparam name="vars"><method name="getValue">return parent.messageObj;</method></netparam>
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("sendMessageWithClient : ",value);
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendVarsToMessageWithClient" funcname="sendVarsToMessageWithClient"
remotecontext="$once{ canvas.thishib }" >
<netparam name="vars"><method name="getValue">return parent.parent.applymessage;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendVarsToMessageWithClient : ",value,value.message,value.message[0]);
if (value[0]=='kick' || value.message[0]=='kick'){
//canvas.currentModApply
if ($debug) Debug.write("!!!!!! THIS USER GOING TO BE KICKED");
parent.showKickMessage = true;
parent.disconnect();
canvas.sendViaLocalConnection(canvas.vid_lc_name, "immediateExitRoom", [true,null]);
} else if (value.message[0]=='copiedText'){
//canvas.currentModApply if ($debug) Debug.info("copiedText :: ",value.message[1]);
//System.setClipboard(value.message[1]);
//lz.Browser.setClipboard(value.message[1]);
//LzBrowserKernel.setClipboard (value.message[1]); //import flash.System;
//flash.System.setClipboard(value.message[1]); new lz.copiedTextPopup(canvas,{
error:value.message[1]
}); } else if (value.message[0]=='applyforMod'){
//canvas.currentModApply
if (canvas.streamid!=value.client.streamid) {
new lz.responseForModeration(canvas.main_content._content.inner,{
userobject:value.client,
clientId:value.client.streamid
});
}
} else if (value.message[0]=='applyModAnswer'){
canvas.currentModApply.setUserAnswer(value);
} else if (value.message[0]=='privatechat'){
if ($debug) Debug.write("privatechat",value.message,value.client);
canvas._currentChatPanel.privatechat(value.message,value.client);
} else if (value.message[0]=='chat'){
if (canvas._chatcontent) canvas._chatcontent.addChatHistory(value.message,value.client);
} else if (value.message[0]=='avsettings'){
canvas._videocontainer.setAVSettingsToClient(value.client);
} else if (value.message[0]=='whiteboard'){
//if (value.message[1]=='wmlloadcomplete'){
// canvas._drawarea.sendCompleteWmlLoadedRClient(value.client);
//} else if (value.message[1]=='wmlsynccomplete'){
// canvas._drawarea.sendCompleteWmlSync(value.client);
//} else if (value.message[1]=='imageloadcomplete'){
canvas._drawarea.sendCompleteImageLoadedRClient(value.client);
} else if (value.message[1]=='imagesynccomplete'){
canvas._drawarea.sendCompleteImageSync(value.client);
} else if (value.message[1]=='imageloaderror'){
canvas._drawarea.sendCompleteImageLoadedRClient(value.client);
} else if (value.message[1]=='imageloadtimeout'){
canvas._drawarea.sendCompleteImageLoadedRClient(value.client);
} else if (value.message[1]=='swfloadcomplete'){
canvas._drawarea.sendCompleteSWFLoadedRClient(value.client);
} else if (value.message[1]=='swfsynccomplete'){
canvas._drawarea.sendCompleteSWFSync(value.client);
} else if (value.message[1]=='swfloaderror'){
canvas._drawarea.sendCompleteSWFLoadedRClient(value.client);
} else if (value.message[1]=='swfloadtimeout'){
canvas._drawarea.sendCompleteSWFLoadedRClient(value.client);
} else if (value.message[1]=='inituser'){ //this message is deprecated and can be removed!
//swagner 12.06.2008
//canvas._drawarea.sendCompleteImageSync(value.client);
if ($debug) Debug.write("inituser loadwmlObjectToStage: ",value.message[2]);
if (!canvas.ismoderator) canvas._drawarea.loadwmlObjectToStage(value.message[2],"","","",true,true);
} else if (value.message[1]=='initgetVars'){
//canvas._drawarea.sendCompleteImageSync(value.client);
//Debug.write("initgetVars sendVarsToMessageWithClient: ",value.message[2]);
canvas._drawarea.sendWatchObject(value.message[1],value.message[2],false);
} else if (value.message[1]=='syncinitLoader'){
//canvas._drawarea.sendCompleteImageSync(value.client);
//Debug.write("syncinitLoader sendVarsToMessageWithClient: ",value.message[2]);
if (value.client.streamid!=canvas.streamid) canvas._drawarea.remoteSyncLoader();
} else if (value.message[1][0]=='isSnapToGrid'){
canvas._drawarea.setAttribute('isSnapToGrid', value.message[1][1]);
//Debug.write("syncinitLoader sendVarsToMessageWithClient: ",value.message[2]);
//if (value.client.streamid!=canvas.streamid) canvas._drawarea.remoteSyncLoader();
}
} else if (value.message[0]=='updateMuteStatus'){
canvas.setMuteStatus(value.message[1]);
} else if (value.message[0]=='updateDrawStatus'){
canvas.setDrawAllowStatus(value.message[1]);
//Notify all Listeners for change of the item
canvas.setAttribute("drawAllowStatus",value.message[1]);
} else if (value.message[0]=='updateGiveAudioStatus') {
canvas.setExclusiveAudioAllowStatus(value.message[1]);
canvas.setAttribute("exclusiveAudioAllowStatus",value.message[1]);
} else if (value.message[0]=='applyForModeration'){
if ($debug) Debug.write("Somebody wants the Moderation ",value.client);
canvas.currentActivityList.addModerationRequest(value.client,value.message[1]);
} else if (value.message[0]=='applyForScreen'){
if ($debug) Debug.write("Somebody wants to share/record Screen ",value.client);
canvas.currentActivityList.addScreenRequest(value.client,value.message[1]);
} else if (value.message[0]=='applyForRemote'){
if ($debug) Debug.write("Somebody wants to remote control screen ",value.client);
canvas.currentActivityList.addRemoteRequest(value.client,value.message[1]);
} else if (value.message[0]=='applyForWhiteboard'){
if ($debug) Debug.write("Somebody wants to draw on Whiteboard ",value.client);
canvas.currentActivityList.addWhiteboardRequest(value.client,value.message[1]);
} else if (value.message[0]=='applyForA'){
if ($debug) Debug.write("Somebody wants to share A ",value.client);
canvas.currentActivityList.addAudioRequest(value.client,value.message[1]);
} else if (value.message[0]=='applyForAV'){
if ($debug) Debug.write("Somebody wants to share AV ",value.client);
canvas.currentActivityList.addAudioAndVideoRequest(value.client,value.message[1]);
} else if (value.message[0]=='hideActivityObj'){
if ($debug) Debug.write("Somebody wants to hideActivityObj ",value.client);
canvas.currentActivityList.hideActivityObj(value);
} else if (value.message[0]=='applyForMuteOn'){
canvas.currentActivityList.applyForMuteOn(value.client,value.message[1]);
} else if (value.message[0]=='applyForMuteOff'){
canvas.currentActivityList.applyForMuteOff(value.client,value.message[1]);
} else if (value.message[0]=='applyForGiveExclusiveAudioOn'){
canvas.currentActivityList.applyForGiveExclusiveAudioOn(value.client,value.message[1]);
} else if (value.message[0] == 'personal') {
var pSID = value.client.publicSID;
var vo = canvas._videocontainer._participants.getUserListItemByPublicSID(pSID);
if (vo != null) {
vo.setAttribute('lastname', value.message[2]);
vo.refObj.lastname = value.message[2];
}
canvas.sendViaLocalConnection(canvas.vid_lc_name, "updateFirstLastName", [pSID, value.message[1], value.message[2]]);
} else {
if ($debug) Debug.warn("sendVarsToMessageWithClient unkown message ",value);
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="newMessageByRoomAndDomain" funcname="newMessageByRoomAndDomain">
<handler name="ondata" args="value">
//The onResult-Handler will be called be the rtmpconnection
//if ($debug) Debug.write("newMessageByRoomAndDomain: ",value);
<![CDATA[
if (value[0]=='closeprivatechat'){
if ($debug) Debug.write("closeprivatechat",value);
canvas._currentChatPanel.closeprivatechat(value);
} else if (value[0]=='newprivatechat'){
if ($debug) Debug.write("newprivatechat",value);
canvas._currentChatPanel.newprivatechat(value);
} else if (value.message=='desktop'){
canvas._drawarea.incomingScreenSharing(value);
} else if (value.message=='library'){ if (value.action == 'import') {
canvas.currentUploadWindow.myFileUpload.onCompleteByRemote(value);
return;
} var error = false;
for (var eg in value.error){
if (value.error[eg].exitValue!=0){
if ($debug) Debug.write("eg ",eg," value ",value.error[eg]);
if ($debug) Debug.write("eg ",eg," value ",value.error[eg].exitValue);
error = true;
}
}
canvas.currentUploadWindow.myFileUpload.onCompleteByRemote(value);
if (value.hasError) {
new lz.converterPopup(canvas.main_content._content.inner,{error:value.error});
}
} else if (value.message=='startStreaming'){
canvas._drawarea.startStreaming(value);
} else if (value.message=='stopStreaming'){
canvas._drawarea.stopStreaming(value);
} else if (value.message=='roomClosed'){
canvas.roomClosed();
} else if (value.message=='inviteToRoom'){
if ($debug) Debug.write("Incoming Room Invitation ",value);
new lz.chatParticipantsInviteNotification(canvas,{
publicSID:value.publicSID,
usermessage:value.usermessage,
roomId:value.roomId
});
} else if (value.message=='inviteToRoomAnswer'){
if ($debug) Debug.write("Incoming Room inviteToRoomAnswer ",value);
new lz.errorPopup(canvas,{
error:value.usermessage
});
} else {
if ($debug) Debug.warn("Unknown Event -newMessageByRoomAndDomain- ",value);
} ]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="newPoll" funcname="newPoll">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called by the rtmpconnection
//Debug.write("newPoll : ",value);
if(canvas.user_id!=value.createdBy.user_id)
new lz.answerPoll(
canvas.main_content._content.inner
, {
createdBy: value.createdBy.login
, pollDate: value.created
, pollQuestion: value.pollQuestion
, pollTypeId: value.pollType.pollTypesId
, roomPollAnswerList: value.roomPollAnswerList
, roomPollId: value.roomPollId
, roomScopeName: value.roomScopeName
}
);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendVarsToModeratorGeneral" funcname="sendVarsToModeratorGeneral">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
//Debug.write("sendVarsToWhiteboard : ",value);
if (value[0]=='sharewhiteinit'){
if (!canvas.htmlframeisloaded){
canvas.ifrm.createIFrame();
canvas.setAttribute('htmlframeisloaded',true);
}
} else if (value[0]=='sharewhiteside'){
if (canvas.htmlframeisloaded){
_htmlside.setAttribute('text',value[2]);
canvas.ifrm.setAttribute('isrc','http://'+value[2]);
}
}
]]>
</handler>
</netRemoteCallHib> <!-- recordContentings Notifications -->
<netRemoteCallHib name="stopedRecording" funcname="stopedRecording" >
<handler name="ondata" args="value">
if ($debug) Debug.write("stopedRecording: ",value);
canvas._mymod.recordingUser = null;
canvas._mymod.setMessage();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="startedRecording" funcname="startedRecording" >
<handler name="ondata" args="value">
if ($debug) Debug.write("startedRecording: ",value);
canvas._mymod.recordingUser = value;
canvas._mymod.setMessage();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="checkLzRecording" funcname="flvrecorderservice.checkLzRecording" >
<handler name="ondata" args="value">
if ($debug) Debug.write("checkLzRecording: ",value);
if (value != null) {
canvas._mymod.recordingUser = value;
canvas._mymod.setMessage();
}
parent.checkScreenSharing.doCall();
</handler>
</netRemoteCallHib> <netRemoteCallHib name="startedPublishing" funcname="startedPublishing" >
<handler name="ondata" args="value">
if ($debug) Debug.write("startedPublishing: ", value);
canvas._mymod.publishingObj = {user: value[0], url: value[1]};
canvas._mymod.setMessage();
</handler>
</netRemoteCallHib> <!-- notifications for Overall-Chat -->
<netRemoteCallHib name="sendVarsToOverallChat" funcname="sendVarsToOverallChat" >
<handler name="ondata" args="value">
if ($debug) Debug.write("sendVarsToOverallChat: ",value);
if (canvas._overallchatcontent!=null){
canvas._overallchatcontent.addChatHistory(value.message,value.client);
}
</handler>
</netRemoteCallHib> <netRemoteCallHib name="roomConnect" funcname="roomConnect" >
<handler name="ondata" args="value">
if ($debug) Debug.write("roomConnect: ",value);
if (canvas._overallchatcontent != null){
canvas._overallchatcontent.parent.parent.parent._chatparticipants.addItem(value);
}
</handler>
</netRemoteCallHib> <!-- Whiteboard sync Events -->
<netRemoteCallHib name="sendSyncFlag" funcname="sendSyncFlag">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendSyncFlag: ",value);
if (canvas.syncWindow == null) {
canvas.syncWindow = new lz.syncWin(canvas.main_content._content.inner,{
labelid:558,labeliderror:559});
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendSyncCompleteFlag" funcname="sendSyncCompleteFlag">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendSyncCompleteFlag: ",value);
if (canvas.syncWindow != null) {
canvas.syncWindow.close();
canvas.syncWindow = null;
}
]]>
</handler>
</netRemoteCallHib> <!-- Whiteboard Object Sync Process -->
<netRemoteCallHib name="sendObjectSyncFlag" funcname="sendObjectSyncFlag">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendObjectSyncFlag: ",value);
if (canvas.syncImageWindow == null) {
canvas.syncImageWindow = new lz.syncWin(canvas.main_content._content.inner,{labeliderror:591});
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="sendObjectSyncCompleteFlag" funcname="sendObjectSyncCompleteFlag">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendObjectSyncCompleteFlag: ",value);
if (canvas.syncImageWindow != null) {
canvas.syncImageWindow.close();
canvas.syncImageWindow = null;
}
]]>
</handler>
</netRemoteCallHib> <!-- Recording of Meetings -->
<netRemoteCallHib name="checkForRecording" funcname="flvrecorderservice.checkForRecording">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("checkForRecording: ",value);
if (value == null) {
new lz.recordingStartWin(canvas.main_content._content.inner);
} else {
new lz.errorPopupUserInfo(canvas,{error:canvas.getLabelName(418),user:value});
}
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="interviewStatus" funcname="interviewStatus">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("interviewStatus: ",value);
canvas._drawarea.reloadStatus();
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="closeRoom" funcname="xmlcrm.closeRoom">
<attribute name="room_id" value="0" type="number" />
<attribute name="isClosed" value="true" type="boolean" />
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return parent.room_id;</method></netparam>
<netparam><method name="getValue">return parent.isClosed;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("closeRoom: ",value);
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="clearChatContent" funcname="clearChatContent">
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
canvas._chatcontent.reload();
]]>
</handler>
</netRemoteCallHib> <netRemoteCallHib name="setCanGiveAudio" funcname="whiteboardservice.setCanGiveAudio"
remotecontext="$once{ canvas.thishib }">
<attribute name="publicSID" value="" type="string" />
<attribute name="canGiveAudio" value="true" type="boolean" />
<method name="sendValue" args="publicSID,giveAudio">
this.publicSID = publicSID;
this.canGiveAudio = giveAudio;
this.doCall();
</method>
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return parent.publicSID;</method></netparam>
<netparam><method name="getValue">return parent.canGiveAudio;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("setCanGiveAudio : ",value);
]]>
</handler>
</netRemoteCallHib> </class> <hibRtmpConnection name="thishib" id="hib" /> </library>

该代码较长,其中定义了很多方法,如onDisconnect(), reconnectComplete(), onError()等等,上段解析中mainMethods.lzx文件中myinit()里调用canvas.thishib.connect()后。将会触发onconnect 事件,onconnect将会调用getsessiondata,接下来调用方法层数比较多,追踪代码后,可以总结如下:

onconnect ----> getsessiondata ----> getPublicSID ----> getLanguages ----> getDefaultLanguage ----> getLanguageByIdAndMax ----> getStates

----> getTimeZones ----> getGeneralOptions ----> getUserSalutations ----> loginByRemember ----> checkLoginData 。这个流程是没有登录的情况下的执行顺序,调用getUserSalutations时,将会判断是否已经登录过了。如果已经登录过了,则执行以下流程:

getUserSalutations ----> markSessionAsLogedIn ----> getRoomById ----> setRoomValues ----> testSetup ----> getServerForSession ---> startConference

至此,登录完毕,开始会议了。

在checkLoginData中,输入用户名和密码点击登录按钮后,会调用getLanguageByIdAndMax,从而又回到了上面的流程。

												

OpenMeetings(3)----启动顺序解析的更多相关文章

  1. (转)Linux 系统服务的启动顺序解析 rc.*

    介绍系统按照不同级别启动时需要启动的服务. 进入目录:etc 执行命令:ls -l | grep "rc.*" | sort 结果如下图:   1 系统在启动时,通过inittab ...

  2. Openwrt笔记-IPv6与启动顺序

    之前使用了nat6方案和x3c8021x实现了校园网上网和IPv6连接:但实际使用时经常出现莫名奇妙的问题.IPv6状态要么是无法连接网络,要么是无法连接Internet:经过研究,发现大概是自启动项 ...

  3. linux下/etc/rc.d目录的介绍及redhat启动顺序

    init inittab rc0 rc1 rc2 rc3 rc5 rc6 rcS init.d init 系统启动超级进程 inittab 进程启动配置文件 rc0 - rc6 各启动级别的启动脚本 ...

  4. ES系列(一):编译准备与server启动过程解析

    ES作为强大的和流行的搜索引擎服务组件,为我们提供了方便的和高性能的搜索服务.在实际应用中也是用得比较爽,但如果能够更深入一点.虽然网上有许多的文章已经完整说明,ES是如何如何做到高性能,如何做到高可 ...

  5. linux init 启动顺序

    redhat init大致启动过程 第一个运行的程序是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作.比如在设定了运行等级 “:id:3:initdefa ...

  6. [CrunchBang]修改win+ubuntu 双 系统菜单的 启动顺序 引导

    说到启动就不得不说GRUB,Linux下大名鼎鼎的启动管理工具(曾经的LILO已经风光不再),当然现在已经是GRUB2了,GRUB2和GRUB最重要的区别就是,GRUB存放系统启动信息的文件为/boo ...

  7. linux服务开机启动顺序

    今天遇到了一个问题,我们写了一个服务脚本A,该服务需要优先于mysql启动.脚本是从其他地方拷来的模板,前面的默认配置没改,只是实现了自己的功能.写完,chkconfig A on,reboot,启动 ...

  8. 设置U盘为第一启动顺序

    本文转载:http://u.diannaodian.com/Article/1004.html 盘安装系统的首要步骤就是设置U盘为第一启动顺序.下面电脑店官网就来说说到底如何来设置U盘启动顺序吧.   ...

  9. LINUX启动顺序

    Linux 启动顺序: 1. BIOS自检 (服务器硬件启动的第一步,坑定的啦) 2. 运行系统内核并检测硬件(这个是看系统了,redhat等相关版本是通过/boot/vm进行启动 vmlinuz) ...

随机推荐

  1. VSCode

    下载: 打开终端控制器 wget http://download.microsoft.com/download/0/D/5/0D57186C-834B-463A-AECB-BC55A8E466AE/V ...

  2. PHP的错误处理方式

    错误类型 PHP 主要有两种错误:触发错误和异常.其中触发错误大概可以分为:编译错误.引擎错误和运行时错误,其中前两个是无法捕获的:异常都是可以捕获的,当没有尝试捕获时则会中断代码. 触发错误可以通过 ...

  3. Linux编程环境介绍(1) -- linux的历史

    1. linux是什么? "Hello everybody out there using minix——I'm doing a (free) operating system"  ...

  4. Traceroute程序

    Linux和Unix中为traceroute,Windows中对应的是Tracert.如:Tracert www.baidu.com   输出为路由信息. C:\Users\Administrator ...

  5. EF中的约定

    优先级:Fluent API >数据注释>约定 CodeFirst约定 主键约定 如果类的属性名为"ID"(不区分大小写)或类名的后面跟有"ID", ...

  6. MVC4过滤器(转)

    先来看看一个例子演示过滤器有什么用: public class AdminController : Controller { // ... instance variables and constru ...

  7. ORACLE SQL单行函数(二)【weber出品必属精品】

    11.dual:虚表,任何用户都可以使用,表结构如下: SQL> desc dual Name Null? Type -------------------------------------- ...

  8. asp.net 如何改变GridView搜索出来关键字的颜色?就像百度似的,我获得的是一个集合,改变集合中关键字的集合

    输入“产量”查询,将“产量”拆分,产.量 string strColNameCnDt = string.Empty;            for (int j = 0; j < dtTemp. ...

  9. [QT]QT概述

    QT概述 基于C++的GUI开发框架,跨平台.Qt 是一个用于桌面系统和嵌入式开发的跨平台应用程序框架. QT是挪威TROLLTECH公司开发的跨平台C++工具,在UNIX下非常出名:他的宗旨是“一次 ...

  10. <Win32_5>深入浅出Win32的计时器

    说起时间,对于我们搞IT的人来说,那是要多重要有多重要.我觉得有价值的时间是给有抱负和有才能的人准备的,因为他们会充分利用,不会让时间失望…… 呵呵,有点儿说远了,还是回归主题吧 Win32的计时器其 ...